bedrock-multi-model-mcp
Provides access to Amazon Nova text models (Nova Pro, Nova 2 Lite, Nova Lite, Nova Micro) through AWS Bedrock, allowing prompts, multi-model comparisons and blind judging alongside other providers' models.
Provides access to Google Gemma 4 models (31B, 26B A4B, E2B) via Bedrock's OpenAI-compatible bedrock-mantle endpoint, supporting prompting, structured output, reasoning effort and comparison with Converse-based models.
Provides access to NVIDIA Nemotron 3 Super 120B on AWS Bedrock for text generation, comparison against other models, and structured JSON output.
Provides access to OpenAI models on AWS Bedrock (GPT-6.1 Sol and Terra, GPT-OSS 120B and 20B) for prompting, multi-model comparison, blind judging, structured output and thinking-effort control.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@bedrock-multi-model-mcpCompare Claude Sonnet and GPT-5 on explaining the CAP theorem"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
bedrock-multi-model-mcp
MCP server for AWS Bedrock - text, image, video and embeddings from any model. Use Claude, GPT, Grok, Kimi, Gemma, Mistral, Nova, Qwen, DeepSeek, and more from Claude Code (or any MCP client).
Why: Bedrock already gives one AWS account access to models from eleven text providers, but each one is a different model ID, inference profile, region and request shape. This server puts them behind nine MCP tools and one set of AWS credentials, so an agent can ask a second model for a review, run the same prompt across five models side by side, have a judge model score those answers blind, or generate and edit an image, without leaving the chat or writing SDK code.
At a glance: 33 text models from 11 providers, 3 image models, 13 image-editing services, 1 video model and 3 embedding models, all defined as data in src/data/ and validated at startup. The 26 text models in the 2026-10-18 benchmark answered every call. Since that run, Claude Opus 5.5, Sonnet 5.5 and Haiku 5.5 and, in 0.7.0, twelve models from OpenAI, xAI, Moonshot AI, Google, MiniMax, NVIDIA, Mistral and Qwen joined the registry, while the five models AWS moved to Legacy on 2026-09-30 (Llama 4 Maverick and Scout, Llama 3.3 70B, Devstral 2, DeepSeek R1) left it.
A real bedrock_judge run from 2026-10-18, called through
scripts/call-tool.mjs with the arguments in
docs/demo/judge-args.json. The output lines are excerpted from
that run with the table columns aligned; the full reply also carries the judge's reasoning
and all three answers. Llama 4 Maverick has since gone Legacy on Bedrock and left the
registry, so swap llama4 for another model to rerun it.
Tools
Tool | Description |
| Send a prompt to any text model. Returns response with token counts and latency. |
| Same prompt to 2-5 models side by side. Compare quality, speed, and style. Takes |
| Same prompt to 2-5 models, then a judge model scores the answers blind and picks a winner, optionally merging them into one answer. The verdict comes back as schema-checked JSON when the judge supports it. |
| List available text models with aliases, use cases, and capabilities. |
| Generate images from text (Stable Image Ultra, SD3.5 Large, Stable Image Core). Saves PNG locally. |
| Edit or transform a local image with the 13 Stability AI Image Services: inpaint, outpaint, erase, remove the background, find and replace or recolor an object, three upscalers, sketch and structure control, style guide and style transfer. Saves PNG locally. |
| Start async video generation (Luma Ray 2). Output to S3. |
| Check video generation job progress. |
| Embed 2+ texts (Titan, Cohere) and return a cosine-similarity matrix. |
Related MCP server: bedrock-kb-mcp-server
Supported Models
Model data lives in src/data/ (text-models.json, image-models.json, image-edit-models.json, video-models.json, embedding-models.json) - edit those files to add or remove models without touching code.
Text (Converse API, and bedrock-mantle for Gemma 4)
Provider | Models | Aliases |
Anthropic | Claude Fable 5.1, Opus 5.5, Sonnet 5.5, Haiku 5.5 (current); Fable 5, Opus 5 / 4.6, Sonnet 5 / 4.6, Haiku 4.5 (previous-gen) |
|
OpenAI | GPT-6.1 Sol, GPT-6.1 Terra, GPT-OSS 120B, GPT-OSS 20B |
|
xAI | Grok 4.7 |
|
Moonshot AI | Kimi K3 |
|
Mistral | Mistral Large 3, Ministral 3 14B, Magistral Small, Pixtral Large |
|
Amazon | Nova Pro, Nova 2 Lite, Nova Lite, Nova Micro |
|
Qwen | Qwen3 Coder Next, Qwen3 VL 235B, Qwen3 Next 80B A3B |
|
DeepSeek | DeepSeek V3.2 |
|
Gemma 4 31B, Gemma 4 26B A4B, Gemma 4 E2B (bedrock-mantle) |
| |
MiniMax | MiniMax M2.5 |
|
NVIDIA | Nemotron 3 Super 120B |
|
Gemma 4 is served only on Bedrock's OpenAI-compatible bedrock-mantle endpoint, not
through Converse, so those entries carry "api": "mantle" and the server calls their
Chat Completions API (https://bedrock-mantle.<region>.api.aws/openai/v1) instead. Every
tool works with them, side by side with Converse models in bedrock_compare and
bedrock_judge. They need AWS_BEARER_TOKEN_BEDROCK: AWS also accepts SigV4 on that
endpoint, but this server does not sign mantle requests.
Listed on Bedrock but not in the registry: GLM 5.3 and Claude Mythos 5.1 (access is gated per account; both failed the 2026-11-01 probe), and Grok 4.3 (answers on bedrock-mantle, but Grok 4.7 supersedes it). AWS lists no Active Meta model.
Bare-tier aliases (fable, claude-opus, claude-sonnet, claude-haiku, gpt-sol,
gpt-terra) track the current model in that tier; version-pinned aliases (fable-5,
claude-opus-5, claude-sonnet-5, claude-haiku-4.5, claude-opus-4.6,
claude-sonnet-4.6) keep the previous generations reachable. AWS announced Claude Opus 5.5 on Bedrock on 2026-09-22,
Sonnet 5.5 on 2026-09-28 and Haiku 5.5 on 2026-10-07, so the bare claude-opus,
claude-sonnet and claude-haiku now resolve to the 5.5 models.
temperature is the one thing that differs across those entries. Anthropic deprecated
temperature / top_p / top_k for Claude Opus 4.7 and later, where a non-default
value returns a 400, so text-models.json marks those entries noTemperature and this
server omits the parameter for them - the temperature argument is accepted but has no
effect. The three 5.5 models return the same 400 (probed 2026-10-21), and so do GPT-6.1
Sol and Terra, Grok 4.7 and Kimi K3 ("This model doesn't support the temperature field",
probed 2026-11-01). Gemma 4 and the other open-weight models take it. Claude Haiku 4.5,
Opus 4.6 and Sonnet 4.6 still honor it, so pin
claude-sonnet-4.6 or claude-haiku-4.5 if you need to set it on a Claude model.
The maxTokens value in text-models.json is the default output cap this server
sends when a call omits max_tokens - deliberately below the model's own ceiling
(Anthropic documents 128K max output for Fable 5.1 and the 5.5 and 5 models, 64K for
Haiku 4.5). Pass max_tokens to go higher on a single call.
Structured output and effort
schema on bedrock_ask and bedrock_compare sends a JSON schema as Converse
outputConfig.textFormat, so the reply is JSON that matches it, shown pretty-printed.
Object schemas need "additionalProperties": false; Bedrock rejects numeric and string
length constraints (minimum, maxLength and the like) with a 400. Probed on every
registry model (2026-10-21, and 2026-11-01 for the models added then): all 10 Claude
models, GPT-6.1 Sol and Terra, both GPT-OSS models, Grok 4.7, Kimi K3, Mistral Large 3,
Ministral 3, all three Qwen3 models, DeepSeek V3.2, MiniMax M2.5, Nemotron 3 Super and the
three Gemma 4 models accept it (structured_output in bedrock_list_models; for Gemma it
is sent as Chat Completions response_format). Nova and Pixtral answer "This
model doesn't support the outputConfig field", and Magistral Small accepts the field but
ignores the schema, so this server refuses the call before it is billed. GPT-OSS puts a
stray character before its JSON (B{...}); the reply parser skips anything before the
first brace.
effort (low, medium, high, xhigh, max) sets the thinking depth and token
spend through Converse outputConfig.effort. Every Claude model except Haiku 4.5 takes
it, and so do GPT-6.1 Sol and Terra, Grok 4.7 and Kimi K3 (probed 2026-11-01). Gemma 4
takes low to xhigh as Chat Completions reasoning_effort and answers max with a
400 ("not supported with this model"). Claude
Opus 5.5 and Haiku 5.5 default to medium, the other Claude models to high. On
2026-10-21, "How many primes are below 100?" cost Haiku 5.5 3 output tokens at low
and 60 at max, with the same answer. bedrock_ask rejects effort for a model that
does not take it; bedrock_compare and bedrock_judge apply it only to the candidates
that do, so one value can tune the Claude answers in a mixed list.
Image (InvokeModel API)
Model | Alias | Region |
Stable Image Ultra (default) |
| us-west-2 |
Stable Diffusion 3.5 Large |
| us-west-2 |
Stable Image Core |
| us-west-2 |
Stability models take an aspect ratio, not pixel dimensions. The width and
height arguments only select the closest supported ratio (1:1, 16:9, 9:16,
3:2, 2:3, 4:5, 5:4, 21:9, 9:21); the model picks the output pixels. The
size reported by bedrock_generate_image is read back out of the saved PNG, so it
is the real output size rather than what you asked for.
Image editing (InvokeModel API)
bedrock_edit_image takes a local PNG, JPEG or WebP (image_path) and an operation.
Each operation is one of Stability AI's image services, called through its US inference
profile (us.stability.*) from us-west-2.
Operation | Service | Needs besides the image | Also takes |
| Stable Image Inpaint |
|
|
| Stable Image Outpaint | one of |
|
| Stable Image Erase Object | - |
|
| Stable Image Remove Background | - | - |
| Stable Image Search and Replace |
|
|
| Stable Image Search and Recolor |
|
|
| Stable Image Fast Upscale | - | - |
| Stable Image Conservative Upscale |
|
|
| Stable Image Creative Upscale |
|
|
| Stable Image Control Sketch |
|
|
| Stable Image Control Structure |
|
|
| Stable Image Style Guide |
|
|
| Stable Image Style Transfer |
|
|
Most also take negative_prompt, seed and style_preset. A field the operation does
not take, or a missing required one, is refused before the call is billed. Without
mask_path, inpaint and erase use the input image's alpha channel as the mask. Only
PNG, JPEG and WebP files are read and sent, so a mistyped path never ships some other
local file to Bedrock. Each call is billed per image; Conservative and Creative Upscale
cost several times more than the other services
(AWS Bedrock pricing).
Video (Async API)
Model | Alias | Duration | Resolution | Region |
Luma Ray 2 |
| 5s or 9s | 720p | us-west-2 |
The output S3 bucket must be in us-west-2 (same region as the model).
Amazon Nova Canvas/Reel and Titan Image were removed when AWS marked them
end-of-life (Nova Canvas and Nova Reel EOL 2026-09-30). The registry only ships ACTIVE
models: AWS blocks new customers from Legacy ones. npm run lifecycle checks every
registry id against AWS's public lifecycle page (no credentials needed), and CI runs it
weekly and on every registry change.
Embeddings (InvokeModel API)
Model | Alias | Dimensions |
Amazon Titan Text Embeddings V2 |
| 1024 |
Amazon Titan Multimodal Embeddings |
| 1024 |
Cohere Embed v4 |
| 1536 |
bedrock_embed_similarity only sends text, so Titan Multimodal is exercised through
its text path here and behaves like titan-v2 at the same 1024 dimensions. The Cohere
Embed v3 aliases (cohere-en, cohere-multi) now resolve to Embed v4, which covers
English and multilingual text. Titan embeds one text per request, so this server sends
8 at a time.
You can also pass any valid Bedrock model ID directly. Note: many foundation models require a cross-region inference profile (us. prefix) for on-demand invocation - the registry uses the working form for each model.
Model availability varies by region and account. The registry IDs are verified working in
us-east-1, but individual models may not be enabled in your region or granted to your account. Models you can't access return a clear error (per-model inbedrock_compare); the rest still work. Enable models in the AWS Console under Bedrock > Model access.
Setup
Prerequisites
Node.js >= 22 (Node 20 reached end of life on 2026-04-30; CI runs 22, 24 and 26)
AWS credentials configured (bearer token, env vars,
~/.aws/credentials, SSO, or IAM role)Bedrock model access enabled in your AWS account (request access in the AWS Console under Bedrock > Model access)
Install
The server is published on npm as
bedrock-multi-model-mcp and listed
on the MCP Registry as
io.github.Sagargupta16/bedrock-multi-model-mcp, so an MCP client can start it with npx
and nothing has to be cloned or built.
Configure in Claude Code
One command:
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-mcpOr add it by hand to your Claude Code MCP settings (~/.claude.json):
{
"mcpServers": {
"bedrock": {
"command": "npx",
"args": ["-y", "bedrock-multi-model-mcp"],
"env": {
"AWS_BEARER_TOKEN_BEDROCK": "ABSK...",
"AWS_REGION": "us-east-1"
}
}
}
}Configure in Claude Desktop
Same server block, in claude_desktop_config.json:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%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"
}
}
}
}Run from source
To change the server or pin it to a local build, clone and build it, then point the MCP
config at node /path/to/bedrock-multi-model-mcp/dist/index.js instead of npx:
git clone https://github.com/Sagargupta16/bedrock-multi-model-mcp.git
cd bedrock-multi-model-mcp
npm install
npm run buildSet BEDROCK_MCP_OUTPUT_DIR explicitly for Desktop: on Windows it spawns the server
from a write-protected directory (C:\Windows\System32), so the default "save next to
cwd" behavior cannot apply and generated images fall back to ~/bedrock-images/.
Environment Variables
Variable | Default | Description |
|
| AWS region for Bedrock API calls |
| - | Fallback region, used only when |
| - | Bedrock API Key bearer token (recommended) |
| - | AWS access key (if not using bearer token/SSO) |
| - | AWS secret key (if not using bearer token/SSO) |
| - | Named AWS profile from |
| cwd (or | Default output directory for generated images. Overridden by the |
Authentication
The server supports two auth methods:
Bedrock API Key (bearer token) - Set
AWS_BEARER_TOKEN_BEDROCK. The AWS SDK reads it and sends it asAuthorization: Bearer, ahead of any IAM credentials. A set-but-empty value (for example an MCP config passing"${AWS_BEARER_TOKEN_BEDROCK}"from a client whose own environment lacks the variable) is ignored, so the IAM chain answers instead of every call failing with "thetokenis not defined".IAM credentials - Standard AWS credential chain (env vars, profile, SSO, IAM role). Every model works this way except Gemma 4, whose
bedrock-mantleendpoint this server reaches only with the bearer token.
Usage Examples
Ask a single model
"Use bedrock_ask to ask kimi to explain Docker in 3 sentences"Get JSON that matches a schema
"Use bedrock_ask with claude-haiku, effort low, and a schema with category, subcategory and amount_inr: Swiggy order, Mattar Paneer Meal, 203 rupees"Compare models
"Use bedrock_compare with kimi, nova-pro, and mistral-large: What are the pros and cons of microservices?"bedrock_compare runs one full generation per model in the list, and each one is
billed independently - three models is three generations, five is five. This server
adds no markup and sets no rates; billing is entirely AWS Bedrock's, per model and
per token. Current rates: AWS Bedrock pricing
and, for the Claude models, Anthropic pricing.
Let a judge pick the best answer
"Use bedrock_judge with kimi, nova-pro and deepseek: In two sentences, when should a team pick SQS over SNS?"The candidates answer in parallel. The judge (default claude-opus, override with
judge) then sees the answers shuffled and labeled A, B, C with the model names
removed, scores each from 1 to 10, and names a winner. The tool maps the labels back
to models and returns a ranked table, the judge's reasoning, and every answer. When the
judge supports structured output (the default Opus 5.5 does), the verdict is requested
against a schema whose winner can only be one of the labels, so it always parses. Pass
criteria to change what is scored and synthesize: true to also get one merged
answer. A candidate that fails is listed under Failed and the rest are still
judged; if the judge call fails, the answers still come back. Billing is one
generation per candidate plus one for the judge.
Generate an image
"Use bedrock_generate_image with stable-ultra: A futuristic Tokyo street at night, neon lights, rain"Edit an image
"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"Generate a video
"Use bedrock_generate_video: Closeup of ocean waves crashing on rocks at sunset, s3_uri: s3://my-bucket/videos/"Compare text similarity
"Use bedrock_embed_similarity to compare: 'a cat', 'a kitten', 'a car'"Architecture
The spec behind the picture is docs/diagrams/architecture.yaml, rendered with orrery.
A tool call resolves its model alias against the registry, picks the request shape and
region from that entry, and sends it through a cached SDK client for that region. The
request carries the MCP call's abort signal, so when the client cancels a tool call (or
gives up on it), the server stops waiting on Bedrock: a Nova Micro call aborted at 400 ms
settled at 412 ms on 2026-11-01, against 6.4 s for the same call left to finish.
bedrock_generate_video is the exception, because cancelling a StartAsyncInvoke that
was already sent could leave a billed job running with no ARN to track it.
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 pageModel definitions are data, kept in src/data/*.json and validated against Zod schemas at load time, so the catalog can be updated without changing logic. The build copies these JSON files into dist/data/.
Text: Uses the Converse API - unified interface across the text models, except Gemma 4, which uses bedrock-mantle Chat Completions
Image: Uses InvokeModel with the Stability request format (prompt and aspect ratio)
Image editing: Uses InvokeModel with the Stability AI Image Services request format (base64 input image plus per-service fields)
Video: Uses StartAsyncInvoke - requires S3 bucket for output
Design decisions
Decision | Why |
Converse API for every text model on bedrock-runtime | One request and response shape across ten providers, so adding a text model is a JSON entry, not a new code path. |
Gemma 4 through bedrock-mantle, behind the same options | Gemma 4 has no Converse API. Its requests are built by the same |
Model catalog as JSON + Zod | A malformed or half-edited registry fails at startup, not on the first call. Capabilities are a closed enum, so a typo like |
Per-model | Claude Opus 4.7 and later, GPT-6.1, Grok 4.7 and Kimi K3 return a 400 for |
Measured | Each was probed live on every registry model, so an unsupported option fails with the list of models that take it, before a billed call. Ids outside the registry pass through for Bedrock to judge. |
Cached SDK client per region | Text and embeddings run in |
| One model without access, or one throttled call, reports its own error while the rest still answer. |
Blind, shuffled answers in | LLM judges favor answers by position and by name. The judge sees only labels in a random order, and the tool maps them back to models afterwards. |
Cancelled calls abort the Bedrock request | A client that gave up on a tool call should not leave the server waiting on, and paying for, an answer nobody reads. Video starts are left alone, since a cancelled start could leave a billed job with no ARN. |
Weekly lifecycle check | AWS blocks new customers from Legacy models months before their EOL date, so |
Image size read from the saved PNG | Stability models take an aspect ratio and choose the pixels, so echoing the requested size back would be wrong. |
Edit services as data, checked before the call | Each service's required and optional fields live in |
Input files checked by their first bytes |
|
Region from the job ARN is validated | The region picks the request host, so an unchecked value from a crafted ARN could send the signed request to another server. |
Benchmark
Every text model in the registry on 2026-10-18 (the 0.5.0 catalog), same prompts, same
machine, one run of scripts/benchmark.mjs. Eight of these
models have since left the registry (see the 0.7.0 changelog). The latency includes the network round
trip from that machine to the region, so read it as a ranking within this run rather
than a figure for your own setup. Raw per-call data is in
docs/benchmark/results.json; rerun it on your own account
with npm run benchmark (every call is billed at the model's normal rate), or re-render
the table from saved data with node scripts/benchmark.mjs --from docs/benchmark/results.json.
Measured 2026-10-18 in us-east-1 by scripts/benchmark.mjs: 2 prompts x 3 runs per model, temperature 0 where accepted, 256-token output cap. 26 of 26 models answered, 156 of 156 calls succeeded. Latency is the median client wall-clock time for the whole call, sorted fastest first. "Hit cap" counts answers cut off at 256 tokens, which also caps their token counts.
Model | Provider | Median latency (s) | Median output tokens | Median output tokens/s | Hit cap | OK |
Nova Lite | Amazon | 1.13 | 56 | 50 | 0 | 6/6 |
Nova Micro | Amazon | 1.18 | 59 | 46 | 0 | 6/6 |
Mistral Large 3 (675B) | Mistral | 1.25 | 61 | 50 | 0 | 6/6 |
Qwen3 Coder Next | Qwen | 1.29 | 71 | 37 | 0 | 6/6 |
Llama 4 Maverick 17B | Meta | 1.35 | 87 | 65 | 0 | 6/6 |
Llama 4 Scout 17B | Meta | 1.36 | 99 | 71 | 0 | 6/6 |
Nova Pro | Amazon | 1.49 | 61 | 43 | 0 | 6/6 |
GPT-OSS 20B | OpenAI | 1.50 | 206 | 114 | 2 | 6/6 |
Llama 3.3 70B Instruct | Meta | 1.52 | 107 | 66 | 0 | 6/6 |
Nova 2 Lite | Amazon | 1.55 | 80 | 53 | 0 | 6/6 |
GPT-OSS 120B | OpenAI | 1.82 | 152 | 88 | 1 | 6/6 |
Devstral 2 (123B) | Mistral | 1.88 | 63 | 35 | 0 | 6/6 |
Pixtral Large | Mistral | 2.06 | 85 | 42 | 0 | 6/6 |
Claude Sonnet 4.6 | Anthropic | 2.10 | 77 | 36 | 0 | 6/6 |
Qwen3 VL 235B | Qwen | 2.15 | 58 | 28 | 0 | 6/6 |
Mistral Small | Mistral | 2.31 | 98 | 42 | 0 | 6/6 |
DeepSeek R1 | DeepSeek | 2.35 | 256 | 109 | 6 | 6/6 |
Claude Haiku 4.5 | Anthropic | 2.38 | 179 | 71 | 3 | 6/6 |
Claude Opus 4.7 | Anthropic | 2.40 | 98 | 39 | 0 | 6/6 |
Claude Sonnet 5 | Anthropic | 2.69 | 98 | 36 | 0 | 6/6 |
Claude Opus 4.8 | Anthropic | 2.79 | 111 | 39 | 0 | 6/6 |
Claude Opus 4.6 | Anthropic | 3.42 | 80 | 24 | 0 | 6/6 |
Claude Fable 5 | Anthropic | 4.18 | 134 | 30 | 0 | 6/6 |
Claude Opus 5 | Anthropic | 4.46 | 154 | 30 | 1 | 6/6 |
DeepSeek V3.2 | DeepSeek | 4.60 | 55 | 13 | 0 | 6/6 |
Claude Fable 5.1 | Anthropic | 5.61 | 127 | 21 | 0 | 6/6 |
Try a tool without an MCP client
scripts/call-tool.mjs spawns the built server over stdio, the
same way Claude Code does, and calls one tool with AWS credentials from your shell:
npm run build
node scripts/call-tool.mjs # list the tools
node scripts/call-tool.mjs bedrock_ask '{"model":"nova-micro","prompt":"Say hi"}'Troubleshooting
Error | Cause | Fix |
| The ID does not resolve on Bedrock - usually a missing | Use a registry alias ( |
| A Claude 4.7-or-later model was reached without a registry entry, so the server sent its default | Call it through a registered alias, or add a registry entry with |
| This server's registry says the model rejects that option (measured 2026-10-21 and 2026-11-01). | Pick a model from the list in the message, or drop |
| A model outside the registry rejected | Drop the option for that model. |
| A model outside the registry that takes no | Call it through a registered alias, or add a registry entry with |
| No bearer token reached the server (or it was empty) and no IAM credentials resolved. | Put the real token in the MCP config's |
| Model access has not been granted to your account. | AWS Console > Bedrock > Model access, request the model, retry once it shows Access granted. |
| Bedrock returns the reason on the job itself. | Read the |
Error strings are surfaced verbatim from Bedrock. Note that the temperature one is a
registry gap in this server, not an IAM or model-access problem - there is nothing to
fix in AWS for it.
Contributing
See CONTRIBUTING.md for setup, the two required checks, and the rules for adding a model (registry data + a test assertion + a live probe of the model ID). Security issues go through the private route in SECURITY.md, not a public issue.
License
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
One MCP endpoint for Claude, GPT & Gemini: 100+ tools + no-code connectors + agent workers.
Chat, image, video, and audio models from many vendors behind one remote MCP server and one key.
214 tools for AI agents over one MCP endpoint: image, video, audio, 3D, data, storage, mail, GPUs.
Find, vet, and run MCP tools through a secure audited gateway with prompt-injection risk scoring
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceCentralized gateway for multiple AWS Bedrock models through the Model Context Protocol (MCP), enabling AI agents to interact with 15+ Bedrock models like Nova, Claude, Llama, and Mistral.1-
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to query documents in a Bedrock Knowledge Base through the MCP protocol, with tools for semantic search and agentic retrieval.MIT
- AlicenseNot gradedqualityAmaintenanceEnables MCP-compatible applications to manage and use local or cloud-hosted models, including listing, pulling, generating, chatting, embeddings, and web search/fetch through a unified tool interface.958 npmAGPL 3.0
- AlicenseNot gradedqualityCmaintenanceExposes selected AWS resources — Lambda functions, S3, DynamoDB, SQS, EventBridge, OpenAPI endpoints and remote MCP servers — as narrowly scoped MCP tools that Claude Code agents running on Amazon Bedrock AgentCore can call, with IAM-enforced permissions on each target.MIT