MCP 核心知识体系:从协议原理到工程落地的关键认知
1. MCP 是什么?它解决了什么问题?
面试要点:不要只背定义,要强调“碎片化”痛点和“标准化”价值。
回答要点:MCP 是 Anthropic 推出的工具调用标准化协议,核心解决 Agent 工具生态的碎片化问题。
传统模式下,每个工具的 API 格式、认证方式和错误处理逻辑各不相同,导致集成成本极高。MCP 定义了统一的工具发现、调用和错误处理规范,让 Agent 能用同一套方式接入任意兼容工具,将“N×M”的适配难题简化为“N+M”。
2. MCP 的核心原理、优势及适用场景
面试要点:采用“架构-差异-场景”三段式回答,体现结构化思维。
回答要点:MCP 通过标准接口让 Agent 统一调用工具,相比直接调 API 更具扩展性,适合多工具集成场景。
建议从以下三个维度展开:

- 核心架构:由 MCP Client(Agent 侧,负责连接与调用)、MCP Server(工具侧,提供元数据与执行)、MCP Protocol(通信标准)三部分组成。流程为:Client 连接 Server → Server 返回工具列表(含名称/描述/参数)→ LLM 选择工具 → Client 发起调用 → Server 执行并返回结果。
- 核心差异:直接调用 API 需为每个工具单独开发适配器、手动维护列表并各自处理校验与异常;MCP 实现一次集成、全局复用,支持工具动态发现、基于 JSON Schema 的自动参数校验及统一错误处理。本质上是将工具集成的“重复成本”转化为“一次投入、无限复用”。
- 适用场景:
- 集成 10 个以上外部工具的企业级 Agent(显著降低集成成本);
- 多 Agent 共享工具库(Server 作为统一供给方,避免重复开发);
- 工具需动态更新的场景(新增工具无需重启 Agent)。
- 注:若工具数量少且格式固定,直接调用 API 反而更轻量。
3. MCP 的三层架构(Host / Client / Server)如何工作?
面试要点:厘清 Host 与 Client 的边界,这是新人最容易混淆的概念。
回答要点:Host 是宿主应用,Client 是协议连接器,Server 是工具提供者;三者各司其职,通过 stdio 或 HTTP 通信。
- Host(宿主):面向用户的 AI 应用(如 Claude Desktop),负责用户交互与安全管理。
- Client(客户端):协议连接器,维护与 Server 的会话,处理消息路由。
- Server(服务端):暴露工具能力,执行具体逻辑并返回结果。

Host 通过 Client 连接 Server 并调用工具,通信方式支持本地 stdio 和远程 HTTP/SSE。理解这一分层,是正确设计 MCP 系统的前提。
4. MCP 工具调用与普通 HTTP API 的本质区别
面试要点:核心在于“调用方”和“语义层次”的不同,务必提及 description 字段对 LLM 的关键作用。
回答要点:HTTP API 为人/程序设计,依赖硬编码;MCP 为 LLM 设计,具备语义自描述能力,支持动态发现与自主决策。
| 维度 | HTTP API | MCP Tool |
|---|---|---|
| 设计对象 | 人 / 程序 | LLM |
| 调用方式 | 查文档 → 硬编码 → 固定结果 | tools/list 发现 → 理解语义 → 自主调用 → 动态结果 |
| 自描述性 | 无,需预先了解接口 | 有,description 字段供 LLM 理解用途与参数 |
关键洞察:MCP 工具的 description 是给 LLM 看的自然语言说明,其质量直接决定 LLM 能否正确选择和使用工具。
# ✅ 好的 description(LLM 能准确理解)
@Tool(description="查询指定城市的实时天气,支持中英文城市名,返回温度、湿度、天气状况")
# ❌ 差的 description(LLM 易误用)
@Tool(description="天气查询")
5. MCP Server 的三类能力(Resources / Tools / Prompts)
面试要点:按“交互模式”区分三者,并给出设计原则。
回答要点:Resources 只读数据,Tools 执行操作,Prompts 复用模板;能用 Resources 就不用 Tools。
- Resources(资源):只读数据访问,类似文件系统。无副作用、幂等、可缓存。例如:读取文件、查询数据库记录、获取 API 文档。
- Tools(工具):有副作用的操作执行,类似函数调用。可能修改状态,需权限控制。例如:发送邮件、写入文件、执行 SQL。
- Prompts(提示词模板):可复用的参数化 Prompt 片段。用于标准化常用指令,减少重复编写。例如:代码审查模板、SQL 生成模板。
本章节为 Public 试读订购后可阅读全文。
需付费查看