@脱氧/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://.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- 从stdin读取JSON-RPC消息(每行一条)
- 验证每条消息是否为格式良好的JSON-RPC 2.0
- 使用配置的凭据使用AWS SigV4对请求进行签名
- 通过HTTPS转发到目标MCP端点(具有可配置的超时和重试)
- 在HTTP 5xx和424(AgentCore冷启动超时)上进行指数回退的重试
- 将响应(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
