使用说明
项目简介
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
信息
分类
AI与计算