用途:在 Vercel 上创建生产可用的远程 MCP 服务器,基于 Next.js 与 mcp-handler,通过 Streamable HTTP 传输,适配 Claude Desktop、claude.ai、Smithery 及任意 MCP 客户端。选择该方案是因为 MCP 的 Streamable HTTP 是无状态的,每个请求独立,正好契合 Vercel 无服务器函数。
主要能力:用 createMcpHandler 注册工具(server.tool),支持注册提示模板(server.prompt);每个工具需带安全注解(readOnlyHint、destructiveHint、title),每个参数需用 .describe() 说明;可通过 streamableHttpEndpoint 配置端点,并设置 serverInfo 与 maxDuration。
使用方式:安装依赖 npm install mcp-handler @modelcontextprotocol/sdk zod;创建 app/api/mcp/route.ts 并导出 handler 的 GET、POST、DELETE;部署运行 vercel deploy --prod,再用 curl 向 /api/mcp 发送 initialize 请求验证 serverInfo。路由须用 streamableHttpEndpoint 而非 basePath,否则路径会变成 /api/mcp/mcp。
适用场景与限制:适合需要无状态远程 MCP 服务的场景。注意 Vercel Root Directory 隔离导致函数无法访问目录外文件,需用 prebuild 脚本把依赖拷入站点目录;函数文件系统只读,写文件需 try/catch;Turbopack 导入 CommonJS 文件可能报 CJS/ESM 不匹配。OAuth 认证与 Smithery 发布分别参见 mcp-oauth 技能及 https://smithery.ai/new。