mcpField
B
Bedrock Multi-Model

Bedrock Multi-Model

本地服务
github.com/Sagargupta16AI 与智能体33 天前更新

关于 Bedrock Multi-Model

Bedrock Multi-Model 是供 MCP 客户端调用 AWS Bedrock 文本、图像、视频和嵌入模型的 MCP 服务。它将模型对比与盲评,以及图像编辑和媒体生成整合到一组 AWS 凭证下。

主要功能

  1. 01调用 33 个文本模型
  2. 02并排比较 2–5 个模型
  3. 03盲评并选出答案
  4. 04生成和编辑图像
  5. 05生成视频并比较嵌入

适用场景

  1. 01获取另一模型的审阅意见
  2. 02比较同一提示词的回答
  3. 03生成或变换图像
  4. 04生成视频或比较文本相似度

MCP 相关

向 MCP 客户端提供九种工具,以调用 AWS Bedrock 的文本、图像、视频和嵌入模型。客户端可询问、比较和评判文本模型,生成或编辑图像,启动并查看视频任务,以及计算嵌入相似度。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"sagargupta16-bedrock-multi-model": {
"command": "npx",
"args": [
"-y",
"bedrock-multi-model-mcp"
],
"env": {
"AWS_BEARER_TOKEN_BEDROCK": "<AWS_BEARER_TOKEN_BEDROCK>",
"AWS_REGION": "<AWS_REGION>",
"AWS_PROFILE": "<AWS_PROFILE>",
"BEDROCK_MCP_OUTPUT_DIR": "<BEDROCK_MCP_OUTPUT_DIR>"
}
}
}
}
启动命令npx -y bedrock-multi-model-mcp
需要配置的环境变量
AWS_BEARER_TOKEN_BEDROCK密钥Bedrock API key. Leave unset to use the standard AWS credential chain.
AWS_REGIONRegion for text and embedding calls (default us-east-1).
AWS_PROFILENamed AWS profile, when using IAM credentials instead of a bearer token.
BEDROCK_MCP_OUTPUT_DIRDirectory for generated images (default: cwd, or ~/bedrock-images).

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmbedrock-multi-model-mcp0.7.1

工具

9

收录的工具列表 · 更新于 3 天前

参数类型必填说明
modelstring是模型别名(例如 'claude-opus'、'kimi'、'mistral-large'、'nova-pro'、'deepseek')或完整 Bedrock 模型 ID
effortenum否适用于支持此参数的模型(Claude(Haiku 4.5 除外)、GPT-6.1、Grok 4.7、Kimi K3、Gemma 4,最高 xhigh)的思考深度和 token 消耗:low、medium、high、xhigh、max。Claude Opus 5.5 和 Haiku 5.5 默认为 medium。bedrock_ask 对其他模型不接受此参数;bedrock_compare 和 bedrock_judge 仅对支持此参数的模型应用该设置。low | medium | high | xhigh | max
promptstring是发送给模型的用户提示词
schemaobject否回复必须符合的 JSON schema(结构化输出)。对象 schema 必须包含 additionalProperties: false。支持的模型:Claude、GPT-6.1、GPT-OSS、Grok 4.7、Kimi K3、Gemma 4、Mistral Large 3、Ministral 3、Qwen3、DeepSeek V3.2、MiniMax M2.5 和 Nemotron 3 Super;Nova、Pixtral 或 Magistral Small 不支持。
systemstring否可选的系统提示词
max_tokensinteger否生成的最大 token 数
temperaturenumber否采样温度(0-1,默认值 0.7)。不支持此参数的模型会忽略该值。

详细介绍

bedrock-multi-model-mcp

Stars Forks License: MIT Last commit CI

面向 AWS Bedrock 的 MCP 服务——可通过任意模型处理文本、图像、视频和嵌入。可在 Claude Code(或任意 MCP 客户端)中使用 Claude、GPT、Grok、Kimi、Gemma、Mistral、Nova、Qwen、DeepSeek 等模型。

原因: Bedrock 已支持一个 AWS 账户访问来自 11 家文本模型提供商的模型, 但每个模型都有不同的模型 ID、推理配置文件、区域和请求格式。此服务通过 9 个 MCP 工具和一套 AWS 凭证将它们统一起来,Agent 可以让第二个模型进行审查、并排运行同一提示词来比较 5 个模型的回答、让评审模型盲测评分,或生成和编辑图像,而无需离开聊天或编写 SDK 代码。

概览:33 个来自 11 家提供商的文本模型、3 个图像模型、13 项图像编辑服务、 1 个视频模型和 3 个嵌入模型,全部以数据形式定义在 src/data/ 中, 并在启动时进行验证。 在 2026-10-18 的基准测试中,26 个文本模型的每次调用均成功响应。 此后,Claude Opus 5.5、Sonnet 5.5 和 Haiku 5.5,以及 0.7.0 版新增的来自 OpenAI、xAI、Moonshot AI、Google、MiniMax、NVIDIA、Mistral 和 Qwen 的 12 个模型加入了模型注册表;而 AWS 于 2026-09-30 移至 Legacy 的 5 个模型(Llama 4 Maverick 和 Scout、Llama 3.3 70B、Devstral 2、DeepSeek R1)则已移出。

bedrock_judge 的终端录制:Llama 4 Maverick、Nova Pro 和 DeepSeek V3.2 回答何时应选择 SQS 而非 SNS,Claude Opus 5 则对它们进行盲测。Llama 4 Maverick 获得 9/10,DeepSeek V3.2 获得 8/10,Nova Pro 获得 7/10。

这是 2026-10-18 的一次真实 bedrock_judge 运行,通过 scripts/call-tool.mjs 调用,使用的参数见 docs/demo/judge-args.json。输出行摘录自该次运行,并已对齐表格列;完整回复还包含评审模型的推理过程和全部三个回答。Llama 4 Maverick 此后已在 Bedrock 上移至 Legacy,并从模型注册表中移出,因此要重新运行,请将 llama4 换成其他模型。

工具

工具描述
bedrock_ask向任意文本模型发送提示词。返回包含 Token 数量和延迟的响应。schema 返回符合 JSON Schema 的 JSON;effort 设置思考深度。
bedrock_compare将同一提示词并排发送给 2-5 个模型。比较质量、速度和风格。也支持 schema 和 effort。
bedrock_judge将同一提示词发送给 2-5 个模型,然后由评审模型盲评答案并选出优胜者,也可选择将答案合并为一个答案。如果评审模型支持,评审结果会以通过 Schema 检查的 JSON 返回。
bedrock_list_models列出可用文本模型及其别名、用途和能力。
bedrock_generate_image根据文本生成图像(Stable Image Ultra、SD3.5 Large、Stable Image Core)。将 PNG 保存到本地。
bedrock_edit_image使用 13 种 Stability AI 图像服务编辑或转换本地图像:修补、扩图、擦除、移除背景、查找并替换或重新着色对象、三种放大工具、草图和结构控制、风格指南和风格迁移。将 PNG 保存到本地。
bedrock_generate_video启动异步视频生成(Luma Ray 2)。输出到 S3。
bedrock_video_status检查视频生成任务的进度。
bedrock_embed_similarity对 2 个或更多文本进行嵌入(Titan、Cohere),并返回余弦相似度矩阵。

支持的模型

模型数据存放在 src/data/(text-models.json、image-models.json、image-edit-models.json、video-models.json、embedding-models.json)中——编辑这些文件即可添加或移除模型,无需修改代码。

文本(Converse API,以及用于 Gemma 4 的 bedrock-mantle)
提供商模型别名
AnthropicClaude Fable 5.1、Opus 5.5、Sonnet 5.5、Haiku 5.5(当前);Fable 5、Opus 5 / 4.6、Sonnet 5 / 4.6、Haiku 4.5(上一代)fable、claude-opus、claude-sonnet、claude-haiku
OpenAIGPT-6.1 Sol、GPT-6.1 Terra、GPT-OSS 120B、GPT-OSS 20Bgpt-sol、gpt-terra、gpt-oss、gpt-oss-20b
xAIGrok 4.7grok
Moonshot AIKimi K3kimi
MistralMistral Large 3、Ministral 3 14B、Magistral Small、Pixtral Largemistral-large、ministral、magistral、pixtral
AmazonNova Pro、Nova 2 Lite、Nova Lite、Nova Micronova-pro、nova2-lite、nova-lite、nova-micro
QwenQwen3 Coder Next、Qwen3 VL 235B、Qwen3 Next 80B A3Bqwen-coder、qwen-vl、qwen-next
DeepSeekDeepSeek V3.2deepseek
GoogleGemma 4 31B、Gemma 4 26B A4B、Gemma 4 E2B(bedrock-mantle)gemma、gemma-4-26b、gemma-4-e2b
MiniMaxMiniMax M2.5minimax
NVIDIANemotron 3 Super 120Bnemotron

Gemma 4 仅通过 Bedrock 的 OpenAI 兼容端点 bedrock-mantle 提供,而不通过 Converse 提供,因此这些条目带有 "api": "mantle",服务会改为调用它们的 Chat Completions API(https://bedrock-mantle.<region>.api.aws/openai/v1)。所有工具均可与这些模型配合使用,并可在 bedrock_compare 和 bedrock_judge 中与 Converse 模型并列使用。它们需要 AWS_BEARER_TOKEN_BEDROCK:AWS 也接受该端点上的 SigV4,但此服务不会为 mantle 请求签名。

Bedrock 上列出但不在注册表中的模型:GLM 5.3 和 Claude Mythos 5.1(访问权限按账户限制;两者都未通过 2026-11-01 的探测),以及 Grok 4.3(可在 bedrock-mantle 上回答,但已由 Grok 4.7 取代)。AWS 未列出任何 Active Meta 模型。

不带版本的层级别名(fable、claude-opus、claude-sonnet、claude-haiku、gpt-sol、gpt-terra)会指向该层级当前的模型;固定版本的别名(fable-5、claude-opus-5、claude-sonnet-5、claude-haiku-4.5、claude-opus-4.6、claude-sonnet-4.6)则可继续访问上一代模型。AWS 于 2026-09-22 宣布在 Bedrock 上提供 Claude Opus 5.5,于 2026-09-28 宣布提供 Sonnet 5.5,并于 2026-10-07 宣布提供 Haiku 5.5,因此不带版本的 claude-opus、claude-sonnet 和 claude-haiku 现在会解析为 5.5 模型。

这些条目之间唯一不同的是 temperature。Anthropic 已弃用 Claude Opus 4.7 及更高版本的 temperature / top_p / top_k,非默认值会导致 400 错误,因此 text-models.json 将这些条目标记为 noTemperature,此服务会省略这些参数——虽然接受 temperature 参数,但不会生效。这三款 5.5 模型也会返回相同的 400 错误(于 2026-10-21 探测);GPT-6.1 Sol 和 Terra、Grok 4.7 以及 Kimi K3 也会如此(“This model doesn't support the temperature field”,于 2026-11-01 探测)。Gemma 4 和其他开放权重模型支持该参数。Claude Haiku 4.5、Opus 4.6 和 Sonnet 4.6 仍会遵循此参数,因此若要在 Claude 模型上设置该参数,请固定使用 claude-sonnet-4.6 或 claude-haiku-4.5。

text-models.json 中的 maxTokens 值是此服务在调用未指定 max_tokens 时发送的默认输出上限——有意设得低于模型自身的上限(Anthropic 文档说明,Fable 5.1、5.5 和 5 的最大输出为 128K,Haiku 4.5 为 64K)。单次调用时传入 max_tokens 即可提高上限。

结构化输出和推理强度

bedrock_ask 和 bedrock_compare 上的 schema 会将 JSON Schema 作为 Converse outputConfig.textFormat 发送,因此回复是符合该 Schema 的 JSON,并以美化格式显示。 对象 Schema 需要 "additionalProperties": false;Bedrock 会对数值和字符串长度约束(如 minimum、maxLength 等)返回 400。已在注册表中的每个模型上进行测试(2026-10-21,以及新添加模型的 2026-11-01):全部 10 个 Claude 模型、GPT-6.1 Sol 和 Terra、两种 GPT-OSS 模型、Grok 4.7、Kimi K3、Mistral Large 3、 Ministral 3、全部 3 种 Qwen3 模型、DeepSeek V3.2、MiniMax M2.5、Nemotron 3 Super 和 3 种 Gemma 4 模型均支持该功能(在 bedrock_list_models 中显示为 structured_output;Gemma 会将其 作为 Chat Completions response_format 发送)。Nova 和 Pixtral 会回复“This model doesn't support the outputConfig field”,而 Magistral Small 虽接受该字段,却会 忽略 Schema,因此本服务会在调用产生费用前拒绝该请求。GPT-OSS 会在 JSON 前多输出一个字符(B{...}); 回复解析器会跳过第一个左花括号之前的所有内容。

effort(low、medium、high、xhigh、max)通过 Converse outputConfig.effort 设置思考深度和 Token 消耗。除 Haiku 4.5 外,所有 Claude 模型都支持该参数; GPT-6.1 Sol 和 Terra、Grok 4.7 以及 Kimi K3 也支持(已于 2026-11-01 测试)。Gemma 4 将 low 至 xhigh 作为 Chat Completions reasoning_effort 接收,但对 max 会返回 400(“not supported with this model”)。Claude Opus 5.5 和 Haiku 5.5 默认使用 medium,其他 Claude 模型默认使用 high。在 2026-10-21,对“How many primes are below 100?”这个问题,Haiku 5.5 在 low 下消耗 3 个输出 Token, 在 max 下消耗 60 个,答案相同。对于不支持 effort 的模型,bedrock_ask 会拒绝该参数; bedrock_compare 和 bedrock_judge 只会将其应用于支持该参数的候选模型,因此混合列表中的 Claude 答案也可以用同一个值调整。

图像(InvokeModel API)
模型别名区域
Stable Image Ultra(默认)stable-ultraus-west-2
Stable Diffusion 3.5 Largesd3.5us-west-2
Stable Image Corestable-coreus-west-2

Stability 模型接收的是宽高比,而不是像素尺寸。width 和 height 参数只用于选择最接近的受支持比例(1:1、16:9、9:16、 3:2、2:3、4:5、5:4、21:9、9:21);输出像素尺寸由模型决定。bedrock_generate_image 报告的尺寸是从保存的 PNG 中读取的,因此是实际输出尺寸,而非请求的尺寸。

图像编辑(InvokeModel API)

bedrock_edit_image 接受本地 PNG、JPEG 或 WebP(image_path)以及一个 operation。 每个操作对应 Stability AI 的一种图像服务,通过其位于 us-west-2 的美国推理配置文件 (us.stability.*)调用。

操作服务除图像外还需要还接受
inpaintStable Image Inpaintpromptmask_path、grow_mask
outpaintStable Image Outpaintleft、right、up、down(像素)中的一个prompt、creativity
eraseStable Image Erase Object-mask_path、grow_mask
remove-backgroundStable Image Remove Background--
search-replaceStable Image Search and Replaceprompt、search_promptgrow_mask
search-recolorStable Image Search and Recolorprompt、select_promptgrow_mask
upscale-fastStable Image Fast Upscale--
upscale-conservativeStable Image Conservative Upscalepromptcreativity
upscale-creativeStable Image Creative Upscalepromptcreativity
control-sketchStable Image Control Sketchpromptcontrol_strength
control-structureStable Image Control Structurepromptcontrol_strength
style-guideStable Image Style Guidepromptfidelity、aspect_ratio
style-transferStable Image Style Transferstyle_image_pathprompt、composition_fidelity、style_strength、change_strength

大多数操作还接受 negative_prompt、seed 和 style_preset。如果操作不接受某个字段,或缺少必填字段,系统会在调用计费前拒绝请求。若未提供 mask_path,inpaint 和 erase 会使用输入图像的 Alpha 通道作为蒙版。系统只会读取并发送 PNG、JPEG 和 WebP 文件,因此即使路径输入错误,也不会将其他本地文件发送到 Bedrock。每次调用按图像计费;Conservative 和 Creative Upscale 的费用是其他服务的数倍 (AWS Bedrock 定价)。

视频(Async API)
模型别名时长分辨率区域
Luma Ray 2luma-ray、ray25s 或 9s720pus-west-2

输出 S3 存储桶必须位于 us-west-2(与模型所在区域相同)。

AWS 将 Amazon Nova Canvas/Reel 和 Titan Image 标记为生命周期结束后,我们移除了这些模型(Nova Canvas 和 Nova Reel 的生命周期结束日期为 2026-09-30)。注册表仅提供 ACTIVE 模型:AWS 会阻止新客户使用 Legacy 模型。npm run lifecycle 会针对 AWS 的公开生命周期页面检查每个注册表 ID(无需凭证);CI 每周以及每次注册表变更时都会运行此检查。

嵌入(InvokeModel API)
模型别名维度
Amazon Titan Text Embeddings V2titan-v21024
Amazon Titan Multimodal Embeddingstitan-multimodal1024
Cohere Embed v4cohere1536

bedrock_embed_similarity 只发送文本,因此此处通过文本路径调用 Titan Multimodal,其行为与维度同为 1024 的 titan-v2 相同。Cohere Embed v3 的别名(cohere-en、cohere-multi)现在会解析为 Embed v4,后者支持英语和多语言文本。Titan 每次请求只能嵌入一段文本,因此此服务会一次发送 8 段文本。

你也可以直接传入任何有效的 Bedrock 模型 ID。注意:许多基础模型需要使用跨区域推理配置文件(us. 前缀)进行按需调用;注册表为每个模型使用可正常运行的形式。

模型可用性因区域和账户而异。 注册表中的 ID 已验证可在 us-east-1 使用,但个别模型可能尚未在你的区域启用,或未授权给你的账户。无法访问的模型会返回明确的错误(在 bedrock_compare 中逐个模型处理);其余模型仍可正常使用。请在 AWS Console 的 Bedrock > Model access 下启用模型。

设置

前置条件
  • Node.js >= 22(Node 20 已于 2026-04-30 终止生命周期;CI 使用 22、24 和 26)
  • 已配置 AWS 凭证(Bearer 令牌、环境变量、~/.aws/credentials、SSO 或 IAM 角色)
  • 已在 AWS 账户中启用 Bedrock 模型访问权限(在 AWS Console 的 Bedrock > Model access 下申请访问权限)
安装

此服务已发布到 npm,名称为 bedrock-multi-model-mcp,并已列入 MCP Registry,注册名称为 io.github.Sagargupta16/bedrock-multi-model-mcp,因此 MCP 客户端可以通过 npx 启动它,无需克隆或构建。

在 Claude Code 中配置

只需一条命令:

claude mcp add --transport stdio --scope user bedrock \
  --env AWS_REGION=us-east-1 \
  --env AWS_BEARER_TOKEN_BEDROCK=ABSK... \
  -- npx -y bedrock-multi-model-mcp

或者手动将其添加到 Claude Code 的 MCP 设置(~/.claude.json)中:

{
  "mcpServers": {
    "bedrock": {
      "command": "npx",
      "args": ["-y", "bedrock-multi-model-mcp"],
      "env": {
        "AWS_BEARER_TOKEN_BEDROCK": "ABSK...",
        "AWS_REGION": "us-east-1"
      }
    }
  }
}
在 Claude Desktop 中配置

在 claude_desktop_config.json 中使用相同的服务配置块:

  • macOS:~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows:%APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "bedrock": {
      "command": "npx",
      "args": ["-y", "bedrock-multi-model-mcp"],
      "env": {
        "AWS_BEARER_TOKEN_BEDROCK": "ABSK...",
        "AWS_REGION": "us-east-1",
        "BEDROCK_MCP_OUTPUT_DIR": "C:\\Users\\you\\bedrock-images"
      }
    }
  }
}
从源码运行

如需修改此服务或固定使用本地构建版本,请克隆并构建,然后将 MCP 配置指向 node /path/to/bedrock-multi-model-mcp/dist/index.js,而不是 npx:

git clone https://github.com/Sagargupta16/bedrock-multi-model-mcp.git
cd bedrock-multi-model-mcp
npm install
npm run build

在 Desktop 中,请显式设置 BEDROCK_MCP_OUTPUT_DIR:在 Windows 上,它会从受写保护的目录 (C:\Windows\System32)启动服务,因此无法使用默认的“保存到当前工作目录旁边”行为,生成的图像会保存到 ~/bedrock-images/。

环境变量
变量默认值说明
AWS_REGIONus-east-1Bedrock API 调用使用的 AWS 区域
AWS_DEFAULT_REGION-回退区域,仅在未设置 AWS_REGION 时使用
AWS_BEARER_TOKEN_BEDROCK-Bedrock API Key Bearer 令牌(推荐)
AWS_ACCESS_KEY_ID-AWS 访问密钥(未使用 Bearer 令牌/SSO 时)
AWS_SECRET_ACCESS_KEY-AWS 秘密访问密钥(未使用 Bearer 令牌/SSO 时)
AWS_PROFILE-~/.aws/credentials 中的命名 AWS 配置文件
BEDROCK_MCP_OUTPUT_DIRcwd(或 cwd 不可写时使用 ~/bedrock-images)生成图像的默认输出目录。可由工具参数 output_dir 覆盖。目录会自动创建。
身份验证

此服务支持两种身份验证方式:

  1. Bedrock API Key(Bearer 令牌) - 设置 AWS_BEARER_TOKEN_BEDROCK。AWS SDK 会读取此值,并优先于任何 IAM 凭证将其作为 Authorization: Bearer 发送。若变量已设置但值为空(例如,MCP 配置传入 "${AWS_BEARER_TOKEN_BEDROCK}",但客户端自身的环境中没有该变量),则会忽略此值,改用 IAM 凭证链进行身份验证,而不会导致每次调用都因“未定义 token”而失败。
  2. IAM 凭证 - 使用标准 AWS 凭证链(环境变量、配置文件、SSO、IAM 角色)。除 Gemma 4 外,所有模型都可通过此方式使用;此服务只能通过 Bearer 令牌访问 Gemma 4 的 bedrock-mantle 端点。

使用示例

向单个模型提问
"Use bedrock_ask to ask kimi to explain Docker in 3 sentences"
获取符合架构的 JSON
"Use bedrock_ask with claude-haiku, effort low, and a schema with category, subcategory and amount_inr: Swiggy order, Mattar Paneer Meal, 203 rupees"
比较模型
"Use bedrock_compare with kimi, nova-pro, and mistral-large: What are the pros and cons of microservices?"

bedrock_compare 会针对列表中的每个模型执行一次完整生成,每次生成都会单独计费——三个模型就是三次生成,五个模型就是五次。此服务不添加任何加价,也不设置费率;费用完全由 AWS Bedrock 按模型和令牌计收。当前费率:AWS Bedrock 定价,Claude 模型的定价请参阅 Anthropic 定价。

让评审选出最佳答案
"Use bedrock_judge with kimi, nova-pro and deepseek: In two sentences, when should a team pick SQS over SNS?"

候选模型并行作答。随后,评审(默认为 claude-opus,可通过 judge 覆盖)会看到经过随机排序的答案,答案标记为 A、B、C,且已移除模型名称;评审会为每个答案打 1 到 10 分,并选出获胜者。该工具会将标记映射回模型,并返回排名表、评审的推理过程以及所有答案。如果评审支持结构化输出(默认的 Opus 5.5 支持),工具会要求评审按照一个架构给出判定,其中 winner 只能是其中一个标记,因此始终可以解析。传入 criteria 可更改评分标准,传入 synthesize: true 还可获取一份合并后的答案。失败的候选会列在 失败 下,其余候选仍会接受评审;如果评审调用失败,答案仍会返回。费用按每个候选模型生成一次,加上评审生成一次计算。

生成图像
"Use bedrock_generate_image with stable-ultra: A futuristic Tokyo street at night, neon lights, rain"
编辑图像
"Use bedrock_edit_image to remove the background from ./photo.png"
"Use bedrock_edit_image with search-replace on ./street.png: replace the car with a blue pickup truck"
生成视频
"Use bedrock_generate_video: Closeup of ocean waves crashing on rocks at sunset, s3_uri: s3://my-bucket/videos/"
比较文本相似度
"Use bedrock_embed_similarity to compare: 'a cat', 'a kitten', 'a car'"

架构

工具调用到达 Bedrock 的方式:Claude Code 或 Claude Desktop 等 MCP 客户端通过 stdio 向 bedrock-multi-model-mcp 服务的 9 个 MCP 工具发送 JSON-RPC 请求;这些工具在 index.ts 中定义,并使用 Zod 输入架构。bedrock_list_models 直接读取模型注册表;其他工具均调用 API 封装器(converse、image、edit、video 或 embed),封装器从 src/data/*.json 中的注册表读取模型别名、区域和请求格式,并在加载时使用 Zod 校验。封装器通过 Bedrock 客户端发送请求,每个区域对应一个缓存的 SDK 客户端;客户端使用 bearer token 或 IAM 凭证链进行身份验证。工具调用被取消时,会中止相应的 Bedrock 请求。Gemma 4 调用从封装器直接通过 HTTPS 携带 bearer token 发送到 Bedrock 的 bedrock-mantle 端点。Converse 和嵌入调用(InvokeModel)会发送到 us-east-1 的 Amazon Bedrock,或发送到 AWS_REGION 指定的区域。图像调用(InvokeModel、Stability)和视频任务(StartAsyncInvoke、Luma Ray 2)会发送到 us-west-2 的 Amazon Bedrock;异步视频任务会将 MP4 写入 s3_uri 参数指定的 S3 存储桶。图像封装器会解码返回的图像,并将其保存为 output_dir、BEDROCK_MCP_OUTPUT_DIR 或工作目录中的本地 PNG 文件。

图片背后的规范位于 docs/diagrams/architecture.yaml,使用 orrery 渲染。

工具调用会根据注册表解析模型别名,从对应条目中选取请求格式和区域,然后通过该区域对应的缓存 SDK 客户端发送请求。请求会携带 MCP 调用的中止信号,因此客户端取消工具调用(或放弃等待)时,服务会停止等待 Bedrock:2026-11-01,一次在 400 ms 时中止的 Nova Micro 调用于 412 ms 时结束;同一调用若任其完成则需要 6.4 s。 bedrock_generate_video 是个例外,因为取消已经发出的 StartAsyncInvoke 可能会导致一个仍在运行且已计费的任务无法获取 ARN 进行跟踪。

src/
  index.ts          # MCP server - tool registration, stdio transport
  judge.ts          # bedrock_judge - blind labels, judge prompt, verdict parsing
  models.ts         # Loads + validates registry data, resolves aliases
  types.ts          # Zod schemas for model data validation
  bedrock/
    client.ts       # Shared region/auth config, one cached SDK client per region
    converse.ts     # Converse API wrapper (text models), dispatches mantle models
    mantle.ts       # bedrock-mantle Chat Completions wrapper (Gemma 4)
    image.ts        # InvokeModel wrapper (image models)
    edit.ts         # InvokeModel wrapper (Stability image-edit services)
    video.ts        # Async invoke wrapper (video models)
    embed.ts        # InvokeModel wrapper (embeddings) + cosine similarity
  data/
    text-models.json       # Text model registry (data, not code)
    image-models.json      # Image model registry
    image-edit-models.json # Image-edit service registry (operation, required and optional fields)
    video-models.json      # Video model registry
    embedding-models.json  # Embedding model registry
scripts/
  call-tool.mjs     # Minimal stdio MCP client: list tools or call one
  benchmark.mjs     # Latency benchmark across every text model
  check-lifecycle.mjs # Fails if a registry model is Legacy or EOL on AWS's lifecycle page

模型定义以数据形式保存在 src/data/*.json 中,并在加载时使用 Zod 架构进行校验,因此无需更改逻辑即可更新目录。构建过程会将这些 JSON 文件复制到 dist/data/。

  • 文本:使用 Converse API,为文本模型提供统一接口;Gemma 4 除外,它使用 bedrock-mantle Chat Completions
  • 图像:使用 InvokeModel,并采用 Stability 请求格式(提示词和宽高比)
  • 图像编辑:使用 InvokeModel,并采用 Stability AI Image Services 请求格式(base64 输入图像及各服务专属字段)
  • 视频:使用 StartAsyncInvoke,输出需要 S3 存储桶
设计决策
决策原因
对 bedrock-runtime 上的所有文本模型使用 Converse API十个提供商使用相同的请求和响应格式,因此添加文本模型只需添加一条 JSON 配置,而不必新增代码路径。
通过 bedrock-mantle 调用 Gemma 4,并使用相同的选项Gemma 4 没有 Converse API。它的请求由相同的 buildConverseInput 构建(选项检查、输出上限、温度规则),只有传输方式不同,因此 compare 和 judge 可以将它与 Converse 模型混合使用。
将模型目录设为 JSON + Zod注册表格式错误或只编辑了一半时,会在启动时失败,而不是等到首次调用时才失败。能力采用封闭枚举,因此像 tool-use 这样的拼写错误会在加载时被拒绝。
每个模型设置 noTemperature 标记Claude Opus 4.7 及更高版本、GPT-6.1、Grok 4.7 和 Kimi K3 会因 temperature 返回 400;该标记会仅对这些条目移除此参数。
使用经过实测的 effort 和 structured_output 标记已对注册表中的每个模型进行实时探测,因此不支持的选项会在计费调用前报错,并列出支持该选项的模型。注册表以外的 ID 会直接传递给 Bedrock 判定。
按区域缓存 SDK 客户端文本和嵌入模型在 AWS_REGION 中运行,而 Stability 和 Luma 模型仅在 us-west-2 提供。
在 bedrock_compare 中使用 Promise.allSettled某个模型无权访问,或某次调用遭到限流时,会单独报告其错误,其他模型仍会返回结果。
在 bedrock_judge 中使用盲测并打乱答案顺序LLM 评审容易偏好排在前面的答案或特定名称。评审只会看到随机排序的标签,工具随后会将答案映射回对应模型。
取消调用时中止 Bedrock 请求客户端放弃工具调用后,服务端不应继续等待并为无人查看的答案付费。视频启动请求不予中止,因为取消启动可能留下已计费但没有 ARN 的任务。
每周检查生命周期AWS 会在 Legacy 模型 EOL 日期前数月禁止新客户使用,因此 scripts/check-lifecycle.mjs 会在每次注册表变更时以及每周将注册表与 AWS 的生命周期页面进行比对。
从已保存的 PNG 读取图像尺寸Stability 模型接收宽高比并自行选择像素,因此回显请求的尺寸会造成错误。
将图像编辑服务作为数据配置,并在调用前检查每项服务的必填字段和可选字段都存放在 image-edit-models.json 中,因此 bedrock_edit_image 会在 Bedrock 为图像计费前拒绝缺失或不受支持的字段。
根据输入文件的起始字节进行检查bedrock_edit_image 会读取本地路径,因此只有起始字节符合 PNG、JPEG 或 WebP 格式的文件才会发送给 Bedrock。
验证任务 ARN 中的区域区域决定请求主机,因此精心构造的 ARN 中未经检查的值可能会将签名请求发送到其他服务。

基准测试

2026-10-18 注册表(0.5.0 目录)中的所有文本模型,使用相同的提示词、相同的机器,通过 scripts/benchmark.mjs 各运行一次。其中 8 个模型后来已从注册表中移除(参见 0.7.0 更新日志)。延迟包含从该机器到所在区域的网络往返时间,因此应将其视为本次运行中的排名,而非适用于你自己的设置的数据。每次调用的原始数据位于 docs/benchmark/results.json;你可以使用自己的账户重新运行(每次调用均按模型正常费率计费),命令为 npm run benchmark;也可以使用已保存的数据重新生成表格,命令为 node scripts/benchmark.mjs --from docs/benchmark/results.json。

由 scripts/benchmark.mjs 于 2026-10-18 在 us-east-1 测得:每个模型使用 2 个提示词、每个提示词运行 3 次,接受温度参数时设为 0,输出上限为 256 个 token。26 个模型均有响应,156 次调用全部成功。延迟是整个调用的客户端墙钟时间中位数,按从快到慢排序。“达到上限”统计被截断在 256 个 token 的回答,这也限制了它们的 token 数量。

模型提供方延迟中位数(秒)输出 token 数中位数输出 token 速率中位数(token/秒)达到上限成功
Nova LiteAmazon1.13565006/6
Nova MicroAmazon1.18594606/6
Mistral Large 3 (675B)Mistral1.25615006/6
Qwen3 Coder NextQwen1.29713706/6
Llama 4 Maverick 17BMeta1.35876506/6
Llama 4 Scout 17BMeta1.36997106/6
Nova ProAmazon1.49614306/6
GPT-OSS 20BOpenAI1.5020611426/6
Llama 3.3 70B InstructMeta1.521076606/6
Nova 2 LiteAmazon1.55805306/6
GPT-OSS 120BOpenAI1.821528816/6
Devstral 2 (123B)Mistral1.88633506/6
Pixtral LargeMistral2.06854206/6
Claude Sonnet 4.6Anthropic2.10773606/6
Qwen3 VL 235BQwen2.15582806/6
Mistral SmallMistral2.31984206/6
DeepSeek R1DeepSeek2.3525610966/6
Claude Haiku 4.5Anthropic2.381797136/6
Claude Opus 4.7Anthropic2.40983906/6
Claude Sonnet 5Anthropic2.69983606/6
Claude Opus 4.8Anthropic2.791113906/6
Claude Opus 4.6Anthropic3.42802406/6
Claude Fable 5Anthropic4.181343006/6
Claude Opus 5Anthropic4.461543016/6
DeepSeek V3.2DeepSeek4.60551306/6
Claude Fable 5.1Anthropic5.611272106/6

无需 MCP 客户端即可试用工具

scripts/call-tool.mjs 会通过 stdio 启动构建好的服务(与 Claude Code 的方式相同),并使用 shell 中的 AWS 凭证调用一个工具:

npm run build
node scripts/call-tool.mjs                       # list the tools
node scripts/call-tool.mjs bedrock_ask '{"model":"nova-micro","prompt":"Say hi"}'

故障排查

错误原因解决方法
The provided model identifier is invalid.该 ID 无法在 Bedrock 上解析,通常是缺少 us. 跨区域推理配置文件前缀,或模型未在你的区域提供。使用注册表别名(bedrock_list_models),或在完整 ID 前添加 us. 前缀。
`temperature` is deprecated for this model.请求使用了 Claude 4.7 或更高版本的模型,但该模型没有注册表条目,因此服务发送了默认 temperature 值 0.7。Anthropic 已弃用 Claude Opus 4.7 及更高版本的 temperature / top_p / top_k,非默认值会导致该模型返回 400。较早的模型(Haiku 4.5、Opus 4.6、Sonnet 4.6)仍接受此参数。通过已注册的别名调用,或在 src/data/text-models.json 中添加带有 "noTemperature": true 的注册表条目。
<model> does not support structured output / does not take effort此服务的注册表显示该模型不接受该选项(测量日期为 2026-10-21 和 2026-11-01)。从消息中的列表选择模型,或移除 schema / effort。
This model doesn't support the outputConfig field.注册表之外的模型拒绝了 schema 或 effort。对该模型移除此选项。
This model doesn't support the temperature field.注册表之外且不接受 temperature 的模型(GPT-6.1、Grok 和 Kimi 都如此)收到了服务的默认值 0.7。通过已注册的别名调用,或添加带有 "noTemperature": true 的注册表条目。
Could not load credentials from any providers没有 bearer 令牌传到服务(或令牌为空),且未解析到 IAM 凭证。将有效令牌放入 MCP 配置的 env 中,或配置 AWS 配置文件、SSO 或 IAM 角色。
AccessDeniedException你的账户尚未获准访问该模型。在 AWS Console > Bedrock > Model access 中申请该模型,待其显示 Access granted 后重试。
bedrock_video_status reports FailedBedrock 会在任务本身返回原因。阅读状态信息下方打印的 Reason: 行,并解决其中指出的问题。

错误字符串会原样显示 Bedrock 返回的内容。请注意,temperature 错误是此服务的注册表缺漏,并非 IAM 或模型访问问题,因此无需在 AWS 中进行任何修复。

贡献

设置、两项必需检查以及添加模型的规则(注册表数据 + 测试断言 + 对模型 ID 进行实时探测),请参阅 CONTRIBUTING.md。 安全问题应通过 SECURITY.md 中的私密渠道提交,而非公开问题。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。