一个部署在AWS Lambda上的超级简单的模型上下文协议(MCP)服务器,并通过Amazon API Gateway公开。使用Serverless框架进行部署。 此骨架基于Frédéric Barthelet的出色工作:他在这个仓库中开发了一个中间件,用于将MCP服务器与AWS Lambda函数集成。
serverless-mcp-server/
├── src/ # 源代码
│ └── index.js # MCP服务器处理器
├── .gitignore # Git忽略文件
├── package.json # 项目依赖
├── package-lock.json # 项目锁定文件
├── README.md # 此文档文件
└── serverless.yml # Serverless框架配置
npm install
npm install -g osls
npm sls offline
本地端点将在以下位置可用:
POST http://localhost:3000/dev/mcp
请注意,默认情况下会添加/dev/阶段,这反映了API Gateway V1(REST API)的行为。
如果您想使用API Gateway V2,可以更改serverless.yml文件,在events部分使用httpApi而不是http。这将允许您使用HTTP API而不是REST API。
functions:
mcpServer:
handler: src/index.handler
events:
- httpApi:
path: mcp
method: post
本地端点将在以下位置可用:
POST http://localhost:3000/mcp
请注意,当使用API Gateway V2时不需要/dev/阶段。
请注意您应该相应地更改测试curl和postman请求。
curl --location 'http://localhost:3000/dev/mcp' \
--header 'content-type: application/json' \
--header 'accept: application/json' \
--header 'jsonrpc: 2.0' \
--data '{
"jsonrpc": "2.0",
"method": "tools/list",
"id": 1
}'
curl --location 'http://localhost:3000/dev/mcp' \
--header 'content-type: application/json' \
--header 'accept: application/json' \
--header 'jsonrpc: 2.0' \
--data '{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "add",
"arguments": {
"a": 5,
"b": 3
}
}
}'
__tests__文件夹中包含了一些基本测试。您可以使用以下命令运行它们:
npm run test
此代码基于Frédéric Barthelet的出色工作:他在这个仓库中开发了一个中间件,用于将MCP服务器与AWS Lambda函数集成。
import middy from "@middy/core";
import httpErrorHandler from "@middy/http-error-handler";
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { z } from "zod";
import mcpMiddleware from "middy-mcp";
const server = new McpServer({
name: "Lambda托管的MCP服务器",
version: "1.0.0",
});
server.tool("add", { a: z.number(), b: z.number() }, async ({ a, b }) => ({
content: [{ type: "text", text: String(a + b) }],
}));
export const handler = middy()
.use(mcpMiddleware({ server }))
.use(httpErrorHandler());
只需运行:
sls deploy
部署后,MCP服务器将在命令输出的URL上运行。
此存储库已在以下通讯中引用:
MIT — 欢迎分叉、调整并部署您自己的版本!