Skip to main content
Glama

MCP Lambda Server

by markvp

MCP Lambda SAM

使用 AWS Lambda 和 SAM 实现模型上下文协议 (MCP)。

概述

该项目提供了模型上下文协议的无服务器实现,具有两个不同的接口:

  1. 系统配置(管理):
    • MCP 工具、资源和提示的注册
    • IAM权限管理
    • 基础设施设置和配置
  2. 系统使用情况(客户端):
    • 建立 SSE 连接
    • 发送命令
    • 接收流式响应

建筑学

美人鱼图

您可以使用以下 Mermaid 语法来可视化系统:

  • MCP Lambda在启动和处理请求时从注册表读取注册信息。
  • 它使用会话表来保存会话状态。
  • 它使用注册表中存储的 ARN 动态调用已注册的 Lambda 工具

系统配置指南(管理员)

本节适用于需要配置和管理 MCP 服务器的系统管理员。

部署

npx @markvp/mcp-lambda-sam deploy

该命令将以交互方式提示管理配置:

  • 堆栈名称(用于多个实例)
  • AWS 区域
  • VPC 配置(可选)

权限概述

要访问 MCP 端点,用户和客户端必须具有 IAM 权限才能调用相关的函数 URL。

  • 管理员:必须被允许调用mcp-registration函数 URL
  • 客户端:必须允许调用mcp函数 URL

您可以使用 IAM 策略或aws lambda add-permission授予访问权限(见下文)。

通过 AWS CLI 分配权限

授予调用注册功能 URL 的权限:

aws lambda add-permission \ --function-name <registration-function-name> \ --statement-id allow-registration \ --action lambda:InvokeFunctionUrl \ --principal "*" \ --function-url-auth-type IAM

要授予调用MCP 函数 URL (SSE 和消息)的权限:

aws lambda add-permission \ --function-name <mcp-function-name> \ --statement-id allow-mcp \ --action lambda:InvokeFunctionUrl \ --principal "*" \ --function-url-auth-type IAM

<registration-function-name><mcp-function-name>替换为实际的 Lambda 函数名称。

注册 API

使用这些端点来管理 MCP 工具、资源和提示:

注册新工具
awscurl -X POST ${REGISTRATION_URL}/register \ --region ap-southeast-2 \ --service lambda \ -H "Content-Type: application/json" \ -d '{ "type": "tool", "name": "example", "description": "Example tool", "lambdaArn": "arn:aws:lambda:region:account:function:name", "parameters": { "input": "string" } }'
更新注册
awscurl -X PUT ${REGISTRATION_URL}/register/{id} \ --region ap-southeast-2 \ --service lambda \ -d '...'
删除注册
awscurl -X DELETE ${REGISTRATION_URL}/register/{id} \ --region ap-southeast-2 \ --service lambda
列出注册
awscurl ${REGISTRATION_URL}/register \ --region ap-southeast-2 \ --service lambda

所需的 IAM 权限

对于管理员

管理员需要以下权限来管理注册:

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "lambda:InvokeFunctionUrl", "Resource": "arn:aws:lambda:${region}:${account}:function:${stack-id}-mcp-registration", "Condition": { "StringEquals": { "lambda:FunctionUrlAuthType": "AWS_IAM" } } }] }

系统使用指南(客户端)

本节适用于想要使用 MCP 服务器的客户。

所需的 IAM 权限

客户端需要以下权限才能使用 MCP 服务器:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunctionUrl", "Resource": [ "arn:aws:lambda:${region}:${account}:function:${stack-id}-mcp", ], "Condition": { "StringEquals": { "lambda:FunctionUrlAuthType": "AWS_IAM" } } } ] }

连接到服务器

  1. 建立 SSE 连接
const sse = new EventSource(SSE_URL, { headers: { Authorization: 'AWS4-HMAC-SHA256 ...', // Must be AWS SigV4 signed } }); sse.onmessage = (event) => { console.log(JSON.parse(event.data)); };

SSE 的 cURL 示例

awscurl -X GET "${MCP_URL}/sse" \ --region ap-southeast-2 \ --service lambda

第一个事件将包含一个sessionId 。发送消息时请使用它。

  1. 发送命令
awscurl -X POST "${MCP_URL}/message?sessionId=session-123" \ --region ap-southeast-2 \ --service lambda \ -H "Content-Type: application/json" \ -d '{ "jsonrpc": "2.0", "id": "1", "method": "example", "params": { "input": "hello" } }'

错误处理

常见客户端错误
  • 401 :AWS 凭证无效/缺失
  • 403 :权限不足
  • 404 :无效的会话 ID
  • 429 :超出速率限制
故障排除
  1. 连接问题
    • 验证 AWS 凭证
    • 检查 IAM 权限
    • 确保网络连接
  2. 命令执行错误
    • 验证会话 ID 是否处于活动状态
    • 检查命令格式是否与工具注册相符
    • 确保参数与架构匹配

要求

  • 已安装并配置 AWS CLI
  • 已安装 AWS SAM CLI
  • Node.js 20.x 或更高版本
  • 具有以下权限的 AWS 账户:
    • Lambda 函数
    • DynamoDB 表
    • IAM 角色
    • SQS 队列

AWS SAM CLI 设置

要使用 AWS SAM CLI 在本地部署此应用程序或将其部署到 AWS:

  1. 安装 AWS SAM CLI: https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/install-sam-cli.html
  2. 确保它在你的 PATH 中可用:
    sam --version
  3. 构建并部署应用程序:
    sam build sam deploy --guided
  4. 按照提示配置堆栈名称、区域、功能和参数覆盖。

您可以重新运行sam deploy而不使用--guided来使用已保存的配置。

安装

您可以通过四种方式安装和部署此应用程序:

1.使用 AWS 无服务器应用程序存储库 (SAR)

部署 MCP 服务器最简单的方法是通过 AWS 无服务器应用程序存储库 (SAR):

  • 转至SAR 控制台
  • 搜索 Mark Van Proctor 的mcp-lambda-sam
  • 单击部署
  • 设置参数:
    • StackIdentifier :此 MCP 服务器实例的唯一 ID
    • VpcEnabled :如果在 VPC 中部署,则设置为true
    • VpcIdSubnetIds :仅当VpcEnabledtrue时提供
  • 按照提示进行部署

或者,您可以从 AWS CLI 部署:

aws serverlessrepo create-cloud-formation-change-set \ --application-id arn:aws:serverlessrepo:ap-southeast-2:522814717816:applications/mcp-lambda-sam \ --stack-name your-stack-name \ --capabilities CAPABILITY_IAM \ --parameter-overrides '[{"name":"StackIdentifier","value":"your-stack-id"}]'

2.使用 npx(CLI)

npx @markvp/mcp-lambda-sam deploy

该命令将以交互方式提示管理配置:

  • 堆栈名称(用于多个实例)
  • AWS 区域
  • VPC 配置(可选)

3. 通过 Install 进行编程使用

安装软件包:

npm install @markvp/mcp-lambda-sam

安装该包后,您可以以编程方式使用它:

import { deploy } from '@markvp/mcp-lambda-sam'; // Usage example deploy();

4. 本地开发与部署

安装软件包:

npm install @markvp/mcp-lambda-sam

进行开发更改后,您可以手动部署它:

npm run deploy

发展

# Install dependencies npm install # Lint npm run lint # Run tests npm test # Build npm run build # Deploy npm run deploy

发布到 SAR

如果您正在为此项目做出贡献并需要向 SAR 发布更新:

  1. 打包应用程序:
npm run package:sar
  1. 发布到 SAR:
npm run publish:sar
  1. 将应用程序公开(一次性设置):
    • 转到 AWS 控制台 > 无服务器应用程序存储库
    • 选择应用程序
    • 点击“共享”,并选择“公开”
    • 应用以下共享策略:GXP25

执照

麻省理工学院

贡献

  1. 分叉存储库
  2. 创建你的功能分支
  3. 提交你的更改
  4. 推送到分支
  5. 创建新的 Pull 请求
-
security - not tested
A
license - permissive license
-
quality - not tested

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

一个 Node.js 包,为支持 SSE 的 AWS Lambda 函数提供模型上下文协议服务器基础设施,使开发人员能够将 MCP 工具和提示实现为无服务器函数。

  1. 概述
    1. 建筑学
      1. 美人鱼图
    2. 系统配置指南(管理员)
      1. 部署
      2. 权限概述
      3. 通过 AWS CLI 分配权限
      4. 注册 API
      5. 所需的 IAM 权限
    3. 系统使用指南(客户端)
      1. 所需的 IAM 权限
      2. 连接到服务器
      3. SSE 的 cURL 示例
      4. 错误处理
    4. 要求
      1. AWS SAM CLI 设置
        1. 安装
          1. 1.使用 AWS 无服务器应用程序存储库 (SAR)
          2. 2.使用 npx(CLI)
          3. 通过 Install 进行编程使用
          4. 本地开发与部署
        2. 发展
          1. 发布到 SAR
        3. 执照
          1. 贡献

            Related MCP Servers

            • Amazon Web Services
              aws-mcp

              A
              security
              F
              license
              A
              quality
              A Model Context Protocol (MCP) server that enables AI assistants like Claude to interact with your AWS environment. This allows for natural language querying and management of your AWS resources during conversations. Think of better Amazon Q alternative.
              Last updated -
              3
              264
              TypeScript
              • Apple
            • A
              security
              A
              license
              A
              quality
              A comprehensive Model Context Protocol server that provides advanced Node.js development tooling for automating project creation, component generation, package management, and documentation with AI-powered assistance.
              Last updated -
              7
              2
              JavaScript
              MIT License
            • A
              security
              F
              license
              A
              quality
              An MCP server that provides tools for interacting with AWS S3 buckets, enabling direct access to S3 operations through the Model Context Protocol.
              Last updated -
              1
              Python
              • Apple
            • -
              security
              F
              license
              -
              quality
              A Node.js application that provides a Model Context Protocol server for interacting with Harbor container registry, supporting operations for projects, repositories, tags, and Helm charts.
              Last updated -
              TypeScript

            View all related MCP servers

            MCP directory API

            We provide all the information about MCP servers via our MCP API.

            curl -X GET 'https://glama.ai/api/mcp/v1/servers/markvp/mcp-lambda-sam'

            If you have feedback or need assistance with the MCP directory API, please join our Discord server