这是一个基于 AWS ECS Fargate 的无状态 Model Context Protocol (MCP) 服务器示例实现。它展示了如何使用 AWS Cloud Development Kit (CDK) 部署一个符合 MCP 规范的后端服务,该服务可以通过 HTTP 协议与 LLM 客户端通信。
主要功能点
- MCP 协议实现: 使用 '@modelcontextprotocol/sdk' 库实现了 MCP 服务器协议,能够接收和处理符合 JSON-RPC 规范的请求。
- 工具托管: 注册并提供了一个名为 "ping" 的示例工具,LLM 客户端可以通过 MCP 调用此工具。
- 无状态设计: 示例服务器被设计为无状态,每次请求可能由不同的任务实例处理,适合通过负载均衡器暴露。
- 容器化部署: 服务器应用被打包成 Docker 容器,并使用 AWS CDK 部署到 Amazon ECS Fargate 上,提供了可扩展和高可用的运行环境。
- HTTP 传输: 支持通过 HTTP 协议进行 MCP 请求和响应通信。
- AWS CDK 部署: 使用 AWS CDK 定义基础设施即代码,简化了部署过程。
安装步骤
- 克隆仓库:
git clone https://github.com/aws-samples/generative-ai-cdk-constructs-samples.git cd generative-ai-cdk-constructs-samples/samples/mcp-stateless-ecs - 安装依赖: 确保您已安装 Node.js 和 npm,然后安装项目依赖和 AWS CDK。
npm install npm install -g aws-cdk - 配置 AWS 凭证和区域: 根据您的环境配置 AWS CLI 或设置环境变量,确保 CDK 可以访问您的 AWS 账户并部署到指定区域 (例如 'us-east-1')。
- 部署 CDK 栈: 运行 CDK 命令部署基础设施和 MCP 服务器。
'cdk deploy' 命令会提示您确认 IAM 权限等更改,输入 'y' 并按回车继续。部署完成后,CloudFormation 输出中会包含 MCP 服务器的访问端点 URL。cdk bootstrap aws://YOUR_ACCOUNT_ID/YOUR_REGION cdk deploy
服务器配置(MCP 客户端使用)
您的 MCP 客户端需要知道如何连接到这个部署好的 MCP 服务器。对于这个示例,服务器通过 HTTP 端点暴露。客户端需要配置服务器的名称和访问端点 URL。
- 服务器名称 (server_name): 这是服务器在 MCP 能力声明中标识自己的名称,此示例中是 '"demo-mcp-server"'。
- 传输类型 (transport.type): 指定客户端应使用的传输协议,对于此示例服务器,配置为 '"http"'。
- 端点 URL (transport.endpoint): 这是部署后分配给 Application Load Balancer 的 URL,您可以在 'cdk deploy' 的输出中找到,例如 'http://<your-alb-dns-name>/mcp'。客户端应将请求发送到此 URL。
基本使用方法
部署成功后,您可以编写一个 MCP 客户端应用程序,使用 '@modelcontextprotocol/sdk/client' 连接到服务器端点 URL。
例如,在 Node.js 客户端中:
- 安装 MCP 客户端 SDK: 'npm install @modelcontextprotocol/sdk'
- 使用部署输出的端点 URL 初始化 HTTP 传输客户端。
- 使用传输客户端连接到 MCP 服务器。
- 调用 MCP 方法,例如 'client.listTools()' 查看可用的工具,或 'client.callTool({ name: "ping" })' 调用 "ping" 工具。
客户端将通过 HTTP 向服务器发送 JSON-RPC 请求,并接收 JSON-RPC 响应,从而与服务器托管的工具进行交互。
信息
分类
AI与计算