AWS SigV4签名代理

通过AWS SigV4签名认证连接MCP客户端到IAM认证的MCP服务器的Node.js代理工具,支持Lambda Function URLs和Bedrock AgentCore等场景。

  • by de-otio
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 deotio/mcp-sigv4-proxy

使用说明

@脱氧/mcp-sigv4-丙氧基

注: AWS发布了此用例的官方代理: mcp-proxy-for-aws。它成熟、功能丰富,并支持AWS。 除非你特别需要Node.js解决方案,否则请使用它。 此包适用于没有(或不想要)Python运行时的团队——它提供了与单个Python运行时相同的核心功能 npx 命令不依赖Python。

一个stdio MCP代理,使用标准凭据链对AWS SigV4的请求进行签名。把它放进你的 .mcp.json 作为 command 将Claude Code(或任何MCP客户端)连接到IAM认证的MCP服务器的入口——Lambda函数URL、Bedrock AgentCore或任何受SigV4保护的HTTP端点——通过每个配置文件进行身份验证 AWS_PROFILE.

快速开始

Lambda函数URL

"my-server": {
  "command": "npx",
  "args": ["-y", "@deotio/mcp-sigv4-proxy"],
  "env": {
    "AWS_PROFILE": "my-profile",
    "AWS_REGION": "us-east-1",
    "AWS_SERVICE": "lambda",
    "MCP_SERVER_URL": "https://<id>.lambda-url.us-east-1.on.aws/mcp"
  }
}

基岩试剂芯

"my-server": {
  "command": "npx",
  "args": ["-y", "@deotio/mcp-sigv4-proxy"],
  "env": {
    "AWS_PROFILE": "my-profile",
    "AWS_REGION": "us-east-1",
    "MCP_SERVER_URL": "https://bedrock-agentcore.us-east-1.amazonaws.com/runtimes/.../invocations?qualifier=DEFAULT"
  }
}

始终设置 AWS_REGION 显式地——代理可以从标准AWS主机名中推断出来,但是 AWS_REGION 从您的shell环境中,优先级更高,可能指向不同的区域。

重要提示: AWS_SERVICE 必须设置为 lambda 对于Lambda函数URL。对于AgentCore端点,它会根据主机名自动推断。

运作原理

stdin (JSON-RPC) -> validate -> SigV4 sign -> HTTPS POST -> response relay -> stdout
  1. 从stdin读取JSON-RPC消息(每行一条)
  2. 验证每条消息是否为格式良好的JSON-RPC 2.0
  3. 使用配置的凭据使用AWS SigV4对请求进行签名
  4. 通过HTTPS转发到目标MCP端点(具有可配置的超时和重试)
  5. 在HTTP 5xx和424(AgentCore冷启动超时)上进行指数回退的重试
  6. 将响应(JSON或SSE流)中继回stdout

环境变量

变量 必填 默认 描述
MCP_SERVER_URL yes -- 目标MCP HTTP端点的完整HTTPS URL
AWS_PROFILE no SDK默认链 用于签名的AWS命名配置文件
AWS_REGION 否 从URL推断,则 us-east-1 SigV4签名的AWS区域
AWS_SERVICE 否 从URL推断,则 bedrock-agentcore SigV4服务名称-- 着手 lambda 用于Lambda函数URL
MCP_TIMEOUT 没有 180 请求超时(秒)
MCP_RETRIES 没有 2 5xx/424错误和网络故障的重试计数(0-10)
MCP_LOG_LEVEL 没有 ERROR 日志冗长: DEBUG, INFO, WARNING, ERROR, SILENT
MCP_WARM 没有 0 设置为 1 启用 暖模式 用于慢速启动后端

先决条件

您的AWS配置文件需要目标服务的适当IAM权限:

  • Lambda函数URL: lambda:InvokeFunctionUrl
  • 基岩试剂芯: bedrock-agentcore:InvokeAgentRuntime

安全

  • 仅限HTTPS — MCP_SERVER_URL 必须使用 https://.唯一的例外是 http://localhost / http://127.0.0.1 为了地方发展。
  • TLS强制 --如果出现以下情况,代理将拒绝启动 NODE_TLS_REJECT_UNAUTHORIZED=0 已设置,因为它发送已签名的AWS凭据。
  • 输入验证 --仅对格式良好的JSON-RPC 2.0消息进行签名和转发。
  • 信息错误 --HTTP错误响应包括上游错误消息(例如。 HTTP 403: User is not authorized)在JSON-RPC错误中,为了更容易调试。完整的响应体记录到stderr。
  • 缓冲区限制 --SSE流的上限为1 MB,以防止无限内存增长。

文档

许可证

阿帕奇-2.0