一个专门设计用于与实现模型上下文协议(MCP)的服务器进行交互的客户端库,该服务器通过服务器发送事件(SSE)实现。此库提供了一种无缝的方式与启用MCP的FastAPI服务进行交互。
# 使用pip安装
pip install fastapi-mcp-client
# 或者使用UV
uv add fastapi-mcp-client
import asyncio
from fastapi_mcp_client import MCPClient
async def main():
async with MCPClient("http://localhost:8000") as client:
# 调用非流式操作
result = await client.call_operation("echo", {"message": "Hello, MCP!"})
print(f"回声结果: {result}")
# 调用流式操作,使用SSE
stream = await client.call_operation(
"generate_numbers",
{"count": 5},
stream=True
)
async for event in stream:
print(f"事件: {event}")
asyncio.run(main())
仓库中包含了帮助您入门的示例。以下是运行它们的方法:
git clone https://github.com/RooseveltAdvisors/fastapi-mcp-client.git
cd fastapi-mcp-client
# 创建并激活虚拟环境
uv venv
source .venv/bin/activate # 在Windows上: .venv\Scripts\activate
# 安装所有依赖项,包括示例
uv sync --all-extras
# 在一个终端中
cd examples/server
python simpler_server.py
这将启动一个具有多个MCP启用端点的FastAPI服务器:
echo:返回您发送的消息generate_numbers:流式传输一系列数字search_documents:模拟带有流式传输结果的文档搜索calculate:评估简单的数学表达式# 在另一个终端(激活虚拟环境)
cd examples
python sse_example.py
from fastapi_mcp_client import MCPClient, MCPClientConfig
config = MCPClientConfig(
base_url="http://localhost:8000",
timeout=60.0,
log_level="DEBUG"
)
async with MCPClient("http://localhost:8000", config=config) as client:
# 使用自定义配置调用流式工具
stream = await client.call_operation(
"generate_numbers",
{"count": 10},
stream=True
)
async for event in stream:
print(f"接收事件: {event}")
sequenceDiagram
participant C as 客户端
participant S as 服务器
Note over C,S: 建立SSE连接
C->>+S: GET /mcp (Accept: text/event-stream)
S-->>-C: 200 OK (连接打开)
S-->>C: SSE: data: /mcp/messages/?session_id=XXX
Note over C: 解析session_id=XXX
Note over C,S: MCP初始化
C->>+S: POST /mcp/messages/?session_id=XXX <br> Payload: {method: "initialize", ...}
S-->>-C: 202 已接受
Note over C,S: MCP工具调用
C->>+S: POST /mcp/messages/?session_id=XXX <br> Payload: {method: "tools/call", ...}
S-->>-C: 202 已接受
Note over C,S: 流式传输结果
S-->>C: SSE: data: {result_part_1}
S-->>C: SSE: data: {result_part_2}
S-->>C: SSE: data: {final_result}
Note over S: (关闭SSE连接或发送关闭事件)
查看示例目录获取更多内容:
欢迎贡献!请随时提交Pull Request。
克隆仓库
git clone https://github.com/RooseveltAdvisors/fastapi-mmcp-client.git
cd fastapi-mcp-client
安装uv
curl -LsSf https://astral.sh/uv/install.sh | sh
创建并激活虚拟环境
uv venv
source .venv/bin/activate # 在Windows上: .venv\Scripts\activate
安装开发依赖项
uv sync --all-extras
运行测试
pytest
git checkout -b feature/amazing-feature)git commit -m '添加一些惊人的功能')git push origin feature/amazing-feature)本项目采用MIT许可证 - 查看LICENSE文件获取详情。