Serverless Framework 如何在 AWS Lambda 上部署 MCP Server 并获取 Streamable HTTP 端点?

发布时间:2026/11/6 20:55:08

Serverless Framework 如何在 AWS Lambda 上部署 MCP Server 并获取 Streamable HTTP 端点? Serverless Framework 如何在 AWS Lambda 上部署 MCP Server 并获取 Streamable HTTP 端点【免费下载链接】serverless⚡ Serverless Framework – Effortlessly build apps that auto-scale, incur zero costs when idle, and require minimal maintenance using AWS Lambda and other managed cloud services.项目地址: https://gitcode.com/GitHub_Trending/se/serverless你有一个用 官方 MCP TypeScript SDK 编写的 Model Context ProtocolMCPServer希望把它跑在 AWS Lambda 上得到一个可直接被 Claude、IDE 助手等 AI 客户端调用的 Streamable HTTP 端点。Serverless Framework 的mcp配置块可以完成这件事你只需写一个标准 SDK 模块Framework 负责 HTTPS 路由、响应流式传输、授权接入、打包以及把 Lambda 流式运行时桥接到 SDK 的 web 标准fetch处理器。部署完成后每个 server 都会成为服务里的一个普通函数serverless logs -f name、serverless invoke -f name、版本和回滚都照常可用。本文的主路径来自 MCP Servers 指南从安装 SDK、写模块、声明配置到部署并验证端点。准备条件在开始之前确认以下前置条件均出自项目文档已安装 Node.js 运行时并通过 NPM 全局安装了 Serverless Framework见安装文档npm i serverless -g已配置可用的 AWS 凭证。文档推荐浏览器方式serverless login aws基于 AWS 控制台登录生成短期凭证或使用aws configure sso配置 SSO 后运行serverless login aws sso。MCP Server 模块要求Node.js 20 或更新版本这是 SDK 自身的下限且zod 需要 4.2 或更新在 zod 3 上tools/list会返回 input schema 为空的工具客户端能看到工具却无法填写参数。运行时的确定规则provider.runtime未设置或设为非 Node 运行时例如 Python 服务时server 运行在nodejs24.x设为 Node.js 20 的运行时则原样使用设为低于 20 的 Node 运行时会在校验阶段被MCP_UNSUPPORTED_NODE_RUNTIME拒绝。安装 SDK 并编写 Server 模块在一个新目录中初始化包并安装 MCP SDK 与 zodnpm init -y npm install modelcontextprotocol/server zod然后编写 server 模块。它就是一个普通 SDK server不需要任何 Lambda 概念或 Serverless Framework API默认导出createMcpHandler()的返回值——一个暴露 web 标准fetch方法的对象。其他导出形式会在冷启动时报错错误信息会点名server:属性// src/server.mjs import { createMcpHandler, McpServer } from modelcontextprotocol/server import { z } from zod export default createMcpHandler(() { const server new McpServer({ name: crm, version: 1.0.0 }) server.registerTool( lookupCustomer, { description: Look up a customer by email, inputSchema: z.object({ email: z.string() }), }, async ({ email }) ({ content: [{ type: text, text: Customer record for ${email} }], }), ) return server })注意打包约束Classic zip 模式下打包会移除devDependencies因此modelcontextprotocol/server和zod必须放在dependencies中否则运行时会出现ERR_MODULE_NOT_FOUNDFramework 发现该组合时会给出警告也可以设置package.excludeDevDependencies: false。在 serverless.yml 中声明 MCP Server在serverless.yml的mcp.servers下声明 server键是 server 名server是模块路径相对serverless.ymlservice: crm-tools frameworkVersion: 4 provider: name: aws region: us-east-1 mcp: servers: crm: server: src/server.mjs每个 server 可用的可选项完整说明见配置参考属性默认值说明timeout60秒1–900同时设置函数超时和流式集成超时两者不会漂移memorySize1024MB128–10240未设置时回退到provider.memorySizeenvironment{}函数环境变量支持 CloudFormation 内建函数authorizer—在 API Gateway 层做访问控制Lambda authorizer、Cognito 用户池或aws_iam被拒绝的请求不会调用 server 函数oauthDiscovery—发布 RFC 9728 OAuth 受保护资源发现文档仅声明不做强制校验state—为 elicitation 往返提供签名密钥true表示由 stack 自动创建服务级的provider.architecture、provider.vpc、provider.layers同样适用于这些 server权限通过provider.iam调整。本版本不支持按 server 单独配置 URL 路径、域名、CORS、vpc、layers、role或provisionedConcurrency。部署服务在serverless.yml所在目录执行serverless deploy部署摘要会为每个 server 打印一行端点文档示例如下实际输出中的 API id 与区域以你的部署为准mcp: crm → https://abc123def.execute-api.us-east-1.amazonaws.com/dev/crm/mcp这个端点就是 Streamable HTTP 端点所有 MCP server 都挂在/name/mcp路径下即使服务里只有一个 server 也是如此将来新增第二个 server 时 URL 不会变动并且它们与你的http函数共享同一个AWS::ApiGateway::RestApi、同一个 stage 和同一个自定义域名。路由编译为单个ANY方法非 POST 动词由 SDK 按规范返回错误体。验证端点两条文档给出的验证路径1. 事后查询端点。serverless info会打印与部署摘要相同的端点行这是日后查找 URL 的方式serverless info2. 用 Streamable HTTP 客户端实际调用。任何 Streamable HTTP MCP 客户端都可以。文档以 MCP Inspector 的 CLI 模式为例配置文件选择 server并通过protocolEra显式选择当前协议修订版Inspector 默认是旧修订版// mcp.json { mcpServers: { crm: { type: streamable-http, url: https://abc123def.execute-api.us-east-1.amazonaws.com/dev/crm/mcp, protocolEra: modern } } }npx modelcontextprotocol/inspector --cli \ --config mcp.json --server crm --method tools/list其中url需要替换为你自己部署摘要中打印的端点。不加--cli运行时 Inspector 会打开浏览器 UI同样的协议版本选择对应连接设置里的Protocol Era选项。tools/list能正确返回你在模块中注册的工具如lookupCustomer即说明端点工作正常。日志和直接调用也走普通函数的方式serverless logs -f crm查看该 server 自己的 CloudWatch 日志serverless invoke -f crm直接触达函数。端点 URL 的三种形态端点形态由域名配置决定自定义域名来自provider.domain本版本没有按 server 配置的domain键因为域名属于共享 API 而不是某个 server配置URL默认端点https://api-id.execute-api.region.amazonaws.com/stage/name/mcp设置provider.domain: mcp.example.comhttps://mcp.example.com/name/mcp该域名上带basePath: v1映射https://mcp.example.com/v1/name/mcp两个与 URL 相关的校验约束值得注意server 名用作函数键、Lambda 名后缀service-stage-name和 URL 路径段字符集为^[a-zA-Z0-9-_]$well-known是保留名若你的http事件在 MCP 路由的同一 API Gateway 资源上声明了同路径的具体方法会因分流 JSON-RPC 流量风险被API_GATEWAY_EXTERNAL_EVENT_ROUTE_COLLISION拒绝子路径如/crm/mcp/extra不受影响。这些配置错误运行时不支持、命名冲突等在配置解析阶段就会抛出因此serverless print和serverless package也能提前发现而不只是deploy。限制与注意事项以下边界来自Limitations in this release 章节直接决定部署方式的选择Dev Mode 不服务 MCP server。在serverless dev下打包集成会退出并给出警告必须用serverless deploy部署后测试。静默的长工具需要 regional 端点。provider.endpointType默认EDGEEdge 优化端点会在响应流静默约 30 秒后结束计算的是两次写入之间的间隔而非总时长客户端会看到504设置provider.endpointType: REGIONAL可把该界限提高到约 5 分钟。任何运行超过约 300 秒的工具都必须通过 SDK 的 progress 通知持续写流来重置静默计时timeout不会改变这个界限。package.artifact预构建产物不被支持会报MCP_PREBUILT_ARTIFACT_UNSUPPORTED因为该产物会按原样上传Framework 的入口文件永远无法进入。serverless-mcp/目录被保留。打包阶段会把预构建入口暂存到服务目录下的serverless-mcp/运行结束时再删除你自己的服务如果已有该路径会报MCP_ENTRY_STAGING_PATH_TAKEN而不是被覆盖删除。deploy function的限制它可以更新 server 代码但如果 server 的environment中包含 CloudFormation 引用state传密钥的方式以及你自己的!Ref/!GetAtt值环境变量的更新会整体被跳过需要完整serverless deploy。授权由你负责。Framework 从不校验 token不设authorizer的端点就是公开的和没有 authorizer 的http事件一样文档建议只让匿名调用者能安全使用的工具保持这种状态。remove会删除一切包括自动创建的 state secret之后重新部署是安全的rollback正常回滚所有 MCP 资源都在 stack 内。继续深入授权与 OAuth 发现的完整做法Lambda authorizer、Cognito 用户池、aws_iam、模块内requireBearerAuth校验见 Authentication 与 OAuth discovery 章节。需要 elicitation工具中途向调用方要输入时设置state: true由 stack 自动创建签名密钥或指向你自己的 SSM/Secrets Manager ARN详见 Elicitation state 章节。打包策略Classic zip 与build.esbuild单文件 bundle 的取舍见 Packaging 章节。【免费下载链接】serverless⚡ Serverless Framework – Effortlessly build apps that auto-scale, incur zero costs when idle, and require minimal maintenance using AWS Lambda and other managed cloud services.项目地址: https://gitcode.com/GitHub_Trending/se/serverless创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/11/7 13:07:35

camofox-browser:用 Firefox 打造动态浏览器指纹伪装方案

不知道为什么,最近我脑子里总是冒出camofox-browser这个词。明明不是什么大厂产品,也不是媒体热炒的概念,但就是让我忍不住一遍遍去翻它的代码和配置。说到底,这名字起得太形象了:camouflage(伪装&#xff…

2026/11/6 4:14:02

Java逆向工程核心技术解析与应用实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/7 17:24:58

哈尔滨电工证考试报名通过率揭秘:别被中介坑了,这样报名最靠谱

哈尔滨电工证考试报名通过率揭秘:别被中介坑了,这样报名最靠谱 你是不是也像我一样,听说要考电工证,心里一万个问号?网上一搜【哈尔滨电工证考试报名】,全是五花八门的机构信息,有的说包过,有的说报名费便宜,还有的说不用考试,直接给你发证。…

2026/11/7 17:24:58

北仑考电工证电话怎么找?官方报名入口别走错!

北仑考电工证电话怎么找?官方报名入口别走错! 学历不高怕报不上名,你不是一个人。很多人觉得,学历低就考不了电工证,或者考了也用不上。其实, 北仑考电工证电话 并不难找,关键是你要知道从哪儿开始。今天就告诉你, 官方报名入口…

2026/11/7 17:24:58

电工证怕挂科?正规电工证有效期+考前押题全攻略来了

电工证怕挂科?正规电工证有效期+考前押题全攻略来了 实操考试心里没底怕挂科?很多电工新手第一次报考特种作业操作证,对流程、考试内容、证件有效期都一头雾水。尤其是像你这种在漯河中小施工企业打工的,可能连正规电工证有效期到底多长都搞不清楚。别急…

2026/11/7 17:24:58

中级电工证容易通过官方回应 外省证怎么转过来

中级电工证容易通过官方回应 外省证怎么转过来 之前考的证在外省能不能转过来?这是很多在外地打工的老电工最关心的问题,特别是像安阳劳务班组的负责人,手里带着一帮工人,经常在不同城市流动,证书怎么转、怎么用,成了刚需。 官方回应…

2026/11/7 14:54:47

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/7 14:50:12

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/7 0:03:08

郑州报考避坑指南:电工证和钳工证怎么选?实操考试心里没底怕挂科

郑州报考避坑指南:电工证和钳工证怎么选?实操考试心里没底怕挂科 实操考试心里没底怕挂科?你不是一个人。特别是在郑州这样的城市,很多施工企业负责人和一线作业人员在报考电工证和钳工证时都面临着同样的困惑。到底该考哪个证?哪个更适合自己?哪个证书…

2026/11/7 0:03:08

广西电工证办理流程全解析:外省证怎么转?在哪考最靠谱?

广西电工证办理流程全解析:外省证怎么转?在哪考最靠谱? 之前考的证在外省能不能转过来?这个问题我遇到太多了,今天就拿广西电工证办理流程来具体说说,别再走弯路了。广西电工证的报考、复审、继续教育这些环节,如果你不了解,真的会吃大亏,尤其对于从…

2026/11/7 0:03:08

电气电工证都有哪些保姆级教程

电气电工证都有哪些保姆级教程 你是不是正愁不知道去哪报名,怕被中介坑?别急,这篇保姆级教程专为河南初次报考人员准备,帮你搞清楚 电气电工证都有哪些 ,以及如何避开那些坑。 电气电工证都有哪些?别被五花八门的证书搞懵了…

2026/11/7 14:54:47

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/7 14:50:12

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑