🔌 MCP协议:AI工具生态的「USB标准」,数千个工具一键接入!

11 阅读1分钟

第08期 · MCP 协议:AI 工具集成的 USB 标准

系列:每日 AI 知识点
期数:第 08 期
主题:MCP 协议(Model Context Protocol)
难度:⭐⭐⭐(进阶)
一句话:MCP 是 Anthropic 提出的 AI 工具集成统一标准,让任何 AI 都能以标准化方式调用任何工具,正在成为行业规范。


一、MCP 诞生的背景

工具集成的"碎片化"困境

在 MCP 出现之前,AI 工具集成是一片混乱:

问题一:每个 AI 都有自己的接口格式

# OpenAI 的工具调用格式
{
  "type": "function",
  "function": {
    "name": "get_weather",
    "parameters": {...}
  }
}

# Anthropic Claude 的工具调用格式
{
  "type": "tool_use",
  "name": "get_weather",
  "input": {...}
}

# 自定义 AI 的格式
{
  "action": "get_weather",
  "args": {...}
}

同一个工具,要为不同的 AI 写三套不同的集成代码。

问题二:工具换 AI 就要重写

你为 Claude 开发了一个数据库查询工具,换成 GPT-4 就要重写接口适配代码。

问题三:生态无法共享

A 公司开发了一个优秀的 TAPD 工具,B 公司想用,但因为接口不兼容,还是要自己重写。

MCP 的解决方案

MCP(Model Context Protocol,模型上下文协议) 是 Anthropic 在 2024 年 11 月发布的开放标准,目标是:

让任何 AI 都能以标准化方式调用任何工具,就像 USB 接口一样即插即用。


二、MCP 的核心概念

MCP协议:AI工具集成的统一标准

类比理解:USB 接口

没有 USB 标准的世界:
  鼠标有鼠标接口
  键盘有键盘接口
  U盘有U盘接口
  → 每台电脑需要无数种接口,每个设备只能用特定电脑

有了 USB 标准:
  所有设备统一使用 USB 接口
  → 任何设备可以接任何电脑,生态爆发

MCP 对 AI 工具集成的意义完全相同:
  所有工具统一使用 MCP 接口
  → 任何工具可以被任何支持 MCP 的 AI 使用

MCP 的数学优势

没有 MCP:
  N 个 AI × M 个工具 = N×M 个集成代码

有了 MCP:
  N 个 AI + M 个工具 = N+M 个集成代码
  (每个 AI 只需实现一次 MCP Client,
   每个工具只需实现一次 MCP Server

三、MCP 的三层架构

MCP架构:Host、Client、Server三层模型

第一层:Host(宿主应用)

Host 是用户直接交互的 AI 应用:

Host 类型示例
桌面 AI 应用Claude Desktop、ChatGPT Desktop
IDE 插件Cursor、GitHub Copilot
自定义 AI 应用企业内部 AI 助手(如 Knot)
命令行工具Claude CLI

Host 的职责:

  • 管理用户对话流程
  • 内置 MCP Client
  • 决定加载哪些 MCP Server

第二层:Client(连接器)

MCP Client 通常内置在 Host 中,负责:

1. 发现:扫描配置,找到可用的 MCP Server
2. 连接:建立与 MCP Server 的通信连接
3. 协商:获取 Server 提供的工具列表
4. 转发:将 AI 的工具调用请求转发给 Server
5. 返回:将 Server 的执行结果返回给 AI

第三层:Server(工具提供者)

MCP Server 封装具体的工具能力,提供三类资源:

Tools(工具):AI 可以调用的函数

# 一个 GitHub MCP Server 的工具定义示例
@mcp.tool()
def list_pull_requests(repo: str, state: str = "open") -> list:
    """列出指定仓库的 Pull Request"""
    return github_api.get_pulls(repo, state=state)

@mcp.tool()
def create_issue(repo: str, title: str, body: str) -> dict:
    """在仓库中创建 Issue"""
    return github_api.create_issue(repo, title=title, body=body)

Resources(资源):AI 可以读取的数据

# 文件系统 MCP Server 的资源定义
@mcp.resource("file://{path}")
def read_file(path: str) -> str:
    """读取指定路径的文件内容"""
    with open(path, 'r') as f:
        return f.read()

Prompts(提示词):预定义的提示模板

# 预定义的代码审查提示词
@mcp.prompt()
def code_review_prompt(language: str, code: str) -> str:
    return f"""请对以下 {language} 代码进行专业审查:
    
代码:
{code}

请从以下维度分析:
1. 代码质量和可读性
2. 潜在的 Bug 和安全风险
3. 性能优化建议
4. 符合最佳实践的程度"""

四、MCP 工具调用完整流程

MCP工具调用完整流程时序图

详细流程解析

步骤一:初始化阶段(一次性)

Host 启动时:
1. 读取 MCP 配置文件,找到所有配置的 MCP Server
2. 建立连接,获取每个 Server 提供的工具列表
3. 将所有工具信息注入到 AI 的系统提示词中

系统提示词示例:
「你有以下工具可以使用:
- github.list_pull_requests(repo, state): 列出PR
- github.create_issue(repo, title, body): 创建Issue
- filesystem.read_file(path): 读取文件
...」

步骤二:工具调用阶段(每次对话)

1. 用户:「帮我查一下 palm_lpos_app 仓库最近的 PR」

2. AI 思考:
   「用户想查 PR,我有 github.list_pull_requests 工具
    参数:repo="palm_lpos_app", state="open"3. AI 生成工具调用:
   {
     "tool": "github.list_pull_requests",
     "arguments": {
       "repo": "palm_lpos_app",
       "state": "open"
     }
   }

4. MCP Client 接收调用请求,转发给 GitHub MCP Server

5. GitHub MCP Server 执行:
   调用 GitHub API → 获取 PR 列表 → 返回结果

6. 结果返回给 AI:
   [
     {"id": 123, "title": "修复支付回调超时问题", "author": "zhangsan"},
     {"id": 124, "title": "优化掌纹识别算法", "author": "lisi"}
   ]

7. AI 整合结果,生成自然语言回答:
   「palm_lpos_app 仓库目前有 2 个待合并的 PR:
    1. #123 修复支付回调超时问题(zhangsan)
    2. #124 优化掌纹识别算法(lisi)」

五、主流 MCP Server 生态

截至 2025 年,MCP 生态已经相当丰富:

官方 MCP Server

MCP Server功能适用场景
Filesystem读写本地文件文档处理、代码操作
GitHub仓库、PR、Issue 管理代码协作
Google Drive云端文件操作文档共享
Slack消息发送、频道管理团队通信
PostgreSQL数据库查询数据分析
Brave Search网页搜索实时信息获取

社区 MCP Server

MCP Server功能
TAPD MCP腾讯 TAPD 需求管理
工蜂 MCP腾讯工蜂代码仓库
Jira MCPAtlassian Jira 项目管理
Linear MCPLinear 任务管理
Notion MCPNotion 文档操作

自定义 MCP Server(企业内部)

# 用 Python 快速实现一个自定义 MCP Server
from mcp.server import FastMCP

mcp = FastMCP("刷掌设备管理 MCP")

@mcp.tool()
def query_device_status(device_sn: str) -> dict:
    """查询刷掌设备的实时状态"""
    return device_api.get_status(device_sn)

@mcp.tool()
def list_active_alarms(severity: str = "P0") -> list:
    """列出当前活跃的告警"""
    return alarm_system.get_alarms(severity=severity)

@mcp.tool()
def trigger_device_restart(device_sn: str) -> bool:
    """触发设备重启(需要权限验证)"""
    return device_api.restart(device_sn)

if __name__ == "__main__":
    mcp.run()

六、MCP 配置实践

Claude Desktop 配置示例

// ~/.config/claude/claude_desktop_config.json
{
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "your_token_here"
      }
    },
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem",
               "/home/user/workspace"]
    },
    "tapd": {
      "command": "mcporter",
      "args": ["--server", "tapd"]
    },
    "palm-device": {
      "command": "python3",
      "args": ["/path/to/palm_device_mcp.py"]
    }
  }
}

配置完成后,Claude Desktop 就能自动发现和使用这些工具。

Knot 平台的 MCP 集成

Knot 平台内置了 MCP 支持,可以通过配置直接使用企业内部的 MCP Server:

可用的 MCP Server(Knot 平台):
✅ TAPD MCP - 需求和缺陷管理
✅ 工蜂 MCP - 代码仓库操作
✅ iWiki MCP - 企业知识库
✅ 刷掌设备 MCP - 设备状态和告警
✅ 蓝盾 MCP - CI/CD 流水线

七、MCP 的安全考虑

权限控制

# MCP Server 中的权限验证示例
@mcp.tool()
def delete_device_data(device_sn: str) -> bool:
    """删除设备数据(危险操作)"""
    # 验证调用者权限
    if not auth.has_permission("device:delete"):
        raise PermissionError("无权执行此操作")
    
    # 记录操作日志
    audit_log.record("delete_device_data", device_sn)
    
    # 执行操作
    return device_api.delete_data(device_sn)

敏感信息保护

# 避免在工具描述中暴露敏感信息
@mcp.tool()
def query_user_info(user_id: str) -> dict:
    """查询用户信息"""
    data = db.query(user_id)
    # 脱敏处理,不返回敏感字段
    return {
        "name": data["name"],
        "device_count": data["device_count"],
        # 不返回:phone、id_card、bank_account
    }

操作审计

所有通过 MCP 执行的操作都应该记录审计日志:
- 操作时间
- 操作者(哪个 AI 应用)
- 操作内容(调用了哪个工具,传入什么参数)
- 操作结果

八、MCP vs 传统 API 集成

对比维度传统 API 集成MCP
集成成本每个 AI 单独开发一次开发,多处使用
标准化程度各自为战统一协议
生态共享无法共享社区共享
AI 感知AI 不知道有哪些工具AI 自动发现工具
工具描述需要手动注入提示词自动注入
适用场景固定集成动态扩展

九、一句话总结

MCP = AI 工具集成的 USB 标准。它定义了 AI(Host/Client)和工具(Server)之间通信的统一协议,让工具开发者只需实现一次 MCP Server,就能被所有支持 MCP 的 AI 使用,正在成为 AI 工具集成领域的行业规范。


延伸阅读


下一期预告:第09期 · Skills 技能体系 — MCP 让 AI 能调用工具,Skills 则让 AI 拥有"专业能力模块"。了解如何通过 Skills 让 AI 从通才变专才。