Lambda MCP客户端服务器

通过AWS Lambda和API Gateway实现的MCP客户端和服务器,与AWS Bedrock模型交互。

  • by sverze
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 sverze/aws-bedrock-mcp-lambda

使用说明

AWS Lambda处理MCP客户端和服务器与基岩

该项目演示了如何创建一个MCP客户端和服务器,托管在通过API网关访问的AWS lambda中 该模型与AWS Bedrock交互。

先决条件

项目结构

hello-lambda/
├── README.md
├── cdk/
│   ├── cdk.json           # CDK configuration
│   └── mcp_stack.py       # CDK stack deployment script
├── lambda/
│   ├── mcp_handler.py      # Lambda handler entry point
│   ├── mcp_client.py       # MCP client that interacts with MCP server & Bedrock
│   ├── mcp_server.py       # MCP server contains all the exposed tools
│   ├── test_mcp_handler.py # Local test script for the handler
│   └── requirements.txt    # Lambda dependencies
└── tests/                  # Tests directory

设置

  1. 创建并激活虚拟环境:
pyenv install 3.12
pyenv virtualenv 3.12 venv
pyenv activate venv
  1. 安装依赖项:

lambda和CDK有单独的requirements.txt来支持单独的捆绑过程。 要在本地进行测试,您应该在lambda目录中安装requirements.txt文件。

pip install -r cdk/requirements.txt
pip install -r lambda/requirements.txt

局部测试

在部署到AWS之前,您可以在本地测试Lambda函数。该测试应测试天气工具:

cd lambda
python test_mcp_handler.py"

部署

  1. 引导您的AWS环境(如果尚未完成):
cd cdk
cdk bootstrap
  1. 部署包括API网关和Lambda功能的MCP堆栈:
cdk deploy
  1. 注意配置输出参数:
BedrockMcpStack.ApiUrl = https://<APP_ID>.execute-api.us-west-2.amazonaws.com/prod/
BedrockMcpStack.FunctionName = BedrockMcpStack-BedrockMcpFunction<FUNCTION_ID>

测试Lambda

部署后,您可以使用curl通过API网关测试Lambda函数:

curl -G "https://<BedrockMcpStack.ApiUrl>" --data-urlencode "query=What's the temperature in New York City"

请注意,API网关有严格的1分钟超时,因此对于需要更长时间的查询 尝试直接对AWS Lambda函数运行以下命令:

aws lambda invoke  --function-name <BedrockMcpStack.FunctionName>  --payload '{"queryStringParameters": {"query": "Summaries key points from the website - https://en.wikipedia.org/wiki/Black_hole"}}'  --cli-binary-format raw-in-base64-out output.json
cat output.json

清理

为了避免产生费用,请在完成以下操作后删除资源:

cdk destroy