内容
bedrock-multi-model-mcp
AWS Bedrock 的 MCP 服务器 - 通过任意模型生成文本、图像和视频。使用 Claude、Llama、Mistral、Nova、Qwen、DeepSeek、OSS 等模型,支持 Claude Code(或其他 MCP 客户端)。
##
| 工具 | 描述 |
|------|-------------|
| `bedrock_ask`任意文本模型发送提示,返回 计数和延迟。 |
| `bedrock_compare` | 向 2-5发送相同提示,比较质量、速度和风格。 |
|rock_list_models` | 列用的文本模型及其别名和功能。 |
|rock_generate_image` | 根据文本生成图像(Stable Image Ultra、SD3.5 Large、Stable),本地保存为 PNG。 |
| `bedrock_generate_video` | 开始异步视频生成(Luma Ray 2),输出到 S3。 |
| `bedrock_video_status` | 检查视频生成任务的进度。 |
| `bedrock_embed_similarity` | 嵌入 2+ 个文本(Titan、Cohere),返回余弦相似度矩阵。 |
## 支持的模型
模型数据存放在 [src/data/](src/data/)(`text-models.json`、`image-models.json`-models.json`、`embedding-models.json`)- 编辑这些文件以添加或删除模型,无需修改代码。
### 文本(Converse API)
| 提供商 | 模型 | 别名 |
---------|
| Anthropic Fable 5, Opus 4.8 / 7 / 4.6, Sonnet 4.6, Haiku 4.5 |able`, `claude`, `claude-sonnet`, `claude-haiku` |
| Meta | Llama 4 Llama 4 Scout, Llama 3.3 | `llama4`, `llama4-scout`, `ll.3` |
ral | Mistral Large, Devstral 2, Mistral Small, Pixt | `mistral-large`, `devstral`, `mistral-smallpixtral` Amazon | Nova Pro, Nova 2 Lite, Nova Lite, Nova `nova-pro`, `nova`, `nova-litenova-micro` |
| Q Qwen3 Coder Qwen3 VL 235Bqwen-coder`, `qwen-vl` |
| DeepSeek | DeepSeek V3.2, DeepSeek R1 | `deepseek`, `deepseek-r1` |
| OpenAI | GPT-OSS 120B, GPT-OSS 20B | `gpt-oss`, `gpt-oss-20b` |
### 图像(InvokeModel API)
| 模型 | 别名 | 最大分辨率 | 区域 |
|-------|-------|----------------|--------|
| Stable Image Ultra(默认) | `stable-ultra` | 1536x1536 | us-west-2 |
| Stable Diffusion 3.5 Large | `sd3.5` | 1536x1536 | us-west-2 |
| Stable Image Core | `stable-core` | 1536x1536 | us-west-2 |
### 视频(Async API)
| 模型 | 别名 | 时长 | 分辨率 | 区域 |
|-------|-------|----------|------------|--------|
| Luma Ray 2 | `luma-ray`, `ray2` | 5s 或 9s | 720p | us-west-2 |
输出 S3 存储桶必须位于 us-west-2(与模型相同的区域)。
Amazon Nova Canvas/Reel 和 Titan Image 已被删除,因为 AWS 标记它们为生命周期结束(Nova Reel EOL 2026-09-30);注册表仅包含活跃模型。
### 嵌入Model API)
| 模型 | 别名 | 维度 |
|-------|-------|------------|
| Amazon Titan Text Embeddings V2 | `titan-v2` | 1024 |
| Amazon Titan Text Embeddings V1 | `titan-v1` | 1536 |
| Amazon Titan 多模态嵌入 | `titan-multimodal` | 1024 |
| Cohere Embed English v3 | `cohere-en` | 1024 |
| Cohere Embed 多语言 v3 | `cohere-multi` | 1024 |
您也可以直接传递任何有效的 Bedrock 模型 ID。注意:许多基础模型需要跨区域推理配置文件(`us.`前缀)才能按需调用 - 注册表使用每个模型的活动表单。
> **模型可用性因区域和账户而异。** 注册表 ID 在 `us-east-1` 中已验证,但个别模型可能未在您的区域启用或授予您的账户。您无法访问的模型会返回清晰的错误(每个模型在 `bedrock_compare` 中);其余模型仍然有效。在 AWS 控制台中,在 Bedrock > 模型访问下启用模型。
## 设置
### 先决条件
- Node.js >= 20
- 已配置 AWS 凭证(承载令牌、环境变量、`~/.aws/credentials`、SSO 或 IAM 角色)
- 在您的 AWS 账户中启用 Bedrock 模型访问(在 AWS 控制台中的 Bedrock > 模型访问下请求访问)
### 安装和构建
```bash
git clone https://github.com/Sagargupta16/bedrock-multi-model-mcp.git
cd bedrock-multi-model-mcp
npm install
npm run build
```
### 在 Claude Code 中配置
将以下内容添加到您的 Claude Code MCP 设置(`~/.claude.json`):
```json
{
"mcpServers": {
"bedrock": {
"command": "node",
"args": ["/path/to/bedrock-multi-model-mcp/dist/index.js"],
"env": {
"AWS_BEARER_TOKEN_BEDROCK": "ABSK...",
"AWS_REGION": "us-east-1"
}
}
}
}
```
### 环境变量
| 变量 | 默认值 | 描述 |
|----------|---------|-------------|
| `AWS_REGION` | `us-east-1` | Bedrock API 调用的 AWS 区域 |
| `AWS_BEARER_TOKEN_BEDROCK` | - | Bedrock API 密钥承载令牌(推荐) |
| `AWS_ACCESS_KEY_ID` | - | AWS 访问密钥(如果不使用承载令牌/SSO) |
| `AWS_SECRET_ACCESS_KEY` | - | AWS 秘密密钥(如果不使用承载令牌/SSO) |
| `AWS_PROFILE` | - | `~/.aws/credentials` 中的命名 AWS 配置文件 |
| `BEDROCK_MCP_OUTPUT_DIR` | 当前工作目录(或 `~/bedrock-images` 如果当前工作目录不可写) | 生成图像的默认输出目录。由 `output_dir覆盖。目录自动创建。 |
### 身份验证
服务器支持两种身份验证方法:
1. **Bedrock API 密钥(承载令牌)** - 设置 `AWS_BEARER_TOKEN_BEDROCK`。SDK(v3.840.0+)自动读取此内容。如果 SDK 失败,则使用原始 HTTP 和 `Authorization: Bearer` 头进行回退。
2. **IAM 凭证** - 标准 AWS 凭证链(环境变量、配置文件、SSO、IAM 角色)。
## 使用示例
### 向单个模型提问
```
"使用 bedrock_ask 向 llama4 提问,解释 Docker,3 句话"
```
### 比较模型
```
"使用 bedrock_compare 比较 llama4、nova-pro 和 mistral-large:微服务的优缺点是什么?"
```
### 生成图像
```
"使用 bedrock_generate_image with stable-ultra:一个充满未来感的东京街道,夜晚,霓虹灯,雨"
```
###
```
"使用 bedrock_generate_video:海浪撞击岩石,日落,s3_uri: smy-bucket/videos/"
```
### 比较文本相似度
```
bedrock_embed_similarity'a cat','a kitten','a car'"
```
## 架构
```
src/
index.ts # MCP 服务器 - 工具注册,stdio 传输
models.ts # 加载并验证文本模型数据,解析别名
types.ts # Zod 模式,用于模型数据验证
bedrock/
client.ts # 共享区域/身份验证配置 + 原始 HTTP 回退
converse.ts # 对话 API 包装器(文本模型)
image.ts InvokeModel 包装器(图像模型)
video.ts # 异步调用包装器(视频模型)
embed.ts # InvokeModel 包装器(嵌入)+ 余弦相似度
data/
text-models.json # 文本模型注册表(数据,非代码)
image-models.json # 图像模型注册表
video-models.json # 视频模型注册表
embedding-models.json # 嵌入模型注册表
```
模型定义为数据,存放在 `src/data/*.json` 中,并在加载时针对 Zod 模式进行验证,因此可以在不更改逻辑的情况下更新目录。构建会将这些 JSON 文件复制到 `dist/data/` 中。
- **文本**:使用 [Converse API](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Converse.html) - 跨所有文本模型的统一接口
- **图像**:使用 [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html),带有模型特定的请求格式(在内部处理)
- **视频**:使用 [StartAsyncInvoke](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_StartAsyncInvoke.html) - 需要 S3作为输出
## 许可证
MIT