项目简介
这是一个使用 AWS Cloud Development Kit (CDK) 在 AWS Lambda 和 API Gateway 上部署无状态 Model Context Protocol (MCP) 服务器的示例项目。它基于 AWS 官方的 'sample-serverless-mcp-servers' 项目,并提供了自动化的云资源部署能力。该服务器设计为无状态,非常适合在按需付费的 Serverless 环境中运行。
主要功能点
- 资源托管与访问: 能够根据客户端请求提供预定义的资源内容(例如文本)。
- 工具注册与执行: 注册并运行可供 LLM 调用的外部工具/函数,例如模拟 'ping' 命令或启动通知流。
- Prompt 模板定义与渲染: 存储和处理 Prompt 模板,根据客户端提供的参数生成用于 LLM 交互的完整 Prompt。
- MCP JSON-RPC 支持: 通过 HTTP 协议接收并处理遵循 MCP 标准的 JSON-RPC 请求。
- 无状态架构: 每个请求都在独立的 Lambda 实例中处理,便于扩展和降低成本。
- 自动化云部署: 使用 AWS CDK 脚本一键将 MCP 服务器及其所需的 AWS 基础设施部署到云端。
- 可选认证支持: 内置了通过 API Gateway 自定义 Authorizer 进行请求认证的能力(默认关闭)。
安装步骤
- 确保您已安装并配置好 AWS CLI。
- 确保您已安装 Node.js (推荐 20 或 22 版本) 和 npm。
- 确保您已安装 AWS CDK CLI ('npm install -g aws-cdk').
- 克隆此 GitHub 仓库到您的本地机器。
- 进入项目根目录。
- 安装项目主依赖:
npm install - 安装 MCP 服务器和客户端代码的依赖:
- 对于 Node.js/Express 版本 (src/js/mcpserver):
(cd src/js/mcpclient && npm install) (cd src/js/mcpserver && npm install) - 对于 TypeScript/Hono 版本 (src/ts/mcpserver):
(cd src/js/mcpclient && npm install) (cd src/ts/mcpserver && npm install) (cd src/ts/mcpserver && npm run build) # 编译 TypeScript 代码
- 对于 Node.js/Express 版本 (src/js/mcpserver):
服务器配置 (供 MCP 客户端使用)
MCP 客户端需要知道如何连接到此服务器。常用的 MCP 客户端(如 'mcp-remote' 工具)通过配置 JSON 文件来指定服务器信息。对于此项目,您可以配置两种连接方式:
- 连接到本地运行的服务器: 客户端需要配置一个命令 (command) 来启动 'mcp-remote' 工具,并提供一个参数 (args),该参数是本地服务器监听的 HTTP 地址。根据 README,本地服务器通常运行在 'http://localhost:3000/mcp'。
- 连接到 AWS 部署的服务器: 客户端也需要配置一个命令 (command) 来启动 'mcp-remote' 工具,并提供一个参数 (args),该参数是部署到 AWS API Gateway 后获取的公共 HTTP 地址。这个地址会在您完成 CDK 部署后由命令输出。地址格式通常类似 'https://<api_id>.execute-api.us-east-1.amazonaws.com/dev/mcp',其中 '<api_id>' 是 AWS 自动生成的 ID。
基本使用方法
- 部署到 AWS: 在项目根目录执行以下命令进行部署:
或者直接使用 CDK 命令(确保在 'bin/serverless-mcp-servers-cdk.ts' 中指定了 'us-east-1' 或在命令行指定区域):npm run deploy
CDK 会自动在您的 AWS 账户中创建 Lambda 函数、API Gateway 等资源。部署完成后,终端会输出 MCP 服务器的 API Gateway 端点 URL。npm run build # 确保 CDK 代码已编译 (如果修改过) cdk deploy --region us-east-1 # 指定部署区域 - 测试部署的服务器:
- 您可以设置一个环境变量 'MCP_SERVER_ENDPOINT' 为上一步输出的端点 URL。
- 然后运行项目自带的客户端测试脚本:
此脚本会尝试连接服务器并调用 'ping' 工具,验证服务器是否正常工作。node src/js/mcpclient/index.js - 您也可以在支持 MCP 的 LLM 客户端 (如 Cursor 或 Claude) 中配置一个新的 MCP 服务器连接,使用部署输出的 API Gateway URL 作为服务器地址。
- 清理资源: 如果不再需要部署的资源,为避免产生额外费用,请运行:
cdk destroy --region us-east-1
信息
分类
AI与计算