M
MCP Protocol
MCP Host 与 MCP Server 交互协议流程
Created 4/12/2026
Updated about 5 hours ago
README
Repository documentation and setup instructions
MCP Host 与 MCP Server 交互协议流程
项目介绍
这个工程用于学习和掌握 MCP Host 与 MCP Server 之间的交互协议流程。
项目核心思路:
weather.py提供一个 MCP Server(基于 FastMCP)mcp_logger.py作为“透明中转代理”插入在 Host 和真实 Server 之间- 所有 Host ↔ Server 的通信内容都会被记录到日志,便于学习协议交互细节
整个交互过程的日志记录在:
mcp_traffic.log
参考示例(官方文档): https://modelcontextprotocol.io/docs/develop/build-server
项目结构
mcp-protocol/
├── weather.py # MCP weather server,提供天气查询工具
├── mcp_logger.py # MCP 通信中转与日志记录代理
├── mcp_traffic.log # 运行后生成/追加的通信日志
└── requirement.txt # 依赖列表
交互流程说明
为了学习 MCP Host 和 MCP Server 的交互过程,在 MCP Server 的启动命令中,不是直接执行:
uv --directory /ABSOLUTE/PATH/TO/PARENT/FOLDER/weather run weather.py
而是改为先经过 mcp_logger.py:
python3 /ABSOLUTE/PATH/TO/PARENT/FOLDER/weather/mcp_logger.py \
uv --directory /ABSOLUTE/PATH/TO/PARENT/FOLDER/weather run weather.py
这样 mcp_logger.py 会负责:
- 接收 MCP Host 发给 Server 的 stdin 消息
- 转发给真实 MCP Server
- 接收 Server 返回给 Host 的 stdout 消息
- 全量记录双向消息(含时间戳)到
mcp_traffic.log
MCP 配置示例
在 MCP Host 侧可按如下方式配置:
{
"mcpServers": {
"weather": {
"disabled": false,
"timeout": 60,
"type": "stdio",
"command": "python3",
"args": [
"/ABSOLUTE/PATH/TO/PARENT/FOLDER/weather/mcp_logger.py",
"uv",
"--directory",
"/ABSOLUTE/PATH/TO/PARENT/FOLDER/weather",
"run",
"weather.py"
]
}
}
}
重点:在
uv run weather.py前增加mcp_logger.py做数据中转和日志记录。
依赖安装
项目依赖见 requirements.txt,请先安装。
1) 安装 uv
curl -LsSf https://astral.sh/uv/install.sh | sh
2) 安装 Python 依赖
可选择以下任一方式:
pip install -r requirement.txt
或(推荐,使用 uv):
uv sync
运行与学习建议
- 按上面的 MCP 配置启动
weatherserver。 - 在 Host 中调用
get_alerts、get_forecast等工具。 - 打开
mcp_traffic.log观察完整的 JSON-RPC 往返过程。 - 重点关注 initialize、tools/list、tools/call 等请求与响应结构。
通过这个流程,你可以直观看到 MCP Host 与 MCP Server 的协议交互细节。
Quick Setup
Installation guide for this server
Install Package (if required)
uvx mcp-protocol
Cursor configuration (mcp.json)
{
"mcpServers": {
"whugeomatics-mcp-protocol": {
"command": "uvx",
"args": [
"mcp-protocol"
]
}
}
}