使用说明

项目简介

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。

安装步骤

  1. 环境准备:

  2. 克隆仓库:

    git clone https://github.com/mikegc-aws/Lambda-MCP-Server.git
    cd Lambda-MCP-Server
  3. 部署服务器:

    cd server-http-python-lambda
    sam build
    sam deploy --guided

    按照 'sam deploy --guided' 提示完成部署,记录部署成功后 AWS API Gateway 返回的 endpoint URL。

  4. 配置客户端:

    • 进入客户端目录: '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。

基本使用方法

  1. 部署并配置好服务器和客户端后,运行客户端脚本 'run-client.sh'。
  2. 客户端连接成功后,可以在命令行界面输入自然语言指令。
  3. 客户端会将指令发送给 Amazon Bedrock 模型进行处理,模型可能会调用 Lambda MCP Server 提供的工具来辅助完成任务。
  4. 模型的响应和工具的执行结果会显示在命令行界面上。
  5. 输入 'quit' 或 'exit' 可以结束客户端会话。

添加新工具

开发者可以通过以下步骤向 Lambda MCP Server 添加新的工具函数:

  1. 打开 'server-http-python-lambda/server/app.py' 文件。
  2. 使用 '@mcp_server.tool()' 装饰器定义新的 Python 函数,并编写函数的功能代码。
  3. 编写清晰的函数文档字符串 (docstring),包括参数说明 (Args) 和返回值说明 (Returns),Lambda MCP Server 会根据文档字符串自动生成工具的描述信息。
  4. 重新部署 Lambda 函数 ('sam build && sam deploy --guided')。
  5. 客户端重新连接服务器后,新的工具即可使用。

示例代码:

@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与计算