AWS知识库MCP服务器
用法
Claude DesktopGitHub Copilot
{
"mcpServers": {
"knowledge-base": {
"command": "npx",
"args": [
"mcp-remote",
"https://aws-knowledge-base-mcp-server.daohoangson.workers.dev/sse"
]
}
}
}{
"servers": {
"aws-knowledge-base": {
"type": "sse",
"url": "https://aws-knowledge-base-mcp-server.daohoangson.workers.dev/sse"
}
}
}

模型上下文协议(MCP)服务器实现,使AI助手能够使用AWS Bedrock和Cloudflare Workers在知识库中搜索。该项目由三个主要部分组成:
建筑
- 基础设施 (
/cdk):设置资源,包括:
- 用于文档嵌入的AWS基岩知识库 - Pinecone用于高效的文档搜索 - 用于存储文档文件的AWS S3存储桶 - 用于MCP服务器的AWS Lambda功能,支持流式HTTP传输 - AWS IAM用户和API访问策略
- MCP服务器 (
/cloudflare-mcp-server):实现MCP服务器,该服务器:
- 提供 search_knowledge_base AI助手工具 - 与AWS Bedrock集成以进行文档检索 - 支持SSE(已弃用)和流式HTTP传输 - 在Cloudflare Workers上运行,兼容Node.js
- MCP客户端 (
/ai-sdk-mcp-client):一个演示客户端,它:
- 用途 Vercel的AI SDK Nova Pro型号 - 充当MCP客户端,支持SSE和流式HTTP传输 - 通过工具调用流式传输文本响应
graph TD
subgraph AWS
S3[S3 Bucket] -->|Stores Documents| KnowledgeBase
TitanModel[Titan Embed Text V2] -->|Embedding Model| KnowledgeBase
Lambda -->|Retrieve API| KnowledgeBase
NovaPro[Nova Pro]
end
subgraph Pinecone
KnowledgeBase[Bedrock Knowledge Base] -->|Vector Embeddings| PineconeDb[Vector Database]
end
subgraph Cloudflare
Worker -->|Retrieve API| KnowledgeBase
end
Demo -->|InvokeModel API| NovaPro
Demo -->|MCP
Streamable HTTP| Lambda
Demo -->|MCP
Server Sent Event| Worker
Demo -->|MCP
Streamable HTTP| Worker基础设施
设置
cd cdk
npm install
# Unique identifier for the CDK stack
export CDK_APP_ID="DocsMcpServer"
# Pinecone credentials to manage vector databases
export PINECONE_API_KEY="pcsk_foo"
# Deploy the stack
npx cdk deploy输出示例
DocsMcpServer.AwsAccessKeyId = AKI123
DocsMcpServer.AwsRegion = us-east-1
DocsMcpServer.AwsSecretAccessKey = 4cQ456
DocsMcpServer.DataSourceId = OD6LTXXUNH
DocsMcpServer.DocsBucketName = docsmcpserver-docsbucketa5ce02e3-gg8g3crhlo1j
DocsMcpServer.KnowledgeBaseId = GZUYX1EGMF
DocsMcpServer.McpServerUrl = https://vc7ejtu4kk3ayeiqofkmxxzada0uwpzr.lambda-url.us-east-1.on.aws/文档更新
这 /docs 目录包含用最新文档更新知识库的脚本:
cd docs
# Set environment variables from the CDK output
export DATA_SOURCE_ID="OD6LTXXUNH"
export DOCS_BUCKET_NAME="docsmcpserver-docsbucketa5ce02e3-gg8g3crhlo1j"
export KNOWLEDGE_BASE_ID="GZUYX1EGMF"
# Run the update script
./update.sh这将:
- 从CloudFlare和MCP网站下载最新文档
- 将文件上传到S3
- 启动新的摄取作业以更新知识库
MCP服务器
MCP服务器提供 search_knowledge_base AI助手可以使用该工具搜索索引文档。该工具接受查询字符串并返回相关文档。
创建 .dev.vars CDK输出中的以下变量:
AWS_ACCESS_KEY_ID=AKI123
AWS_REGION=us-east-1
AWS_SECRET_ACCESS_KEY=4cQ456
KNOWLEDGE_BASE_ID=GZUYX1EGMF设置
cd cloudflare-mcp-server
npm install
npm run cf-typegen
# run locally
npm run dev
# or deploy to Cloudflare
npm run deployMCP客户端
客户端演示了如何连接到MCP服务器,并使用其支持SSE和流式HTTP传输的工具。
设置
cd ai-sdk-mcp-client
npm install
# Set environment variables from the CDK output
export AWS_ACCESS_KEY_ID="AKI123"
export AWS_REGION="us-east-1"
export AWS_SECRET_ACCESS_KEY="4cQ456"
# Test connection to CloudFlare with SSE transport
npm start -- https://aws-knowledge-base-mcp-server.daohoangson.workers.dev/sse
# Test connection to CloudFlare with streamable HTTP transport
npm start -- https://aws-knowledge-base-mcp-server.daohoangson.workers.dev/mcp
# Test connection to Lambda
npm start -- https://vc7ejtu4kk3ayeiqofkmxxzada0uwpzr.lambda-url.us-east-1.on.aws/mcp输出示例
Created MCP client
{ tools: [ 'search_knowledge_base' ] }
To determine if CloudFlare works with the Model Context Protocol (MCP), I need to search the knowledge base for relevant documentation.
Tool call: search_knowledge_base {
"query": "Does CloudFlare work with Model Context Protocol (MCP)?"
}Tool result
{
"content": [
{
"type": "text",
},
{
"type": "text",
"text": "can call. When you build MCP Servers with the `@cloudflare/model-context-protocol` package, you can define tools the ."
},
{
"type": "text",
"text": "See our [list of example servers](https://modelcontextprotocol.io/examples), or [get started building your own server](https://modelcontextprotocol.io/quickstart/server). # Introduction Source: https://modelcontextprotocol.io/introduction Get started with the Model Context Protocol (MCP) C# SDK released! Check out [what else is new.](/development/updates) MCP is an open protocol that standardizes how applications provide context to LLMs. Think of MCP like a USB-C port for AI applications. Just as USB-C provides a standardized way to connect your devices to various peripherals and accessories, MCP provides a standardized way to connect AI models to different data sources and tools. ## Why MCP? MCP helps you build agents and complex workflows on top of LLMs. LLMs frequently need to integrate with data and tools, and MCP provides: * A growing list of pre-built integrations that your LLM can directly plug into * The flexibility to switch between LLM providers and vendors * Best practices for securing your data within your infrastructure ### General architecture At its core, MCP follows a client-server architecture where a host application can connect to multiple servers: ```mermaid flowchart LR subgraph \"Your Computer\" Host[\"Host with MCP Client\\n(Claude, IDEs, Tools)\"] S1[\"MCP Server A\"] S2[\"MCP Server B"
},
{
"type": "text",
},
{
"type": "text",
"text": "For instance, if the client doesn't have access to Claude models but has Gemini, it might map the sonnet hint to `gemini-1.5-pro` based on similar capabilities. ## Error Handling Clients **SHOULD** return errors for common failure cases: Example error: ```json { \"jsonrpc\": \"2.0\", \"id\": 1, \"error\": { \"code\": -1, \"message\": \"User rejected sampling request\" } } ``` ## Security Considerations 1. Clients **SHOULD** implement user approval controls 2. Both parties **SHOULD** validate message content 3. Clients **SHOULD** respect model preference hints 4. Clients **SHOULD** implement rate limiting 5. Both parties **MUST** handle sensitive data appropriately # Specification Source: https://modelcontextprotocol.io/specification/2025-03-26/index [Model Context Protocol](https://modelcontextprotocol.io) (MCP) is an open protocol that enables seamless integration between LLM applications and external data sources and tools. Whether you're building an AI-powered IDE, enhancing a chat interface, or creating custom AI workflows, MCP provides a standardized way to connect LLMs with the context they need."
}
]
}是的,CloudFlare支持模型上下文协议(MCP)。您可以在CloudFlare上构建和部署MCP服务器。文档表明,CloudFlare提供了包和示例,以帮助您开始使用MCP服务器。 有关更多详细信息,请参阅 CloudFlare上的模型上下文协议文档.
成本估算
假设:
us-east-1区域- 共计2 000份文件
- 每个文档约为5KB/约1250个令牌
- 每月重新索引所有内容30次(实际实施将逐步完成)
- 每月使用3000个请求
- 每个请求占用5ms CPU时间/200ms墙时间
- 每个查询大约有100个令牌
- 每个请求返回10个文档
| 服务 | SKU | 标价 | 每月计数 | 每月成本(美元) |
|---|---|---|---|---|
| AWS基岩 | Titan嵌入(索引) | 0.00002/1K代币 | 75000K | 1.5美元 |
| Titan嵌入(查询) | 0.00002/1K代币 | 300K | 0.006美元 | |
| AWS Lambda | 请求 | 0.2/1M请求 | 0.003M | 0.0006美元 |
| ARM64持续时间 | 0.0000133334/GB-s | 75美元 英镑 | 0.001美元 | |
| 数据传输输出 | $0.09/GB | 0.15 GB | 0.0135美元 | |
| AWS S3 | 标准存储 | 每月0.023美元/GB | 0.01 GB | 0.00023美元 |
| 列表请求 | 0.005美元/1K请求 | 6K | 0.03美元 | |
| GET请求 | 0.0004/1K请求 | 60000 | 0.024美元 | |
| CloudFlare | 标准版 | 每月5美元 | 1 | 5美元 |
| 请求 | 0.30美元/百万 | 0.003 | 0.0009美元 | |
| CPU时间 | $0.00002/CPU秒 | 15 | $0.0003 | |
| 松果 | 标准 | 25美元/月 | 1 | 25美元 |
| 矢量存储 | 每月0.33美元/GB | 0.008 GB | 0.003美元 | |
| 矢量插入(写入) | 4/百万美元写入 | 0.06M | 0.24美元 | |
| 向量查询(读取) | 16美元/百万读取 | 0.03万 | 0.48美元 |
- https://aws.amazon.com/bedrock/pricing/
- https://aws.amazon.com/s3/pricing/
- https://aws.amazon.com/lambda/pricing/
- CloudFlare标准计划包括 10M请求和3K CPU秒.
- 松果标准计划包括 每月15美元的使用积分.替代方案:
- Aurora PostgreSQL无服务器,每月180美元,配备1个写入器、1个读取器、2个NAT网关等。(参见 分支 aurora) - Amazon OpenSearch Serverless最低每月350美元,因为它至少需要一个索引OCU和一个搜索OCU 0.24美元/OCU小时
