MCP基岩知识库服务器(Strands)
注: 此README是为Amazon Q CLI版本1.14.1编写的。命令语法在其他版本中可能不同。
一个最小模型上下文协议(MCP)服务器,连接到AWS基岩知识库,用于Strands特定的文档查询。
⚠️ 重要提示:工具和服务器命名
此服务器提供:
- 服务器名称:
bedrock-kb - 工具名称:
query_strands_knowledge_base
关键的:如果您运行多个MCP服务器,则每个服务器必须具有唯一的服务器名称和工具名称,以避免Q CLI中的冲突。仅仅指出不同的知识库是不够的,工具名称必须不同。
快速设置
1.安装依赖项
pip install -r requirements.txt2.配置环境变量
复制示例环境文件并填写您的值:
cp .env.example .env编辑 .env 使用您的AWS基岩知识库详细信息:
BEDROCK_KB_ID=your-knowledge-base-id-here
AWS_REGION=your-aws-region
BEDROCK_MODEL_ARN=arn:aws:bedrock:your-region::foundation-model/anthropic.claude-3-sonnet-20240229-v1:03.配置AWS凭据
确保您的AWS凭据已通过以下方式配置:
- AWS-CLI:
aws configure - 环境变量:
AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY - IAM角色(如果在EC2上运行)
所需权限:
bedrock:RetrieveAndGenerate
4.运行服务器
python src/mcp_bedrock_kb/server.py与Amazon Q CLI集成
方法1:使用Q CLI MCP命令(推荐)
- 使用Q CLI添加MCP服务器:
q mcp add --name bedrock-kb --command python --args /path/to/your/mcp-bedrock-kb/src/mcp_bedrock_kb/server.py --env BEDROCK_KB_ID=your-knowledge-base-id --env AWS_REGION=your-aws-region --env BEDROCK_MODEL_ARN=arn:aws:bedrock:your-region::foundation-model/anthropic.claude-3-sonnet-20240229-v1:0替换 /path/to/your/mcp-bedrock-kb/ 使用克隆存储库的实际路径,以及 your-knowledge-base-id 使用您实际的基岩知识库ID。
- 验证服务器是否已添加:
q mcp list- 测试集成:
q chat
# In the chat, you can now use: query_knowledge_base("your question here")方法2:手动配置文件编辑
- 找到Q CLI配置文件:
# Configuration is typically at:
~/.aws/amazonq/mcp.json- 编辑配置文件以添加MCP服务器:
{
"mcpServers": {
"bedrock-kb": {
"command": "python",
"args": ["/path/to/your/mcp-bedrock-kb/src/mcp_bedrock_kb/server.py"],
"env": {
"BEDROCK_KB_ID": "your-knowledge-base-id-here",
"AWS_REGION": "your-aws-region",
"BEDROCK_MODEL_ARN": "arn:aws:bedrock:your-region::foundation-model/anthropic.claude-3-sonnet-20240229-v1:0"
}
}
}
}- 重新启动Q CLI以加载新配置:
q chat与MCP客户端一起使用
服务器提供了一个工具:
query_strands_knowledge_base:查询已配置的Strands基岩知识库
可用工具
query_strands_knowledge_base(查询:str)->str
- 查询配置的AWS基岩知识库中的Strands文档
- 根据查询返回相关信息
- 使用配置的模型自动处理检索和生成
Q CLI中的示例用法
集成后,您可以在Q CLI对话中使用Strands知识库工具:
User: Can you query the Strands knowledge base about best practices?
Q: I'll query the Strands knowledge base for information about best practices.
query_strands_knowledge_base("best practices and implementation patterns")
Based on the Strands knowledge base, here are the key best practices...故障排除
常见问题
- “找不到服务器”错误:
- 验证路径 server.py 是正确的 - 确保Python能够找到所需的依赖项 - 如果使用虚拟环境,请检查虚拟环境是否已激活
- AWS权限错误:
- 验证AWS凭据是否已配置 - 确保IAM用户/角色具有 bedrock:RetrieveAndGenerate 许可 - 检查知识库ID是否存在并且可以访问
- 未加载环境变量:
- 确保 .env 文件位于正确的位置 - 验证环境变量名称是否完全匹配 - 对于手动配置,请确保env变量在JSON配置中
调试
通过设置启用调试日志记录:
export MCP_DEBUG=1检查Q CLI日志:
q chat --verbose