使用说明
项目简介
本项目演示了一个基于 Model Context Protocol (MCP) 的简单服务器,它集成了一个可以抓取网页内容的工具。此服务器旨在与 AWS Bedrock 上的大语言模型(如 Anthropic 模型)协同工作,通过 MCP 协议为模型提供访问外部网络资源的能力。
主要功能点
- 网页内容抓取工具: 提供一个名为 "fetch" 的工具,允许语言模型根据用户请求抓取指定URL的网页内容。
- MCP 服务器实现: 实现了 MCP 协议的核心功能,可以接收和处理来自 MCP 客户端的请求,例如工具列表查询和工具调用。
- 支持 Stdio 和 SSE 传输: 服务器同时支持标准的 Stdio 以及基于 Server-Sent Events (SSE) 的传输协议,以适应不同的应用场景和客户端需求。
- AWS Bedrock 集成: 项目包含示例客户端代码,展示了如何将此 MCP 服务器与 AWS Bedrock 上的模型(如 Nova Pro)结合使用,扩展模型的功能。
安装步骤
- 环境准备: 确保已安装 Python 3.10 或更高版本,并配置好 AWS CLI 和 Bedrock 的访问权限。推荐使用 uv 包管理器。
- 克隆仓库: 将 GitHub 仓库 'https://github.com/davidshtian/MCP-on-AWS-Bedrock' 克隆到本地。
- 安装依赖: 在仓库根目录下,使用 uv 安装所需的 Python 库:
uv pip install boto3 uvicorn
服务器配置
MCP 服务器需要 MCP 客户端通过指定的命令和参数启动并连接。以下是针对 Stdio 和 SSE 两种传输方式的服务器配置信息,客户端需要根据选择的传输方式进行相应的配置。
Stdio 传输配置 (JSON):
{ "server_name": "mcp-website-fetcher", // MCP 服务器名称,定义在 server.py 中 "command": "uv", // 启动服务器的命令,这里使用 uv 运行 Python 脚本 "args": ["run", "mcp-simple-tool"] // 命令参数,指定运行 mcp-simple-tool 作为服务器 }
SSE 传输配置 (JSON): 对于 SSE 传输,需要先手动启动服务器,然后再配置客户端连接到服务器地址。 首先,在终端中运行以下命令启动 SSE 服务器:
uv run mcp-simple-tool --transport sse --port 8000
然后,MCP 客户端需要配置连接到运行中的 SSE 服务器地址。 客户端示例 'client_sse.py' 默认连接到 'http://localhost:8000/sse'。 客户端配置可能需要类似以下的服务器地址信息:
{ "server_url": "http://localhost:8000/sse" // SSE 服务器的 URL 地址 }
注意: 使用 SSE 传输时,需要先单独启动服务器,客户端再连接;使用 Stdio 传输时,客户端会负责启动和管理服务器进程。
基本使用方法
- 启动 MCP 服务器:
- Stdio: 如果使用 Stdio 传输,当运行 'client_stdio.py' 客户端时,客户端会自动启动 MCP 服务器。
- SSE: 如果使用 SSE 传输,需要先在终端中手动运行命令 'uv run mcp-simple-tool --transport sse --port 8000' 启动服务器。
- 运行 MCP 客户端: 根据选择的传输方式,运行 'client_stdio.py' (Stdio) 或 'client_sse.py' (SSE) 客户端脚本。 例如,运行 Stdio 客户端:
uv run client_stdio.py - 与模型交互: 客户端脚本会与 AWS Bedrock 上的 Nova Pro 模型进行交互。用户可以通过与模型对话,指示模型使用 "fetch" 工具来抓取网页内容。例如,可以向模型发送类似 "请帮我获取 'https://www.example.com' 网站的内容" 的指令。模型在需要时会调用 "fetch" 工具,MCP 服务器会执行网页抓取,并将结果返回给模型,最终模型将处理后的网页内容呈现给用户。
信息
分类
网页与API