Lambda MCP Server
使用说明
项目简介
Lambda MCP Server 是一个基于 AWS Lambda 函数构建的 Serverless Model Context Protocol (MCP) 服务器实现。它旨在简化云端 MCP 工具的部署,并提供一个易于开发和扩展的平台,使得开发者可以轻松地为大型语言模型 (LLM) 应用创建和集成外部工具。此项目包含一个 Python 实现的 MCP 服务器和一个 TypeScript 实现的 HTTP 客户端示例,展示了如何利用 AWS Lambda 和 Amazon Bedrock 构建智能代理。
主要功能点
- Serverless 架构: 基于 AWS Lambda 构建,无需管理服务器,自动扩展,按需付费。
- 简易工具注册: 使用 Python 装饰器模式,轻松将 Python 函数注册为 MCP 工具。
- 自动文档生成: 根据函数签名和文档字符串自动生成 MCP 工具的 schema 和描述。
- HTTP 传输: 通过 HTTP 协议与 MCP 客户端通信。
- 示例工具: 内置 'get_time', 'get_weather', 'count_s3_buckets' 等示例工具,演示不同使用场景。
- 客户端示例: 提供 TypeScript HTTP 客户端,演示如何与 Lambda MCP Server 集成 Amazon Bedrock 的 Converse API。
安装步骤
-
环境准备:
- 确保已安装 AWS CLI 并配置 AWS 账户。
- 安装 AWS SAM CLI。
- 安装 Node.js 和 npm (客户端需要)。
- 安装 Docker (客户端需要)。
- 安装 Python 3.9+。
- 确保您的 AWS 账户已开通 Amazon Bedrock 和 Amazon Nova Pro。
-
克隆仓库:
git clone https://github.com/mikegc-aws/Lambda-MCP-Server.git cd Lambda-MCP-Server -
部署服务器:
cd server-http-python-lambda sam build sam deploy --guided按照 'sam deploy --guided' 提示完成部署,记录部署成功后 AWS API Gateway 返回的 endpoint URL。
-
配置客户端:
- 进入客户端目录: 'cd ../client-http-typescript-docker'
- 复制 '.env.example' 文件为 '.env',并根据需要修改 '.env' 文件中的环境变量,主要是 'MCP_URL' 需要配置为上一步部署服务器后获得的 API Gateway endpoint URL。
- 运行客户端脚本: 'run-client.sh'
服务器配置
MCP 客户端需要配置服务器的连接信息才能与 Lambda MCP Server 通信。对于 Lambda MCP Server 而言,客户端主要需要配置服务器的 URL 地址。
以下是一个 MCP 客户端配置示例 (JSON 格式):
{ "serverName": "lambda-mcp-server", "command": "http://<your-api-gateway-endpoint-url>", "args": [] }
配置参数说明:
- 'serverName': 服务器名称,例如 "lambda-mcp-server"。
- 'command': 重要: Lambda MCP Server 的 API Gateway endpoint URL。请将 '<your-api-gateway-endpoint-url>' 替换为实际部署后获得的 URL,例如 'https://xxxxxxxxxx.execute-api.us-west-2.amazonaws.com/Prod/'。
- 'args': 对于 HTTP 类型的 MCP 服务器,通常不需要额外的启动参数,因此为空数组 '[]'。
注意: 请务必将 'command' 字段配置为正确的 API Gateway endpoint URL,客户端才能成功连接到 Lambda MCP Server。
基本使用方法
- 部署并配置好服务器和客户端后,运行客户端脚本 'run-client.sh'。
- 客户端连接成功后,可以在命令行界面输入自然语言指令。
- 客户端会将指令发送给 Amazon Bedrock 模型进行处理,模型可能会调用 Lambda MCP Server 提供的工具来辅助完成任务。
- 模型的响应和工具的执行结果会显示在命令行界面上。
- 输入 'quit' 或 'exit' 可以结束客户端会话。
添加新工具
开发者可以通过以下步骤向 Lambda MCP Server 添加新的工具函数:
- 打开 'server-http-python-lambda/server/app.py' 文件。
- 使用 '@mcp_server.tool()' 装饰器定义新的 Python 函数,并编写函数的功能代码。
- 编写清晰的函数文档字符串 (docstring),包括参数说明 (Args) 和返回值说明 (Returns),Lambda MCP Server 会根据文档字符串自动生成工具的描述信息。
- 重新部署 Lambda 函数 ('sam build && sam deploy --guided')。
- 客户端重新连接服务器后,新的工具即可使用。
示例代码:
@mcp_server.tool() def my_new_tool(city: str, unit: str = "Celsius") -> str: """获取指定城市的天气信息。 Args: city: 城市名称 unit: 温度单位,默认为 Celsius (摄氏度),可选 Fahrenheit (华氏度) Returns: 包含城市天气信息的字符串 """ # 工具的具体实现代码,例如调用天气 API weather_info = f"城市 {city} 的天气晴朗,温度 25 {unit}。" return weather_info