用途:在 Netlify 上用单个 Netlify Function 构建自有的远程 MCP 服务器,把应用的工具与数据暴露给 AI 客户端(Claude Desktop、Claude Code、Cursor 等)调用。注意区分:Netlify 官方托管的 MCP 服务器用于让 AI 操作 Netlify 平台账号,并非本技能;本技能是自建服务器。
主要能力:使用官方 MCP SDK 与 Web 标准的 Streamable HTTP 传输,在 Function 内无状态运行(npm install @modelcontextprotocol/sdk zod)。服务器函数接收 Request 返回 Response,无需 Node 适配层。可定义工具(名称、描述、zod 输入 schema、处理器),支持 CORS 预检处理、Bearer 鉴权(单共享密钥或基于 Netlify Identity 的按用户 API Key)、平台声明式限流、通过预签名 URL + Netlify Blobs 的文件上传,以及接入客户端。
使用方式:将函数放在 netlify/functions/mcp.ts,配置 path: "/mcp";本地用 netlify dev 在 http://localhost:8888/mcp 运行,用 npx @modelcontextprotocol/inspector 或 claude mcp add --transport http 测试;部署用 netlify deploy --build --prod。密钥通过环境变量设置(如 netlify env:set MCP_BEARER_TOKEN <value> --secret)。客户端接入示例:claude mcp add --transport http my-mcp https://<site>.netlify.app/mcp --header "Authorization: Bearer <token>",旧客户端可用 npx mcp-remote。
限制与注意事项:每个请求构建全新 server 与 transport,模块级内存不跨实例、不耐冷启动,重放跟踪等状态须放 Netlify Blobs 或数据库;浏览器跨域调用需自行返回 CORS 头,非 POST 方法需处理,传输层对 Accept 头缺失会返回 406;Netlify Identity 在 netlify dev 下不可用,按用户密钥鉴权需在部署预览测试;密钥不得硬编码,须用 Netlify.env.get 读取;函数限流只能写在函数的 config 导出中,不能写在 netlify.toml。