侧边栏壁纸
  • 累计撰写 121 篇文章
  • 累计创建 19 个标签
  • 累计收到 3 条评论

目 录CONTENT

文章目录

🔍 从实战到原理:深入理解 MCP 协议的本质与实践

zero
2026-01-12 / 0 评论 / 0 点赞 / 0 阅读 / 3636 字
温馨提示:
本文最后更新于 2026-01-12,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

📦 一、自建 MCP Server 实践指南

MCP 协议的魅力不仅在于模型调用外部工具的能力,更在于它开放、语言无关、适配灵活。本节通过构建一个天气查询服务,实战掌握 MCP Server 的开发流程。

✅ 技术栈选择与环境准备

  • 语言:采用 Python,因其使用广泛、开发门槛低,适合快速入门。MCP 协议本身是语言无关的。
  • Python 版本要求
    • macOS:≥ 3.10,建议使用 Homebrew 安装。
    • Windows:官网下载并安装最新版 Python。
  • 工具链
    • uv:现代化 Python 包管理工具。
    • VS Code:主力开发编辑器。
    • Cine 插件:用于测试 MCP Server 的 VS Code 插件。

🧱 步骤流程

  1. 创建项目

    uv new weather
    cd weather
    uv venv
    source .venv/bin/activate  # Windows 用 .venv\Scripts\activate
    
  2. 安装依赖

    uv add mcp-cli httpx
    
  3. 编辑核心代码(weather.py)

    • 使用 fast_mcp 初始化 MCP Server。
    • 定义请求 NWS(美国气象局)的辅助函数。
    • 实现并注册两个工具函数 get_alertsget_forecast
    • 使用 @mcp.tool() 装饰器注册工具,注释(docstring)将被自动解析为工具描述和参数定义。
    • transport="stdio" 启动 MCP Server。
  4. 运行示例:

    uv run weather.py
    

🧪 二、分析 MCP 输入输出通信机制

📥 如何查看 MCP 交互过程?

默认使用 Cine 测试时,输入输出是被隐藏的。为观察底层通信,可编写 mcplogger.py 脚本,作为中间人转发 stdin/stdout 数据并记录日志。

python mcplogger.py uv run weather.py

🧾 日志分析(MCP.IO.log)

日志分为三个阶段:

1. 握手阶段

  • 客户端发起问候

    {
      "type": "hello",
      "client": "Cine",
      "protocol_version": "2024-11-05"
    }
    
  • 服务器回应

    {
      "type": "hello_reply",
      "server": "WEATHER",
      "version": "1.0.0",
      "capabilities": {...}
    }
    

2. 工具发现阶段

客户端请求工具列表,服务器返回注册的所有 tool 定义,包括:

  • name
  • description(从 docstring 提取)
  • input_schema(基于 JSON Schema 规范)

3. 工具调用阶段

当模型需要执行功能时:

  • 客户端向 MCP Server 发送调用请求,包含 tool 名称及参数
  • MCP Server 执行并返回结构化结果(如天气描述文本)

🧑‍💻 三、跳过 Host,手动交互 MCP Server

由于 MCP 协议采用 stdin/stdout 通信格式,理解协议结构后,你可以在终端中手动构造 JSON 与 MCP Server 交互,而无需 Cine、ChatStudio 等 MCP Host 工具。

这也说明 MCP Server 是独立于模型和客户端存在的。你甚至可以构造脚本将其集成到非 AI 系统中使用。


🧠 四、重新理解 MCP 协议的本质

MCP 实际定义了什么?

  • 工具注册机制:告知 Host 当前 MCP Server 有哪些工具(Tool)可用。
  • 调用约定:定义工具的参数格式、执行方式、结果格式。

什么不属于 MCP 协议?

  • ❌ 模型交互机制(Function Calling / XML 等)
  • ❌ 用户输入解析方式
  • ❌ 自然语言与结构化数据的映射流程

核心观点:

“MCP协议规定的是函数的发现与调用,而不是模型如何理解这些函数。”

换句话说:MCP 只是帮助模型感知“这个世界上还有什么工具可以用”,而不干涉模型如何进行语言解析。


✅ 总结

本教程从实战到原理,逐步揭示了 MCP 的工作机制与核心理念:

  • MCP Server 是一个通用、语言无关的函数服务平台
  • MCP 协议关注的是工具层的注册与调用,不规定模型如何处理上下文
  • 理解 MCP 协议本质,可以实现更灵活、更高性能的大模 型插件体系

🚀 下一步建议:尝试开发你自己的工具(如文件检索、数据库查询等),将其注册为 MCP Server,扩展大模型的实用能力。

0

评论区