MCP2Lambda
](https://smithery.ai/server/@danilop/MCP2Lambda)
graph LR
A[Model] B[MCP Client]
B C["MCP2Lambda
(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服务、专用网络和公共互联网。
从a 安全 从长远来看,这种方法通过允许模型调用Lambda函数而不直接访问其他AWS服务来实现职责分离。客户端只需要AWS凭据即可调用Lambda函数。然后,Lambda函数可以与其他AWS服务交互(使用函数角色)并访问公共或专用网络。
MCP服务器允许访问两个工具:
- 第一个工具可以 自动发现 您帐户中与前缀或允许的名称列表匹配的所有Lambda函数。此工具与模型共享函数的名称及其描述。
- 第二个工具允许 调用 这些Lambda函数按名称传递所需的参数。
无需更改代码。您应该更改这些配置以改善结果:
战略选择
网关支持两种不同的策略来处理Lambda函数:
- 预发现模式 (默认:启用):在启动时将每个Lambda函数注册为单独的工具。这提供了一个更直观的界面,每个功能都显示为自己的命名工具。
- 通用模式:使用两个通用工具(
list_lambda_functions和invoke_lambda_function)与Lambda函数交互。
您可以通过以下方式控制此行为:
- 环境变量:
PRE_DISCOVERY=true|false - CLI标志:
--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.概述
MCP2Lambda使LLM能够作为工具与AWS Lambda函数交互,将其功能扩展到文本生成之外。这允许模型:
- 访问实时和私人数据,包括VPC中的数据源
- 使用Lambda函数作为沙盒环境执行自定义代码
- 使用Lambda函数与外部服务和API交互互联网访问(和带宽)
- 执行专门的计算或数据处理
服务器使用MCP协议,该协议规范了AI模型访问外部工具的方式。
默认情况下,只有名称以开头的函数 mcp2lambda- 将可用于模型。
先决条件
安装
通过Smithery安装
通过以下方式自动安装MCP2Lambda for Claude Desktop 史密瑟里:
npx -y @smithery/cli install @danilop/MCP2Lambda --client claude手动安装
- 克隆存储库:
git clone https://github.com/yourusername/mcp2lambda.git
cd mcp2lambda- 配置AWS凭据。例如,使用 AWS-CLI:
aws configureLambda函数示例
此存储库包括三个 *样品* 展示不同用例的Lambda函数。这些函数具有基本权限,只能写入CloudWatch日志。
客户ID来自电子邮件
根据电子邮件地址检索客户ID。此函数接受电子邮件参数并返回关联的客户ID,演示如何构建简单的查找工具。该功能被硬编码为回复 user@example.com 电子邮件地址。例如,您可以要求模型获取电子邮件的客户ID user@example.com.
客户信息来源ID
根据客户ID检索详细的客户信息。此函数返回客户详细信息,如姓名、电子邮件和状态,显示Lambda如何提供特定于上下文的数据。该函数被硬编码为回复前一个函数返回的客户ID。例如,您可以要求模型“获取电子邮件的客户状态” user@example.com“。这将使用这两个函数来获得结果。
RunPhonCode
在Lambda沙盒环境中执行任意Python代码。这个强大的函数允许Claude编写和运行Python代码来执行计算、数据处理或模型中未内置的其他操作。例如,你可以要求模型“计算1到10、1到100之间的素数,以此类推,直到1M”。
部署示例Lambda函数
存储库中包含示例Lambda函数 sample_functions 目录。
- 安装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了解更多信息。
先决条件
- 亚马逊基岩访问和使用克劳德、米斯特拉尔、拉玛等模型的权限。
- Boto3配置了适当的凭据
安装和设置
- 导航到mcp_client_bedrock目录:
cd mcp_client_bedrock- 安装依赖项:
uv pip install -e .- 运行客户端:
python main.py配置
客户端默认配置为使用Anthropic的Claude 3.7 Sonnet,但您可以修改 model_id 在……里面 main.py 使用其他基岩模型:
# 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",
"",
"run",
"main.py"
]
}
}
}为了帮助模型通过AWS Lambda使用工具,在您的设置配置文件中,您可以在个人首选项中添加以下句子:
Use the AWS Lambda tools to improve your answers.启动MCP服务器
在本地启动MCP服务器:
cd mcp2lambda
uv run main.py