mcp_server.py 是一个基于SSE的MCP服务器,提供了一个基于Gutenberg Project API的图书搜索工具。改编自MCP文章在文件示例STDIO服务器实现中。
client.py 是一个MCP客户端,能够连接并使用基于SSE的MCP服务器提供的工具。改编自MCP文档示例STDIO客户端实现。git clone [your-repository-url]
cd jay-py-mcp-sse
使用UV(推荐):
# 安装uv(如果未安装)
curl -LsSf https://astral.sh/uv/install.sh | sh
# 创建虚拟环境并安装依赖
uv venv
uv pip install .
或者使用传统的pip:
# 创建虚拟环境
python -m venv .venv
source .venv/bin/activate # Linux/MacOS
# 或
.venv\Scripts\activate # Windows
# 安装依赖
pip install .
复制环境变量示例文件并填写必要的信息:
cp .env.sample .env
编辑.env文件,填写您的OpenRouter API密钥:
OPENROUTER_API_KEY=your_api_key_here
uv run mcp_server.py
# 或指定主机和端口
uv run mcp_server.py --host 127.0.0.1 --port 8080
uv run client.py http://localhost:8080/sse
已初始化SSE客户端...
正在列出工具...
已连接到服务器,可用工具:['search_gutenberg_books']
AI助手已启动!
输入您的问题或输入'quit'退出。
用户: 请推荐一些詹姆斯·乔伊斯的作品
AI: 让我帮您搜索詹姆斯·乔伊斯的作品...
[调用工具 search_gutenberg_books,参数:{"search_terms": ["James Joyce"]}]
找到以下作品:
- 《尤利西斯》(Ulysses)
- 《都柏林人》(Dubliners)
- 《青年艺术家的画像》(A Portrait of the Artist as a Young Man)
...
.
├── mcp_server.py # SSE服务器实现
├── client.py # MCP客户端实现
├── .env.sample # 环境变量示例
├── pyproject.toml # 项目依赖和配置管理
└── README.md # 项目文档
这种实现意味着MCP服务器现在可以作为一个运行进程工作,而代理(客户端)可以在任何时间、任何地点连接、使用和断开连接。换句话说,基于SSE的服务器和客户端可以是解耦的过程(甚至可以在解耦的节点上运行)。这与基于STDIO的模式不同,在基于STDIO的模式中,客户端本身会启动服务器作为子进程。这种方法更适合“云原生”用例。
如果您遇到任何问题,请检查:
如果您遇到任何问题,请: