这是一个基于 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 定义基础设施即代码,简化了部署过程。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/aws-samples/generative-ai-cdk-constructs-samples.git
    cd generative-ai-cdk-constructs-samples/samples/mcp-stateless-ecs
  2. 安装依赖: 确保您已安装 Node.js 和 npm,然后安装项目依赖和 AWS CDK。
    npm install
    npm install -g aws-cdk
  3. 配置 AWS 凭证和区域: 根据您的环境配置 AWS CLI 或设置环境变量,确保 CDK 可以访问您的 AWS 账户并部署到指定区域 (例如 'us-east-1')。
  4. 部署 CDK 栈: 运行 CDK 命令部署基础设施和 MCP 服务器。
    cdk bootstrap aws://YOUR_ACCOUNT_ID/YOUR_REGION
    cdk deploy
    'cdk deploy' 命令会提示您确认 IAM 权限等更改,输入 'y' 并按回车继续。部署完成后,CloudFormation 输出中会包含 MCP 服务器的访问端点 URL。

服务器配置(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 客户端中:

  1. 安装 MCP 客户端 SDK: 'npm install @modelcontextprotocol/sdk'
  2. 使用部署输出的端点 URL 初始化 HTTP 传输客户端。
  3. 使用传输客户端连接到 MCP 服务器。
  4. 调用 MCP 方法,例如 'client.listTools()' 查看可用的工具,或 'client.callTool({ name: "ping" })' 调用 "ping" 工具。

客户端将通过 HTTP 向服务器发送 JSON-RPC 请求,并接收 JSON-RPC 响应,从而与服务器托管的工具进行交互。

信息

分类

AI与计算