在AWS Lambda上运行的MCP服务器
该项目是在AWS Lambda上构建Model Context Protocol(MCP)服务器,用于调用其他Lambda函数的示例实现。通过利用AWS SAM(Serverless Application Model),可以轻松地进行本地开发和测试,并将其部署到AWS。
项目概要
MCPEngine 我们将利用库来实现一个MCP服务器,用于调用其他Lambda函数。
- MCPServerFunction 翻译为中文是“MCPServer功能”:
invoke_lambda_sync于是invoke_lambda_async提供工具的MCP服务器。 - SampleFunction(样本函数/示例函数)被调用方的示例函数。
前提条件
- AWS SAM CLI(Amazon Web Services Serverless Application Model Command Line Interface,亚马逊网络服务无服务器应用程序模型命令行界面) 已安装。
- 已安装。
- 需设置AWS认证信息(部署时必需)。
开发与部署
1. 安装依赖项
pip install -r requirements.txt2. 应用程序构建
执行以下命令以构建SAM应用程序。这样template.yaml 基于此准备源代码,并创建容器镜像。
sam build3. 本地测试
您可以使用SAM CLI在本地测试Lambda函数。以下命令:MCPServerFunction 在本地启动它,并使用指定的事件文件来调用函数。
sam local invoke MCPServerFunction --event events/mcp-server-event.json4. 部署到AWS
sam deploy 使用命令,即可轻松将应用程序部署到AWS账户。
# ガイド付きデプロイ (初回)
sam deploy --guided
# 2回目以降のデプロイ
sam deploy按照指南设置堆栈名称、区域等信息后,CloudFormation 堆栈将被创建,并且 Lambda 函数、IAM 角色等资源将自动进行配置。
5. 从本地运行AWS Lambda的测试
- MCP服务器函数的测试
您可以在已部署的 Lambda 页面中查看函数 URL(https://XXXXX.lambda-url.ap-northeast-1.on.aws/)。请根据需要进行更改后执行。
curl -X POST \
https://XXXXX.lambda-url.ap-northeast-1.on.aws/ \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"invokeLambdaSync","arguments":{"function_name":"test-sample-function","payload":{"name":"From curl"}}},"id":"curl-test-1"}'- 通过HTTP调用MCP服务器
您可以在已部署的API Gateway页面上查看HTTP URL(https://xxxxx.execute-api.ap-northeast-1.amazonaws.com/)。请根据需要进行更改后执行。
curl -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"invokeLambdaSync","arguments":{"function_name":"test-sample-function","payload":{"name":"Local geagaTest"}}},"id":"1"}' https://xxxxx.execute-api.ap-northeast-1.amazonaws.com