项目简介
该仓库包含了基于 Model Context Protocol (MCP) 构建的服务器端示例实现,专门针对在 Amazon Web Services (AWS) 环境中的部署。这些示例展示了如何在 AWS Lambda (无服务器计算) 和 Amazon ECS (弹性容器服务) 上构建和运行 MCP 服务器,并探讨了无状态和有状态 MCP 服务器的不同实现方式及其考量。
仓库包含以下四个主要示例:
- 'stateless-mcp-on-lambda':在 AWS Lambda 和 API Gateway 上运行的无状态 MCP 服务器示例。
- 'stateless-mcp-on-ecs':在 Amazon ECS 和 Application Load Balancer 上运行的无状态 MCP 服务器示例。
- 'stateful-mcp-on-ecs':在 Amazon ECS 和 Application Load Balancer 上运行的有状态 MCP 服务器示例。
- 'lambda-ops-mcp-server':一个本地 MCP 服务器示例,展示如何利用 MCP 工具发现和更新 Lambda 函数的运行时。
主要功能点
- AWS 部署模式示范:提供了在 AWS Lambda 和 ECS 上部署 MCP 服务器的具体代码示例和架构指导。
- 无状态与有状态 MCP:通过实际示例展示了 Streamable HTTP 传输协议下的无状态和有状态服务器实现,并讨论了它们在会话管理、可扩展性等方面的差异和权衡。
- MCP 工具实现:'lambda-ops-mcp-server' 示例具体展示了如何实现 MCP 工具,通过 MCP 协议调用外部服务(如 AWS Lambda API),实现列出函数、获取函数信息、调用函数、更新函数运行时等功能。
- 使用 MCP SDK:所有示例都基于官方的 MCP SDK 构建,演示了如何初始化 MCP 服务器、注册工具、声明能力等。
安装步骤
这些示例旨在部署到 AWS 环境中。你需要一个 AWS 账户,并已配置好 AWS 命令行工具(CLI)以及可能需要的部署工具,如 AWS SAM CLI 或 AWS CDK。
- 克隆此 GitHub 仓库到你的本地机器。
- 根据你想部署的示例(例如 'lambda-ops-mcp-server', 'stateless-mcp-on-ecs' 等),进入对应的子目录。
- 每个示例目录内通常包含详细的部署说明文件(如 README)。请仔细阅读并按照该文件中的具体步骤进行操作,这通常涉及运行特定的 AWS 部署命令来自动化部署服务器到 AWS。
服务器配置(供 MCP 客户端参考)
MCP 服务器用于与 MCP 客户端(如大型语言模型应用)通信。MCP 客户端需要知道如何连接到 MCP 服务器。具体的配置信息取决于服务器的传输协议和部署方式。
-
对于 'lambda-ops-mcp-server' 示例(使用 Stdio 传输,通常用于本地或同一进程内): MCP 客户端需要知道启动该服务器进程的命令和参数。配置中会指定 'transport' 为 "stdio",'serverName' 通常是 "AWS Lambda Operations MCP Server",'command' 是执行服务器脚本的程序(例如 "node"),'args' 是服务器脚本的路径和任何必要的启动参数。你需要提供服务器脚本的实际路径给客户端。
-
对于使用 Streamable HTTP 传输的示例('stateless-mcp-on-lambda', 'stateless-mcp-on-ecs', 'stateful-mcp-on-ecs'): MCP 客户端需要知道服务器的 HTTP 端点 URI。配置中会指定 'transport' 为 "streamableHttp",'serverName' 通常是 "demo-mcp-server"(或示例中定义的名称),'uri' 是服务器部署后可公开访问的 URL。这个 URI 将由 AWS 部署过程生成(例如,API Gateway 的 Invoke URL 或 Application Load Balancer 的 DNS 名称),你需要将这个实际的 URL 提供给 MCP 客户端。URI 通常以 '/mcp' 路径结尾。
基本使用方法
部署并启动 MCP 服务器后,MCP 客户端可以通过上述配置信息与服务器建立连接。客户端可以:
- 连接到服务器。
- 获取服务器的能力声明(例如,支持哪些工具)。
- 调用服务器注册的工具,向工具传递参数并接收工具的执行结果。
- 接收服务器可能发送的通知(Streamable HTTP 的 SSE 模式)。
这些示例仓库中通常也会包含简单的客户端代码(例如 'src/js/mcpclient' 目录下的文件),可以参考这些客户端示例来了解如何与部署的 MCP 服务器进行基本交互和测试。
信息
分类
开发者工具