项目简介

这是一个使用 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 进行请求认证的能力(默认关闭)。

安装步骤

  1. 确保您已安装并配置好 AWS CLI。
  2. 确保您已安装 Node.js (推荐 20 或 22 版本) 和 npm。
  3. 确保您已安装 AWS CDK CLI ('npm install -g aws-cdk').
  4. 克隆此 GitHub 仓库到您的本地机器。
  5. 进入项目根目录。
  6. 安装项目主依赖:
    npm install
  7. 安装 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 代码

服务器配置 (供 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。

基本使用方法

  1. 部署到 AWS: 在项目根目录执行以下命令进行部署:
    npm run deploy
    或者直接使用 CDK 命令(确保在 'bin/serverless-mcp-servers-cdk.ts' 中指定了 'us-east-1' 或在命令行指定区域):
    npm run build # 确保 CDK 代码已编译 (如果修改过)
    cdk deploy --region us-east-1 # 指定部署区域
    CDK 会自动在您的 AWS 账户中创建 Lambda 函数、API Gateway 等资源。部署完成后,终端会输出 MCP 服务器的 API Gateway 端点 URL。
  2. 测试部署的服务器:
    • 您可以设置一个环境变量 'MCP_SERVER_ENDPOINT' 为上一步输出的端点 URL。
    • 然后运行项目自带的客户端测试脚本:
      node src/js/mcpclient/index.js
      此脚本会尝试连接服务器并调用 'ping' 工具,验证服务器是否正常工作。
    • 您也可以在支持 MCP 的 LLM 客户端 (如 Cursor 或 Claude) 中配置一个新的 MCP 服务器连接,使用部署输出的 API Gateway URL 作为服务器地址。
  3. 清理资源: 如果不再需要部署的资源,为避免产生额外费用,请运行:
    cdk destroy --region us-east-1

信息

分类

AI与计算