🧠 cdk无服务器mcp服务器
超级简单的模型上下文协议(MCP)服务器部署在AWS Lambda上,并通过亚马逊API网关公开,与AWS CDK一起部署。
长话短说
🛠 特性
- 🪄 使用@modelcontextprotocol/sdk进行最低限度的MCP服务器设置
- 🚀 作为单个AWS Lambda函数部署
- 🌐 通过位于/mcp的API网关公开的HTTP POST端点
- 🔄 使用jest支持本地开发测试
- 🧪 包括一个具有JSON-RPC交互的简单示例工具(add)
📦 项目结构
cdk-serverless-mcp-server/
├── __tests__/ # Jest tests
├── bin/ # CDK entry point
├── cdk-serverless-mcp-server.ts # CDK app
├── lib/ # CDK stack
│ └── cdk-serverless-mcp-server-stack.ts # CDK stack
├── src/ # Source code
│ └── index.mjs # MCP server handler
├── .gitignore # Git ignore file
├── cdk.json # CDK Project config
├── package.json # Project dependencies
├── package-lock.json # Project lock file
├── README.md # This documentation file🛠 先决条件
- Node.js v22+
- AWS CDK v2+
🚀 入门指南
- 安装依赖项:
npm install- 全局安装AWS CDK(如果尚未安装):
npm install -g aws-cdk- 使用jest进行本地测试
npm run test🧬 代码分解
src/index.js
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 hosted MCP Server",
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());📡 部署到AWS
只需运行:
npm run layer-dependencies-install # install dependencies for the layer然后,部署堆栈:
cdk bootstrap
cdk deploy部署后,MCP服务器将在命令输出的URL上运行。
🧪 部署后,使用curl请求进行测试
列出工具
curl --location 'http://your-endpoint/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://your-endpoint/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
}
}
}'📘 许可证
麻省理工学院——请随意分叉、调整和部署您自己的版本!
