MCP2Lambda
使用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 服务器提供两种工具:
第一个工具可以自动发现您账户中所有与前缀或允许名称列表匹配的 Lambda 函数。此工具会与模型共享这些函数的名称及其描述。
第二个工具允许通过名称传递所需的参数来调用那些 Lambda 函数。
无需更改代码。您应该更改以下配置以改善结果:
策略选择
网关支持两种不同的处理 Lambda 函数的策略:
预发现模式(默认:启用):启动时将每个 Lambda 函数注册为单独的工具。这提供了一个更直观的界面,每个函数都显示为一个独立的命名工具。
通用模式:使用两个通用工具(
list_lambda_functions和invoke_lambda_function)与 Lambda 函数交互。
您可以通过以下方式控制此行为:
环境变量:
PRE_DISCOVERY=true|falseCLI 标志:
--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为了让 MCP 客户端了解如何使用 Lambda 函数, Lambda 函数的描述应该明确说明该函数的功能以及使用的参数。请参阅示例函数,快速查看演示并了解更多详情。
为了帮助模型使用 AWS Lambda 提供的工具,您可以在系统提示符中添加如下内容:
Use the AWS Lambda tools to improve your answers.Related MCP server: MCP Agents Server
概述
MCP2Lambda 使 LLM 能够作为工具与 AWS Lambda 函数进行交互,从而扩展其功能,使其不再局限于文本生成。这使得模型能够:
访问实时和私有数据,包括 VPC 中的数据源
使用 Lambda 函数作为沙盒环境执行自定义代码
使用 Lambda 函数互联网访问(和带宽)与外部服务和 API 进行交互
执行专门的计算或数据处理
服务器采用MCP协议,标准化了AI模型访问外部工具的方式。
默认情况下,只有名称以mcp2lambda-开头的函数才适用于模型。
先决条件
Python 3.12 或更高版本
具有已配置凭证的 AWS 账户
AWS Lambda 函数(repo 中提供的示例函数)
使用Amazon Bedrock和Converse API 的应用程序
与 MCP 兼容的客户端,例如Claude Desktop
安装
通过 Smithery 安装
要通过Smithery自动为 Claude Desktop 安装 MCP2Lambda:
npx -y @smithery/cli install @danilop/MCP2Lambda --client claude手动安装
克隆存储库:
git clone https://github.com/yourusername/mcp2lambda.git cd mcp2lambda配置 AWS 凭证。例如,使用AWS CLI :
aws configure
示例 Lambda 函数
此存储库包含三个示例Lambda 函数,用于演示不同的使用案例。这些函数具有基本权限,并且只能写入 CloudWatch 日志。
客户ID来自电子邮件
根据电子邮件地址检索客户 ID。此函数接受一个 email 参数并返回关联的客户 ID,演示如何构建简单的查找工具。该函数采用硬编码,用于回复user@example.com电子邮件地址。例如,您可以要求模型获取user@example.com电子邮件地址的客户 ID。
客户信息来源ID
根据客户 ID 检索详细的客户信息。此函数返回客户详细信息,例如姓名、电子邮件地址和状态,展现了 Lambda 如何提供上下文相关的数据。该函数采用硬编码,用于响应上一个函数返回的客户 ID。例如,您可以要求模型“获取电子邮件user@example.com的客户状态”。这将使用这两个函数来获取结果。
运行Python代码
在 Lambda 沙盒环境中执行任意 Python 代码。这项强大的功能允许 Claude 编写和运行 Python 代码来执行计算、数据处理或其他模型中未内置的操作。例如,您可以要求模型“计算 1 到 10、1 到 100 之间,以及 100 万以内的素数个数”。
部署示例 Lambda 函数
该存储库在sample_functions目录中包含示例 Lambda 函数。
安装 AWS SAM CLI: https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/install-sam-cli.html
部署示例函数:
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
安装和设置
导航到 mcp_client_bedrock 目录:
cd mcp_client_bedrock安装依赖项:
uv pip install -e .运行客户端:
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"您还可以在同一个文件中自定义系统提示来改变模型的行为方式。
用法
在一个终端中启动 MCP2Lambda 服务器:
cd mcp2lambda uv run main.py在另一个终端中运行 Bedrock 客户端:
cd mcp_client_bedrock python main.py通过命令行界面与模型交互。该模型将可以访问之前部署的 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