MCP 工具演示 / MCP Tool Showcase
Forked from modelcontextprotocol/python-sdk. 这个仓库聚焦于演示 Model Context Protocol(MCP)工具在不同传输层上的实际运行效果,而不是原库的全量 SDK 发行版。
项目背景 Background
- 保留了上游 MIT 许可的核心实现,并在
examples/与scripts/下补充了可直接运行的演示。 - 重点展示两个常见传输:服务器推送事件(SSE)与 Streamable HTTP。
- 提醒:任何基于本仓库的再分发或修改都必须继续遵循
LICENSE中的 MIT 许可条款。
环境准备 Setup
- Clone 仓库 / Clone this repo locally.
- 使用 uv 安装依赖(默认会创建
.venv/)
uv sync --frozen --all-extras --dev- 确保 8000 端口空闲;两个演示脚本都会在本地
127.0.0.1:8000启动服务器。
演示脚本 Demo Scripts
SSE 传输 / SSE Transport
bash scripts/run_sse_demo.sh- 脚本会自动终止占用端口的旧进程,启动
Streamable Progress Demo对应的 SSE 服务器,并运行客户端。 - 服务器日志输出到
/tmp/sse_server.log,客户端控制台输出(包括原始 SSE 帧与 JSON-RPC 序列)写入/tmp/sse_client.log。 - 终端会看到形如
[run] starting server -> ...、[run] waiting for server to be ready的状态提示;客户端日志中会出现SSE ...、[run] client finished; stopping server等步骤说明,而客户端日志里可观察到>>> REQUEST POST http://127.0.0.1:8000/mcp、<< initialize.result protocol=...、~~ progress callback: ...等详细记录。
日志与排错 Logs & Troubleshooting
- 若脚本无法找到
.venv/bin/python,请确认已执行uv sync;首次运行推荐:
uv sync --frozen --all-extras --dev
uv pip install -e .这样可在 .venv/ 中注册项目自身的包元数据,避免运行时找不到 mcp 发行版。
- 如需要查看实时输出,可在运行脚本后执行
tail -f /tmp/sse_client.log或tail -f /tmp/streamable_http_client.log。 - 两个演示均使用
FastMCP,具体实现位于:
- SSE 服务端:examples/snippets/servers/sse_progress_demo.py - Streamable HTTP 服务端:examples/snippets/servers/streamable_progress_demo.py - 客户端示例:examples/snippets/clients/sse_progress_client.py / examples/snippets/clients/streamable_progress_client.py
许可 License
本仓库继续沿用 MIT 许可证;请参阅 LICENSE 了解完整条款。 This fork remains MIT-licensed. Refer to LICENSE for details.
