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 计费。几个控制成本的小技巧:

  1. 开发阶段用 Haiku:测试 prompt 逻辑时用 Claude Haiku(成本是 Sonnet 的 1/10),确认没问题了再切 Sonnet
  2. Titan Embeddings 很便宜:生成嵌入向量的成本远低于调用大模型,不用省着用
  3. 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 按量计费,无预付费。

posted @ 2026-05-30 20:05  亚马逊云开发者  阅读(7)  评论(0)    收藏  举报