项目简介
这是一个使用 Python 从零开始构建 MCP (模型上下文协议) 服务器和客户端的示例项目。它演示了如何创建一个 MCP 服务器来提供上下文信息和工具,以及如何构建一个客户端与之交互。
主要功能点
- 实现 MCP 服务器核心功能,支持注册和执行工具。
- 提供一个具体的工具,用于搜索特定技术库的在线文档并返回文本内容。
- 支持两种主要的 MCP 传输协议:Stdio (适用于本地命令行交互) 和 SSE (Server-Sent Events,适用于云服务部署)。
- 包含一个 MCP 客户端示例,演示如何连接到服务器并调用工具,并结合 OpenAI API 进行交互。
安装步骤
- 确保您已安装 Python 3.8 或更高版本。
- 安装 'uv' 包管理器 (推荐):
- MacOS/Linux: 'curl -LsSf https://astral.sh/uv/install.sh | sh'
- Windows: 'powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"'
- 克隆或下载项目代码。
- 在项目目录中创建并激活虚拟环境,然后安装依赖:
uv venv source .venv/bin/activate # Windows: .venv\Scripts\activate uv add "mcp[cli,sse,uvicorn]" httpx beautifulsoup4 python-dotenv openai - 创建 '.env' 文件,配置 SerpApi 密钥 (用于文档搜索工具) 和 OpenAI API 密钥 (用于客户端交互):
SERPER_API_KEY=你的Serper API密钥 OPENAI_API_KEY=你的OpenAI API密钥 OPENAI_MODEL=gpt-4o # 或其他支持工具调用的模型 # 可选:OPENAI_BASE_URL=你的OpenAI API代理地址
服务器配置 (供 MCP 客户端使用)
MCP 客户端 (如 Cursor 或 Cline) 需要知道如何启动您的 MCP 服务器。您需要在客户端的配置中指定服务器的名称、启动命令和参数。
对于这个项目,配置信息大致如下(请根据您的实际项目路径调整 '<你的项目路径>'):
- 名称 (Name): 例如 'mcp-docs-server' (自定义,用于在客户端识别该服务器)
- 命令 (Command): 'uv' (用于运行 Python 项目的命令)
- 参数 (Args): 一个包含字符串的列表,指定 'uv' 命令的参数:
- '"--directory"': 指定项目根目录。
- '"<你的项目路径>"': 项目根目录的绝对或相对路径。
- '"run"': 'uv' 命令的子命令,用于运行 Python 文件。
- '"main.py"': 服务器入口文件。
注意: Stdio 协议服务器通常由客户端启动和管理生命周期。SSE 协议服务器需要独立运行,客户端连接到其监听的地址。
基本使用方法
-
Stdio 服务器 (由客户端启动): 配置好上述信息后,使用支持 MCP Stdio 协议的客户端(如 Cursor 或 Cline)连接并启用该服务器。客户端会自动启动服务器并在需要时调用其工具。
-
SSE 服务器 (独立运行):
- 修改 'main.py' 文件,注释掉 Stdio 部分 ('if name == "main": mcp.run(...)'),取消注释 SSE 部分的代码块。
- 启动 SSE 服务器:'uv run main.py --host 0.0.0.0 --port 8020' (您可以根据需要修改 host 和 port)
- 运行提供的客户端示例并连接到服务器:'uv run client.py http://0.0.0.0:8020/sse' (如果服务器运行在其他地址或端口,请相应修改URL)
- 在客户端交互界面输入查询,客户端将调用服务器的 'get_docs' 工具获取信息,并使用大模型进行回复。
信息
分类
AI与计算