MCP服务器实现

在AWS Lambda上构建Model Context Protocol (MCP)服务器,用于调用其他Lambda函数的示例实现。

  • by ShuntaroOkuma
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 ShuntaroOkuma/sample-mcp-server-on-lambda

使用说明

在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(样本函数/示例函数)**被调用方的示例函数。

前提条件

开发与部署

1. 安装依赖项

pip install -r requirements.txt

2. 应用程序构建

执行以下命令以构建SAM应用程序。这样template.yaml 基于此准备源代码,并创建容器镜像。

sam build

3. 本地测试

您可以使用SAM CLI在本地测试Lambda函数。以下命令:MCPServerFunction 在本地启动它,并使用指定的事件文件来调用函数。

sam local invoke MCPServerFunction --event events/mcp-server-event.json

4. 部署到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