M

MCP2Lambda适配器

@danilop/MCP2Lambda
0 Stars 367 次浏览 danilop 更新于 2026-08-23

通过MCP协议启用AI模型与AWS Lambda函数的交互,从而在安全的环境中访问私有资源、实时数据和自定义计算。

MCP 服务配置

复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用

{
  "mcpServers": {
    "mcp2lambda": {
      "args": [
        "--directory",
        "\u003cfull path to the mcp2lambda directory\u003e",
        "run",
        "main.py"
      ],
      "command": "uv"
    }
  }
}

可用工具 (2 个)

该服务在 MCP 协议中暴露的工具,AI 可按需调用

list_lambda_functions

Tool that lists all AWS Lambda functions that you can call as tools. Use this list to understand what these functions are and what they do. This functions can help you in many different ways.

该工具无需必填参数,直接调用即可

invoke_lambda_function 2 个参数 需填 2 项

Tool that invokes an AWS Lambda function with a JSON payload. Before using this tool, list the functions available to you.

必填参数:function_name、parameters

服务介绍

MCP2Lambda

smithery badge

无需修改代码,即可使用 Anthropic模型上下文协议 (MCP) 将任何 AWS Lambda 函数作为大型语言模型 (LLM) 工具 运行。

graph LR
    A[Model] <--> B[MCP Client]
    B <--> C["MCP2Lambda<br>(MCP Server)"]
    C <--> D[Lambda Function]
    D <--> E[Other AWS Services]
    D <--> F[Internet]
    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(禁用预发现模式)

示例:

# Disable pre-discovery mode
export PRE_DISCOVERY=false
python main.py

# Or using CLI flag to disable pre-discovery
python main.py --no-pre-discovery
  1. 为了向 MCP 客户端提供使用 Lambda 函数的知识,Lambda 函数的描述 应该说明该函数的作用及其使用的参数。请参见示例函数以获取快速演示和更多详细信息。

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

Use the AWS Lambda tools to improve your answers.

概览

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 自动为 Claude Desktop 安装 MCP2Lambda:

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 函数

仓库在 sample_functions 目录下包含了示例 Lambda 函数。

  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 一起使用,允许您将 MCP 协议与 Bedrock 支持的任何模型一起使用。

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

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

前提条件

  • 访问 Amazon Bedrock 并具有使用如 Claude、Mistral、Llama 等模型的权限。
  • 使用适当凭据配置 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 模型:

# Examples of supported models:
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",
        "<full path to the mcp2lambda directory>",
        "run",
        "main.py"
      ]
    }
  }
}

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

Use the AWS Lambda tools to improve your answers.

启动 MCP 服务器

本地启动 MCP 服务器:

cd mcp2lambda
uv run main.py

相关 MCP 服务