前言
大家是否也曾有过这样的经历:想在 AWS 官方文档中查找所需信息,却迟迟找不到目标页面?
由于 AWS 推出了 “AWS Documentation MCP Server”,因此本文将介绍如何利用该工具,打造一个能基于最新 AWS 文档回答问题的 FAQ 助手。
调用 MCP Server 需使用 Claude Desktop 和 dolphin-mcp。
概要
1. 什么是 MCP
MCP(Model Context Protocol,模型上下文协议)是 Anthropic 公司开发的开放式协议,为大型语言模型(LLM)与外部数据源及工具的连接提供了标准化方法。
MCP 的工作原理
MCP 由以下 3 个组件构成:
- 主机(Host):在 LLM 应用端(例如 Claude Desktop)进行 MCP 通信。
- 客户端(Client):在主机内部管理与服务器的通信。
- 服务器(Server):响应客户端的请求,提供文档数据及工具功能。
图示如下

通过客户端以固定格式与各 MCP 服务器进行交互,能够自由访问本地或云端的各类资源。这三者之间通过 JSON 格式的消息进行交互,形成了 LLM 安全且动态访问外部信息的机制。
有关详细内容,也可参考以下文章。
2. 什么是 AWS Documentation MCP Server
AWS 基于模型上下文协议(MCP),在以下代码仓库中公开了面向各类用途的 MCP 服务器集群。
目前公开的 MCP 服务器共有以下 9 种:
服务器名称 | 概述 |
---|---|
Core MCP Server | AWS MCP 的基础服务器 |
AWS Documentation MCP Server | 可将 AWS 产品文档设为检索对象 |
Amazon Bedrock Knowledge Bases Retrieval MCP Server | 可通过 MCP 访问 Bedrock KnowledgeBase |
AWS CDK MCP Server | 可获取 CDK 相关最佳实践 |
Cost Analysis MCP Server | 可使用 AWS 成本服务 |
Amazon Nova Canvas MCP Server | 可进行图像生成 |
AWS Diagram MCP Server | 可生成 AWS 架构图等 |
AWS Lambda MCP Server | 可执行 AWS Lambda |
AWS Terraform MCP Server | 可获取 Terraform 相关最佳实践 |
本次介绍的 “AWS Documentation MCP Server”,将 AWS 官方文档作为知识来源,提供了可从外部轻松检索、查阅的机制。
具体而言,MCP 提供了以下功能:
功能名称 | 概述 |
---|---|
search_documentation | 检索与指定关键词相关的 AWS 文档 |
read_documentation | 读取文档的特定页面或章节,并获取其内容 |
recommend | 针对问题推荐相关文档或页面 |
此外,该服务器采用了可自动适配新增文档的设计,因此能够构建始终以最新 AWS 文档为基础的 FAQ 应用等工具。
本次将介绍分别使用支持通过 GUI 操作 MCP 的 Claude Desktop,以及支持通过 Python 调用 MCP 的 dolphin-mcp,结合 AWS Documentation MCP Server 打造 FAQ 助手的方法。
通过 Claude Desktop 打造 AWS 文档 FAQ 助手
接下来,让我们实际使用 AWS Documentation MCP Server 吧。使用该服务器需具备以下环境:
- Python 3.10 及以上版本
- uv(注:一种 Python 包管理工具)
首先,从以下 URL 下载并安装 Claude Desktop。
打开 Claude Desktop 后,从文件菜单中选择 “设置”,操作如下

从设置中选择 “开发者” 菜单,再点击 “编辑配置”,操作如下

参考以下文档,配置 claude_desktop_config.json 文件。
配置值
json
{
"mcpServers": {
"awslabs.aws-documentation-mcp-server": {
"command": "uvx",
"args": [
"--from",
"awslabs-aws-documentation-mcp-server@latest",
"awslabs.aws-documentation-mcp-server.exe"
],
"env": {
"FASTMCP_LOG_LEVEL": "ERROR"
},
"disabled": false,
"autoApprove": []
}
}
}
配置完成后重启应用,若显示如下状态,则表示设置成功

使用方法非常简单,只需在新聊天窗口中发送消息即可。
例如,我们尝试发送以下问题。

随后会生成参考 AWS 文档的回答,形式如下。

从下方内容可以看出,系统会根据需要执行文档检索与读取操作。
文档检索

文档读取

此外,如果询问与 AWS 文档无关的问题,会生成如下回答。由此可见,LLM 能够判断是否需要调用 MCP 服务器。

以上就是使用 Claude Desktop 调用 AWS Documentation MCP Server 的方法。不难发现,我们可以非常轻松地使用基于 AWS 文档的 FAQ 助手。
利用 dolphin-mcp 打造 AWS 文档 FAQ 助手
接下来,让我们尝试利用 dolphin-mcp,将 AWS Documentation Server 作为 FAQ 助手集成到 Streamlit 应用中。
1. 架构与准备
本次实现的架构如下:由 Streamlit 构建的 FAQ 助手,通过 FastAPI 向调用了 AWS Documentation MCP Server 的 LLM 发起回答请求。

使用的模块等如下:
- Python 3.13
- 主要依赖库
- dolphin-mcp:用于与 MCP 服务器通信的库
- Streamlit:用于构建聊天界面
- FastAPI:用于搭建后端 API
2. FastAPI 服务器的实现
首先,我们通过 FastAPI 将与 MCP 服务器的通信部分实现为简单的 API。
import asyncio
import json
from fastapi import FastAPI
from fastapi.responses import StreamingResponse
from dolphin_mcp import run_interaction
import sys
# 适配 Windows 系统的事件循环策略
if sys.platform.startswith('win'):
asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
app = FastAPI()
@app.get("/query")
async def query_endpoint(q: str):
async def stream_generator():
try:
# 调用 dolphin-mcp 与 MCP 服务器交互
result = await run_interaction(
user_query=q, # 用户查询
model_name="claude-3-7-sonnet-latest", # 使用的 LLM 模型
quiet_mode=False, # 非静默模式
stream=True # 启用流式响应
)
# 流式返回 LLM 生成的内容
async for chunk in result:
yield f"data: {json.dumps({'type': 'llm_text', 'payload': chunk})}\n\n"
except Exception as e:
# 发生错误时返回错误信息
yield f"data: {json.dumps({'type': 'error', 'payload': str(e)})}\n\n"
# 返回流式响应,媒体类型为 text/event-stream
return StreamingResponse(stream_generator(), media_type="text/event-stream")
同时,创建以下 mcp_config.json
配置文件:
{
"mcpServers": {
"aws-documentation-mcp-server": {
"command": "uvx", # 执行命令
"args": [
"--from",
"awslabs-aws-documentation-mcp-server@latest", # 从指定源获取服务器
"awslabs.aws-documentation-mcp-server.exe" # MCP 服务器可执行文件
],
"env": {
"FASTMCP_LOG_LEVEL": "ERROR" # 日志级别设为 ERROR
},
"disabled": false, # 启用该 MCP 服务器
"autoApprove": [] # 自动批准的操作列表(空表示需手动批准)
}
},
"models": [
{
"model": "claude-3-7-sonnet-latest", # 模型名称
"provider": "anthropic", # 模型提供商
"apiKey": "<AnthropicのAPI Key>", # 替换为 Anthropic 的 API 密钥
"title": "claude", # 模型标题
"temperature": 0.7, # 温度参数(控制生成内容的随机性)
"top_k": 256, # Top-K 采样参数
"top_p": 0.9, # Top-P 采样参数
"max_tokens": 2048 # 最大生成 tokens 数
}
]
}
3. 基于 Streamlit 的前端实现
接下来,使用 Streamlit 实现 FAQ 助手的 UI 界面。
import streamlit as st
import requests
import json
# FastAPI 后端 API 地址
API_URL = "http://localhost:8000/query"
# 设置页面标题
st.title("💬 AI聊天(基于 AWS Documentation MCP Server)")
# 初始化会话状态中的消息列表(若不存在则创建)
if "messages" not in st.session_state:
st.session_state.messages = []
# 渲染历史消息
for message in st.session_state.messages:
with st.chat_message(message["role"]): # 根据角色(user/assistant)渲染消息框
if message["type"] == "llm_text":
st.markdown(message["content"]) # 渲染普通文本消息
elif message["type"] == "search_result":
# 以折叠面板形式渲染搜索结果
with st.expander("🔍 搜索结果(点击展开)", expanded=False):
st.json(message["content"])
# 获取用户输入
user_input = st.chat_input("请输入问题")
if user_input:
# 渲染用户输入的消息
with st.chat_message("user"):
st.markdown(user_input)
# 将用户消息存入会话状态
st.session_state.messages.append({"role": "user", "type": "llm_text", "content": user_input})
# 渲染助手的响应
with st.chat_message("assistant"):
assistant_placeholder = st.empty() # 创建空占位符用于动态更新内容
partial_response = "" # 用于拼接流式返回的内容
try:
# 向 FastAPI 后端发送请求(启用流式响应,超时时间 120 秒)
with requests.get(API_URL, params={"q": user_input}, stream=True, timeout=120) as response:
if response.status_code != 200:
st.error(f"错误:{response.status_code}") # 若状态码非 200,显示错误
else:
# 逐行处理流式响应
for line in response.iter_lines(decode_unicode=True):
if line and line.startswith("data: "):
# 解析 payload 内容
payload = json.loads(line[len("data: "):])
partial_response += payload["payload"]
# 更新占位符内容,实现实时显示
assistant_placeholder.markdown(partial_response)
except requests.exceptions.RequestException as e:
st.error(f"连接错误:{e}") # 捕获请求异常并显示
# 将助手的完整响应存入会话状态
st.session_state.messages.append({
"role": "assistant",
"type": "llm_text",
"content": partial_response
})
如此一来,通过 Streamlit 与 dolphin-mcp,我们就能轻松构建出以 AWS Documentation MCP Server 为后端的 FAQ 助手。
4. 功能验证
以下是实际运行后的结果。

可以看到,与使用 Claude Desktop 时一样,助手能够参考最新的 AWS 文档进行回答。
总结
本文介绍了如何利用 AWS Documentation MCP Server,通过 Claude Desktop 和 dolphin-mcp 两种方式,打造可查阅 AWS 文档的 FAQ 助手。
此次我们使用的是 AWS Documentation MCP Server,但 MCP 的魅力在于,它可以轻松替换为 AWS 公开的其他 MCP 服务器。