我的测试学习站TEST LEARNING HUB
开始学习
首页/我的面试题/什么是 MCP,什么时候使用 MCP

什么是 MCP,什么时候使用 MCP

什么是 MCP

MCP(Model Context Protocol)是一个开放协议,用来标准化 AI 应用和外部系统之间的连接方式。它把“模型可以调用什么工具、读取什么数据、使用什么提示模板”定义成统一接口,让不同的 AI 客户端可以复用同一套服务。

可以把 MCP 理解成 AI 世界的“USB 接口”:

  • MCP Server:暴露工具、资源和提示模板,例如 GitHub、数据库、Jira、监控平台。
  • MCP Client:AI 应用或 Agent,负责发现并调用 Server 提供的能力。
  • 传输层:常见有 stdio(本地进程)和 HTTP/SSE(远程服务)。
  • 消息格式:JSON-RPC 2.0。

MCP 的核心能力

能力作用例子
Tools可调用的函数run_test、query_database、create_issue
Resources可读取的数据文件、日志、数据库表、文档
Prompts可复用的提示模板代码审查、故障排查、测试计划
Sampling服务端请求模型生成让 Agent 参与多步推理
Roots限定可访问的目录或资源范围只允许访问某个仓库

什么时候使用 MCP

适合使用 MCP 的场景:

  1. 多个 AI 客户端要复用同一套集成 例如公司内部有 Jira、测试平台、日志平台,希望 Claude、Cursor、ZCode 等客户端都能用同一套连接。

  2. 需要标准化工具发现和调用 工具有明确的输入输出 schema、权限和错误约定,而不是每个 Agent 写一套临时脚本。

  3. 需要访问外部系统 数据库、对象存储、监控、CI/CD、工单系统、知识库。

  4. 需要权限和审计 MCP Server 可以统一做鉴权、限流、审计和敏感操作控制。

  5. 需要长期运行的服务 远程 MCP Server 可以持续提供能力,而不是每次启动一个脚本。

什么时候不需要 MCP

  • 一次性任务,用 CLI 或脚本更简单。
  • 纯文本生成,不需要访问外部系统。
  • 直接调用一个简单 HTTP API 就够,没必要增加协议层。
  • 安全或合规不允许外部服务接入。
  • 对延迟极其敏感,额外的协议层没有收益。

MCP 和 Function Calling 的区别

  • Function Calling 是模型调用工具的一种机制:模型输出一个函数名和参数,由宿主执行。
  • MCP 是工具和数据的接入协议:它解决的是“工具从哪里来、如何发现、如何鉴权、如何复用”。

两者可以配合:MCP Server 提供工具,宿主把工具暴露给模型,模型通过 function calling 调用。

设计一个 MCP Server 的要点

  1. 工具粒度 一个工具做一件事,参数清晰,避免“万能工具”。

  2. Schema 用 JSON Schema 定义参数和返回值,必填项、类型、枚举写清楚。

  3. 幂等和副作用 查询类工具必须只读;写操作要支持幂等键或确认机制。

  4. 鉴权 使用最小权限,区分读写;敏感操作二次确认。

  5. 错误契约 区分参数错误、权限错误、业务错误和系统错误,返回可读信息。

  6. 可观测性 记录调用方、参数摘要、耗时、结果状态,避免记录密钥和敏感数据。

  7. 版本管理 工具名和参数变更要兼容,废弃要有过渡期。

示例:测试平台 MCP Server

可以暴露这些工具:

  • list_test_cases(project, module):查询用例
  • run_test_case(case_id, env):执行用例
  • get_run_report(run_id):获取报告
  • query_logs(service, trace_id, start, end):查询日志
  • create_bug(title, severity, evidence):创建缺陷

Agent 可以在一次排查中依次调用:查用例 → 执行 → 看报告 → 查日志 → 建缺陷。

在 ZCode 中搭建和检测 MCP

先分清 / 菜单和 MCP

ZCode 的 / 菜单主要展示:

  • 命令,例如 /init
  • 计划模式
  • 技能,例如 $brainstorming、$computer-use
  • 子智能体

MCP 工具通常不会在 / 菜单里逐条出现,而是以工具形式提供给 Agent,命名一般类似:

mcp__<server-name>__<tool-name>

所以:

  • 看“用了什么 Skill”:输入 /,看“技能”分组。
  • 看“用了什么 MCP”:看 MCP 服务器配置、连接状态和工具列表,或者看 Agent 实际调用的 mcp__... 工具名。

如果某个 MCP Server 同时提供了 prompt 或 command,宿主可能会把它显示在 / 菜单里;但这不是 MCP 工具本身的常规入口。

如何搭建一个 MCP Server

  1. 准备 Server

    可以是本地 stdio 进程,也可以是远程 HTTP/SSE 服务。Server 需要声明工具、资源或 prompt。

  2. 在 ZCode 中配置

    典型配置是 mcpServers:

    {
      "mcpServers": {
        "my-server": {
          "command": "node",
          "args": ["F:/path/to/server.mjs"],
          "env": {
            "TOKEN": "your-token"
          }
        }
      }
    }
    

    远程服务则使用 URL 和鉴权头。

  3. 重启或重新连接

    在 ZCode 的 MCP 设置里确认 server 状态为 connected。

  4. 确认工具出现

    工具列表中应出现 mcp__my-server__*,例如:

    mcp__my-server__health
    mcp__my-server__list_items
    mcp__my-server__run_task
    
  5. 调用只读工具验证

    先调用 health、list 这类无副作用工具,确认参数、返回和错误处理正常,再测试写操作。

如何检测 MCP 是否接入成功

检查项方法
配置是否生效查看 ZCode MCP 设置或 mcpServers 配置
连接是否正常看 server 状态是否为 connected
工具是否注册看工具列表是否有 mcp__<server>__ 前缀
参数是否正确调用只读工具,检查 schema 和返回
鉴权是否通过看 401/403、token、header 配置
是否有副作用写操作先确认幂等和权限
日志是否报错看启动、连接、超时、stderr
是否被实际调用看会话中的工具调用名和结果

如果工具没有出现:

  • 检查 command 是否可执行、args 路径是否正确。
  • 本地 stdio 模式要确认 Node/Python 路径和环境变量。
  • 检查 Server 启动日志和 stderr,很多问题会在启动阶段直接报错。
  • 远程模式检查 URL、证书、鉴权头和网络连通性。
  • 修改配置后需要重启或重新连接 MCP。

Skill、MCP、Command 的检测入口

类型怎么发现怎么确认生效
Skill输入 /,看“技能”分组出现 $skill-name,来源和描述正确
Command输入 /,看“命令”分组选中后能执行对应动作
MCP看 MCP 设置和工具列表出现 mcp__server__tool,只读调用成功

一个实际检查顺序

  1. 输入 /,确认 Skill 和 Command 是否加载。
  2. 打开 MCP 设置,确认 server 是否 connected。
  3. 看工具列表是否有 mcp__... 工具。
  4. 调用一个只读工具,确认鉴权和返回。
  5. 再看 Agent 的执行轨迹,确认它实际调用了哪个 Skill 或 MCP 工具。

面试回答模板

MCP 是一个标准化 AI 与外部系统连接方式的协议,包含工具、资源、提示模板等能力,常见传输是 stdio 和 HTTP。它适合多客户端复用、需要统一鉴权和工具发现的场景,比如测试平台、数据库、日志平台和工单系统。一次性脚本或简单 API 调用不需要 MCP。设计时重点考虑工具粒度、schema、幂等、权限、错误契约和可观测性。