Kiro MCP + Bedrock 实战:IDE 里测 Prompt、查向量库、调试 RAG 一条龙
用 Kiro 写代码的时候,经常需要调用大模型 API——测试 prompt、验证 RAG 流程、调试 Agent 逻辑。以前的做法是:写完代码 → 切到终端跑脚本 → 看输出 → 回来改代码 → 再跑。
现在通过 MCP(Model Context Protocol)把 Kiro 和 Amazon Bedrock 连起来,在 IDE 里就能直接调模型、查向量库、测试 RAG pipeline。开发体验完全不一样了。
整体架构
Kiro IDE / CLI
│
├── MCP Server: bedrock-models(调用 Bedrock 模型)
├── MCP Server: bedrock-kb(查询 Bedrock Knowledge Bases)
└── MCP Server: s3-vectors(操作 S3 向量存储)
三个 MCP Server 分别对应不同能力:
- bedrock-models:调用 Claude、Llama、Titan 等模型
- bedrock-kb:查询已建好的 Bedrock 知识库
- s3-vectors:直接操作 S3 Vectors 存储
配置 MCP 连接
在项目根目录创建 .kiro/mcp.json:
{
"mcpServers": {
"bedrock-models": {
"command": "npx",
"args": ["-y", "@anthropic-ai/bedrock-mcp-server"],
"env": {
"AWS_REGION": "us-east-1",
"AWS_PROFILE": "default"
}
},
"bedrock-kb": {
"command": "python3",
"args": ["-m", "bedrock_kb_mcp"],
"env": {
"KNOWLEDGE_BASE_ID": "YOUR_KB_ID",
"AWS_REGION": "us-east-1"
}
}
}
}
确保本地有 AWS 凭证配置(~/.aws/credentials 或环境变量),然后重启 Kiro。
验证连接是否成功:
> @bedrock-models 用 Claude Sonnet 回答:什么是 RAG?
如果看到模型回复,说明连通了。
场景一:直接在 IDE 里测试 Prompt
写 prompt 模板时,不用切出去单独跑:
# prompts/summarize.py
SYSTEM_PROMPT = """你是一个文档摘要助手。
用户会给你一段长文本,你需要:
1. 提取 3-5 个核心观点
2. 每个观点不超过 30 字
3. 最后给出一句话总结"""
写完直接在 Kiro 里测试:
> @bedrock-models 用上面的 system prompt,输入这段文本测试效果:
> [粘贴一段示例文本]
Kiro 通过 MCP 调用 Bedrock,直接返回模型输出。不满意就改 prompt 再试,迭代速度快很多。
场景二:开发 RAG Pipeline
这是我实际做的一个项目——给公司内部文档建知识库。
步骤 1:准备向量存储
先用 S3 Vectors 存文档的向量表示:
import boto3
import json
s3vectors = boto3.client('s3vectors', region_name='us-east-1')
# 创建向量索引
s3vectors.create_index(
vectorBucketName='my-knowledge-vectors',
indexName='internal-docs',
dimension=1024,
distanceMetric='cosine'
)
步骤 2:文档切片和嵌入
from langchain.text_splitter import RecursiveCharacterTextSplitter
splitter = RecursiveCharacterTextSplitter(
chunk_size=512,
chunk_overlap=50
)
# 切片
chunks = splitter.split_text(document_text)
# 调 Bedrock Titan Embeddings 生成向量
bedrock = boto3.client('bedrock-runtime', region_name='us-east-1')
for i, chunk in enumerate(chunks):
response = bedrock.invoke_model(
modelId='amazon.titan-embed-text-v2:0',
body=json.dumps({'inputText': chunk})
)
embedding = json.loads(response['body'].read())['embedding']
# 写入 S3 Vectors
s3vectors.put_vectors(
vectorBucketName='my-knowledge-vectors',
indexName='internal-docs',
vectors=[{
'key': f'doc-chunk-{i}',
'data': {'float32': embedding},
'metadata': {'text': chunk, 'source': 'internal-wiki'}
}]
)
步骤 3:在 Kiro 里测试检索
代码写完后直接在 Kiro 里验证:
> @bedrock-kb 查询 "如何配置生产环境的数据库连接池"
Kiro 通过 MCP 调用 Bedrock Knowledge Base 的 Retrieve API,返回相关文档片段和相关度分数。
如果检索效果不好,你可以直接问 Kiro:
> 检索结果不太相关,帮我分析可能的原因。当前 chunk_size=512,overlap=50,用的 Titan Embeddings v2
Kiro 会给你优化建议(比如调 chunk size、换切片策略、加 metadata 过滤等)。
步骤 4:完整 RAG 调用
def rag_query(question: str) -> str:
# 1. 检索相关文档
retrieval = bedrock_agent.retrieve(
knowledgeBaseId='YOUR_KB_ID',
retrievalQuery={'text': question},
retrievalConfiguration={
'vectorSearchConfiguration': {
'numberOfResults': 5
}
}
)
# 2. 拼接上下文
context = '\n\n'.join([
r['content']['text']
for r in retrieval['retrievalResults']
])
# 3. 调用 Claude 生成回答
response = bedrock.invoke_model(
modelId='anthropic.claude-sonnet-4-20250514',
body=json.dumps({
'messages': [{
'role': 'user',
'content': f'根据以下参考文档回答问题。\n\n参考文档:\n{context}\n\n问题:{question}'
}],
'max_tokens': 1024
})
)
return json.loads(response['body'].read())['content'][0]['text']
场景三:调试 Agent 工具调用
如果你在开发 Bedrock Agent,需要调试工具调用(Function Calling)的逻辑:
> @bedrock-models 用 Claude Sonnet,带这个 tool 定义测试:
> tool: search_database(query: str, limit: int) -> list
> 用户问:"帮我查最近一周的异常订单,最多显示 10 条"
Kiro 会展示模型的 tool_use 输出:
{
"type": "tool_use",
"name": "search_database",
"input": {
"query": "status=abnormal AND created_at >= now() - interval 7 days",
"limit": 10
}
}
直接在 IDE 里就能看到模型是否正确理解了意图、参数是否合理。不需要部署完整的 Agent 才能测试。
开发效率提升
用了这套配置一周,对比之前的工作方式:
| 操作 | 以前 | 现在 |
|---|---|---|
| 测试一个 prompt | 写脚本→终端跑→看输出→改→再跑 | IDE 里直接试 |
| 验证 RAG 检索 | 写测试代码→跑→看日志 | @bedrock-kb 直接查 |
| 调试 tool calling | 部署 Agent→调用→看 CloudWatch 日志 | IDE 里模拟 |
| 切换模型对比 | 改代码里的 modelId→重跑 | 对话里直接指定 |
保守估计,AI 应用开发的 debug 时间减少了 60%。主要省在"上下文切换"上——不用在 IDE、终端、AWS 控制台三个地方来回跳。
成本控制
通过 MCP 调用 Bedrock 和直接用 SDK 调用没有区别,按 Bedrock 标准 token 计费。几个控制成本的小技巧:
- 开发阶段用 Haiku:测试 prompt 逻辑时用 Claude Haiku(成本是 Sonnet 的 1/10),确认没问题了再切 Sonnet
- Titan Embeddings 很便宜:生成嵌入向量的成本远低于调用大模型,不用省着用
- Knowledge Base 检索免费:Retrieve API 本身不收费,只有底层存储(OpenSearch/S3 Vectors)按量计费
前置要求
- Kiro IDE 或 CLI(任意版本)
- AWS 账号,开通了 Bedrock 模型访问权限
- Node.js 18+(运行 MCP Server)
- 本地 AWS 凭证配置
如果还没开通 Bedrock 模型访问,去 AWS 控制台 → Bedrock → Model access 里勾选需要的模型,审批通常秒过。
小结
Kiro + Bedrock 通过 MCP 打通后,AI 应用开发变成了一个完整的闭环:
写代码 → 测试 prompt → 验证检索 → 调试 Agent → 优化迭代
全在一个工具里完成,不用在 5 个窗口之间来回切。对于做 RAG、Agent、AI 应用的开发者来说,这就是从"手动挡"换到"自动挡"的体验。
Kiro MCP 配置文档:https://kiro.dev/docs/
Amazon Bedrock 文档:https://docs.aws.amazon.com/bedrock/
Kiro 由亚马逊云科技提供支持。Amazon Bedrock 按量计费,无预付费。

浙公网安备 33010602011771号