> ## Documentation Index
> Fetch the complete documentation index at: https://redop.useagents.site/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Deploy to Vercel

> Deploy a Redop MCP server on Vercel with the portable fetch adapter and waitUntil.

Vercel is supported through `@redopjs/redop/vercel` (`vercel` / `vercelEdge`).

## Fit today

| Item                                     | Value                                     |
| ---------------------------------------- | ----------------------------------------- |
| Recommended for built-in Bun `.listen()` | no — use the adapter                      |
| Recommended protocol                     | MCP `2026-07-28` (stateless)              |
| `create-redop-app` preset                | `--deploy vercel`                         |
| Generated files                          | `vercel.json`, `api/index.ts`             |
| `afterResponse`                          | pass `waitUntil` from `@vercel/functions` |

## Minimal function

```ts theme={null}
import { Redop, vercel } from "@redopjs/redop/vercel";
import { waitUntil } from "@vercel/functions";

const app = new Redop({
  serverInfo: { name: "vercel-mcp", version: "0.1.0" },
}).tool("ping", {
  handler: async () => ({ ok: true }),
});

export default vercel(app, {
  health: true,
  waitUntil,
});
```

## Scaffold

```sh theme={null}
bunx create-redop-app my-vercel-mcp --transport http --deploy vercel
```

## Generated `vercel.json`

```json theme={null}
{
  "$schema": "https://openapi.vercel.sh/vercel.json",
  "bunVersion": "1.x"
}
```

## Capability notes

* Prefer stateless MCP (`2026-07-28`).
* Without `waitUntil`, deferred `afterResponse` work may be dropped on short-lived serverless isolates.
* For always-on sessioned MCP + SSE, prefer Railway, Fly.io, Docker, or Node.

## Validate

```sh theme={null}
curl -X POST https://your-app.vercel.app/mcp \
  -H 'Content-Type: application/json' \
  -H 'MCP-Protocol-Version: 2026-07-28' \
  -H 'Mcp-Method: server/discover' \
  --data '{"jsonrpc":"2.0","id":0,"method":"server/discover","params":{}}'
```

## Next

* [Deploy to Production overview](/docs/guides/deploy/index)
* [Runtime adapters reference](/docs/reference/runtime-adapters)
* [Deploy to Cloudflare Workers](/docs/guides/deploy/cloudflare)
