关于 Serverless MCP Framework
Serverless MCP Framework 使用 AWS Serverless 服务部署和配置 MCP 服务,面向希望在 AWS 上构建可扩展 MCP 端点的开发者。它通过 SSM 参数和 Lambda 函数扩展工具、资源与提示词,并提供 EventBridge 与 Step Functions 相关资源。
主要功能
- 01通过 AWS SAM 构建和部署
- 02配置 MCP 服务端点与认证参数
- 03使用 SSM 参数声明工具、资源和提示词
- 04由 Lambda 函数执行工具
- 05包含 EventBridge 规则和 Step Functions 状态机
适用场景
- 01在 AWS 上部署带认证配置的 MCP 端点
- 02通过 SSM 参数添加 MCP 工具或资源
- 03为工具实现配置对应的 Lambda 函数
MCP 相关
该框架部署 MCP 服务端点,向 MCP 客户端提供配置的工具、资源和提示词。可使用 SSM 参数与 Lambda 函数扩展服务内容。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
无服务器 MCP 框架
使用 AWS 无服务器服务实现的 MCP 服务。
创建的资源
一组连接到 EventBridge 规则的 Lambda 函数,用于处理启动、停止和任务启动。创建 StepFunction 状态机,在指定日期前等待并发送事件。

安装
使用 SAM CLI:
sam build
sam deploy --guided
参数
部署此应用时需要设置以下参数:
-
EventBusName:要将集成连接到的事件总线名称
-
Project:项目标识符
-
Environment:环境标识符
-
ServerName:MCP 服务名称
-
ServerVersion:MCP 服务版本
-
Instructions:MCP 服务说明
-
DomainName:端点的域名
-
AcmCertificateArn:所提供域名的证书 ARN
-
AuthenticationType:MCP 服务的身份验证类型
-
AuthenticationToken:MCP 服务的身份验证令牌
-
OAuthIssuerUrl:OAuth 身份验证的颁发者 URL
-
OAuthAuthorizationUrl:OAuth 身份验证的授权 URL
-
OAuthTokenUrl:OAuth 身份验证的令牌 URL
-
OAuthRevocationUrl:OAuth 身份验证的撤销 URL
-
OAuthRedirectUris:OAuth 身份验证的重定向 URI
输出
- ServerEndpoint:MCP 服务端点
开发
要求:
- NodeJS >= 22.x
安装 NPM 模块
npm install
在 .env 文件中配置 MCP 服务规格:
SERVER_NAME=local
SERVER_VERSION=1.0.0
INSTRUCTIONS=""
在 .env 文件中配置 AWS 环境:
AWS_PROFILE=<your AWS profile>
AWS_REGION=<selected AWS region>
SSM_PREFIX=
TOOLS_SSM_PREFIX=
RESOURCES_SSM_PREFIX=
PROMPTS_SSM_PREFIX=
TOOL_LAMBDA_PREFIX=
运行本地 MCP 服务
npm run dev
MCP 服务运行于 http://localhost:3000/mcp。
工具检查器
npm run inspector
配置检查器:
- 传输类型:
Streamable HTTP - URL:
http://localhost:3000/mcp
点击“Connect”按钮连接到 MCP 服务。
Claude Desktop
使用 mcp-remote 将 HTTP 代理为 STDIO:
{
"mcpServers": {
"example": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://xxxxxxxxxx.execute-api.eu-west-1.amazonaws.com/dev/mcp",
"--transport",
"http-only"
]
}
}
}
部署
要求:
构建项目
sam build
部署堆栈
sam deploy --profile <your AWS profile> --guided
使用
安装解决方案后,你可以使用 SSM 参数和 Lambda 函数,为 MCP 服务扩展资源、提示词或工具。
SSM 参数必须以 /<project name>/<environment name>/ 为前缀,例如 /mcp/dev/tools/echo。
集成示例可以参考模板:template.integration.yaml。
资源
SSM 参数必须以 /<project name>/<environment name>/resources/ 为前缀,例如 /mcp/dev/resources/example。
内容必须采用有效的 JSON 格式,并包含以下属性:
- name:资源名称
- uri:资源 URI,例如 "config://example"
- content:资源文本内容
可以在 SAM 模板中这样声明:
ExampleResourceParameter:
Type: AWS::SSM::Parameter
Properties:
Name: !Sub "/${Project}/${Environment}/resources/example"
Type: String
Value: |
{
"name": "example",
"uri": "config://example",
"content": "Just an example resource"
}
提示词
SSM 参数必须以 /<project name>/<environment name>/prompts/ 为前缀,例如 /mcp/dev/prompts/echo。
内容必须采用有效的 JSON 格式,并包含以下属性:
- name:提示词名称
- description:提示词描述
- inputSchema.json:JSON schema
- content:提示词模板内容
内容模板将使用 ejs 进行处理,并插入输入数据。
可以在 SAM 模板中这样声明:
EchoPromptParameter:
Type: AWS::SSM::Parameter
Properties:
Name: !Sub "/${Project}/${Environment}/prompts/echo"
Type: String
Value: |
{
"name": "echo",
"description": "Execute the example tool",
"inputSchema": {
"json": {
"type": "object",
"properties": {
"message": {
"type": "string"
}
},
"required": ["message"]
}
},
"content": "Execute the tool 'echo' with the message '<%= message %>'"
}
工具
SSM 参数必须以 /<project name>/<environment name>/tools/ 为前缀,例如 /mcp/dev/tools/echo。
内容必须为有效的 JSON 格式,并包含以下属性:
- name:提示词名称
- description:提示词描述
- inputSchema.json:JSON Schema
将执行的相关 Lambda 函数必须命名为 <project name>-<environment name>-tools-<tool name>,例如 mcp-dev-tools-echo。
函数的输入和输出必须遵循 Converse API 模式。
可在 SAM 模板中声明该参数:
EchoToolParameter:
Type: AWS::SSM::Parameter
Properties:
Name: !Sub "/${Project}/${Environment}/tools/echo"
Type: String
Value: |
{
"name": "echo",
"description": "Print the message provided in input",
"inputSchema": {
"json": {
"type": "object",
"properties": {
"message": {
"type": "string"
}
},
"required": ["message"]
}
}
}
Lambda 函数实现可以是:
exports.handler = async ({ toolUseId, name, input }, context) => {
return {
name,
toolUseId,
status: 'success',
content: [{
text: input.message
}]
}
}
也可以在 SAM 模板中内联声明:
EchoToolFunction:
Type: AWS::Serverless::Function
Properties:
FunctionName: !Sub "${Project}-${Environment}-tools-echo"
Handler: index.handler
InlineCode: |
exports.handler = async ({ toolUseId, name, input }, context) => {
return {
name,
toolUseId,
status: 'success',
content: [{
text: input.message
}]
}
}
致谢
- 仓库徽章由 Shields.io 提供
- 基础设施架构图由 Cloudcraft 提供
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。