返回市场
MCP到Lambda转换器

MCP到Lambda转换器

作者:danilop111 星标更新:2025-03-27

项目介绍

MCP2Lambda

smithery 徽章

<a href="https://glama.ai/mcp/servers/4hokv207sz"> <img width="380" height="200" src="https://gips3.baidu.com/it/u=3533222031,2192805411&fm=3081&app=3081&f=PNG?w=760&h=400" alt="MCP2Lambda MCP 服务器" /> </a>

使用 AnthropicModel Context Protocol (MCP),无需更改代码即可运行任何 AWS Lambda 函数作为大型语言模型 (LLM) 的工具。

graph LR
    A[模型] <--> B[MCP 客户端]
    B <--> C["MCP2Lambda<br>(MCP 服务器)"]
    C <--> D[Lambda 函数]
    D <--> E[其他 AWS 服务]
    D <--> F[互联网]
    D <--> G[VPC]
    
    style A fill:#f9f,stroke:#333,stroke-width:2px
    style B fill:#bbf,stroke:#333,stroke-width:2px
    style C fill:#bfb,stroke:#333,stroke-width:4px
    style D fill:#fbb,stroke:#333,stroke-width:2px
    style E fill:#fbf,stroke:#333,stroke-width:2px
    style F fill:#dff,stroke:#333,stroke-width:2px
    style G fill:#ffd,stroke:#333,stroke-width:2px

此 MCP 服务器充当 MCP 客户端与 AWS Lambda 函数之间的桥梁,使生成式 AI 模型能够访问并运行 Lambda 函数作为工具。例如,可以访问私有资源,如内部应用程序和数据库,而无需提供公共网络访问。这种方法允许模型使用其他 AWS 服务、私有网络和公共互联网。

安全角度来看,这种方法通过允许模型调用 Lambda 函数但不直接访问其他 AWS 服务来实现职责分离。客户端只需要 AWS 凭据来调用 Lambda 函数。然后,Lambda 函数可以使用函数角色与其他 AWS 服务交互,并访问公共或私有网络。

MCP 服务器提供了两种工具:

  1. 第一个工具可以自动发现账户中匹配前缀或允许名单的所有 Lambda 函数。该工具与模型共享函数名称及其描述。

  2. 第二个工具允许按名称调用这些 Lambda 函数,并传递所需参数。

无需更改代码。您可以通过更改以下配置来改进结果:

策略选择

网关支持处理 Lambda 函数的两种不同策略:

  1. 预发现模式(默认:启用):在启动时注册每个 Lambda 函数作为独立工具。这提供了一个更直观的界面,其中每个函数都作为一个单独命名的工具出现。

  2. 通用模式:使用两个通用工具(list_lambda_functionsinvoke_lambda_function)与 Lambda 函数交互。

您可以通过以下方式控制此行为:

  • 环境变量:PRE_DISCOVERY=true|false
  • 命令行标志:--no-pre-discovery(禁用预发现模式)

示例:

# 禁用预发现模式
export PRE_DISCOVERY=false
python main.py

# 或使用命令行标志禁用预发现
python main.py --no-pre-discovery
  1. 为了向 MCP 客户端提供使用 Lambda 函数的知识,Lambda 函数的描述应指示该函数的功能及使用的参数。参见示例函数以快速演示和更多细节。

  2. 为了帮助模型使用通过 AWS Lambda 提供的工具,您可以在您的系统提示中添加类似以下内容:

使用 AWS Lambda 工具来提高您的答案质量。

概览

MCP2Lambda 允许 LLM 与 AWS Lambda 函数作为工具进行交互,扩展其功能,超越文本生成。这使得模型能够:

  • 访问实时和私有数据,包括 VPC 中的数据源
  • 使用 Lambda 函数作为沙箱环境执行自定义代码
  • 使用 Lambda 函数的互联网访问(和带宽)与外部服务和 API 进行交互
  • 执行专门计算或数据处理

服务器使用 MCP 协议,该协议标准化了 AI 模型访问外部工具的方式。

默认情况下,只有名称以 mcp2lambda- 开头的函数对模型可用。

预备条件

  • Python 3.12 或更高版本
  • 配置好凭据的 AWS 账户
  • AWS Lambda 函数(存储库中提供示例函数)
  • 使用 Amazon Bedrock 并具有 Converse API 的应用程序
  • 兼容 MCP 的客户端,如 Claude Desktop

安装

通过 Smithery 安装

要通过 Smithery 自动安装 MCP2Lambda 到 Claude Desktop:

npx -y @smithery/cli install @danilop/MCP2Lambda --client claude

手动安装

  1. 克隆仓库:

    git clone https://github.com/yourusername/mcp2lambda.git
    cd mcp2lambda
    
  2. 配置 AWS 凭据。例如,使用 AWS CLI

    aws configure
    

示例 Lambda 函数

此仓库包括三个示例 Lambda 函数,展示了不同的使用案例。这些函数具有基本权限,只能写入 CloudWatch 日志。

CustomerIdFromEmail

根据电子邮件地址检索客户 ID。此函数接受电子邮件参数并返回关联的客户 ID,展示如何构建简单的查找工具。该函数硬编码为回复 user@example.com 邮件地址。例如,您可以请求模型获取邮件 user@example.com 的客户 ID。

CustomerInfoFromId

根据客户 ID 检索详细的客户信息。此函数返回客户详情,如姓名、电子邮件和状态,展示 Lambda 如何提供上下文特定的数据。该函数硬编码为回复由前一个函数返回的客户 ID。例如,您可以请求模型“获取邮件 user@example.com 的客户状态”。这将使用两个函数来获得结果。

RunPythonCode

在 Lambda 沙箱环境中执行任意 Python 代码。此强大功能允许 Claude 编写并运行 Python 代码以执行计算、数据处理或其他未内置到模型中的操作。例如,您可以请求模型“计算 1 到 10、1 到 100 等直到 1M 的质数数量”。

部署示例 Lambda 函数

仓库中的示例 Lambda 函数位于 sample_functions 目录下。

  1. 安装 AWS SAM CLI:https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/install-sam-cli.html

  2. 部署示例函数:

    cd sample_functions
    sam build
    sam deploy
    

示例函数将以 mcp2lambda- 前缀部署。

使用 Amazon Bedrock

MCP2Lambda 还可用于 Amazon Bedrock 的 Converse API,允许您使用 Bedrock 支持的任何模型使用 MCP 协议。

mcp_client_bedrock 目录包含一个客户端实现,用于连接 MCP2Lambda 到 Amazon Bedrock 模型。

更多信息请参阅:https://github.com/mikegc-aws/amazon-bedrock-mcp

预备条件

  • 对 Claude、Mistral、Llama 等模型的 Amazon Bedrock 访问和权限
  • 配置好适当凭据的 Boto3

安装和设置

  1. 导航至 mcp_client_bedrock 目录:

    cd mcp_client_bedrock
    
  2. 安装依赖项:

    uv pip install -e .
    
  3. 运行客户端:

    python main.py
    

配置

客户端默认使用 Anthropic 的 Claude 3.7 Sonnet,但您可以在 main.py 中修改 model_id 来使用其他 Bedrock 模型:

# 支持的模型示例:
model_id = "us.anthropic.claude-3-7-sonnet-20250219-v1:0"
#model_id = "us.amazon.nova-pro-v1:0"

您还可以在同一文件中自定义系统提示以改变模型的行为。

使用方法

  1. 在一个终端中启动 MCP2Lambda 服务器:

    cd mcp2lambda
    uv run main.py
    
  2. 在另一个终端中运行 Bedrock 客户端:

    cd mcp_client_bedrock
    python main.py
    
  3. 通过命令行界面与模型互动。模型将有权访问之前部署的 Lambda 函数。

使用 Claude Desktop

在您的 Claude Desktop 配置文件中添加以下内容:

{
  "mcpServers": {
    "mcp2lambda": {
      "command": "uv",
      "args": [
        "--directory",
        "<完整路径到 mcp2lambda 目录>",
        "run",
        "main.py"
      ]
    }
  }
}

为了帮助模型通过 AWS Lambda 使用工具,在您的设置配置文件中,您可以在个人偏好中添加类似以下内容:

使用 AWS Lambda 工具来提高您的答案质量。

启动 MCP 服务器

本地启动 MCP 服务器:

cd mcp2lambda
uv run main.py