Skip to content

MCP 单独讲解:Agent / AI 应用开发面试版

⏱ 阅读约 18 分钟 ⭐ 热门话题 📚 Agent 开发系列(4/5)

适用场景:Agent 开发、AI 应用开发、Java + Spring AI 项目面试 核心目标:让你能讲清楚 MCP 是什么、为什么出现、怎么实现、和 Tool Calling / RAG / Agent 的关系、如何落到你的项目里


📚 Agent 开发系列1. 面试扫盲2. ReAct Agent3. Harness4. MCP(本篇)5. Skill

0. 一句话总结

MCP,全称 Model Context Protocol,可以理解为“AI 应用连接外部工具、数据源和业务系统的统一协议”。

如果说传统后端通过 REST API、RPC、SDK 调用外部服务,那么在 Agent 应用里,MCP 试图提供一套统一方式,让大模型应用可以发现并调用外部工具、读取外部资源、复用提示词模板,从而减少每个工具都单独适配的成本。

面试里可以这样说:

MCP 是一种面向 AI 应用的上下文和工具接入协议。它把外部系统能力抽象成 Tools、Resources、Prompts 等标准能力,由 MCP Server 暴露出来,MCP Client 负责连接和发现这些能力,最终让 Agent 能以统一方式调用文件、数据库、搜索、业务接口等外部能力。它解决的是 Agent 工具生态标准化和跨系统集成的问题。


1. MCP 为什么会火?

1.1 Agent 应用发展的痛点

随着 Agent 应用越来越复杂,系统通常不再只是:

text
用户问题 → 大模型回答

而是变成:

text
用户问题
→ 意图识别
→ 检索知识库
→ 调用业务工具
→ 访问数据库 / 文件 / 外部 API
→ 多轮规划
→ 输出结果

这会带来几个问题:

  1. 工具接入方式不统一
    每个系统都要单独写工具描述、参数 schema、鉴权逻辑、调用逻辑。

  2. 不同 Agent 框架难以复用工具
    同一个 GitHub 工具、数据库工具、文件工具,LangChain、Spring AI、OpenAI Agents、Claude Desktop 可能都要各写一套适配。

  3. 上下文来源越来越复杂
    Agent 需要读取文件、数据库、知识库、业务系统状态、运行日志,这些都需要标准化暴露给模型。

  4. 本地工具和远程工具都需要纳入 Agent 体系
    比如本地文件、IDE、浏览器、数据库、企业内部系统、SaaS 服务。

MCP 正是为了解决这类问题出现的。


2. MCP 的核心架构

MCP 的基本架构通常包含三类角色:

text
Host Application

MCP Client

MCP Server

External Systems

2.1 Host:宿主应用

Host 是最终承载 AI 交互的应用,比如:

  • Claude Desktop
  • Cursor / AI IDE
  • 企业 AI 助手
  • 你的 Spring AI 后端服务
  • OpenAI Agents 应用
  • 自研 Agent 平台

Host 负责用户交互、模型调用、权限控制、结果展示等。

2.2 MCP Client:协议客户端

MCP Client 通常嵌在 Host 里面,负责:

  • 连接 MCP Server
  • 初始化会话
  • 发现 Server 暴露的能力
  • 把工具、资源、提示词注册给 Agent
  • 转发 Agent 的工具调用请求
  • 接收工具返回结果

面试可以说:

MCP Client 是 Host 和 MCP Server 之间的协议适配层,它不直接处理业务逻辑,而是负责能力发现、协议通信和调用转发。

2.3 MCP Server:能力提供方

MCP Server 负责把某个外部系统的能力标准化暴露出来,例如:

  • 文件系统 MCP Server
  • GitHub MCP Server
  • 数据库 MCP Server
  • 浏览器 MCP Server
  • 企业内部订单 MCP Server
  • 课程系统 MCP Server
  • 搜索 MCP Server

MCP Server 暴露的能力一般包括:

text
Tools      可被调用的动作
Resources  可被读取的上下文资源
Prompts    可复用的提示词模板

3. MCP 的三大核心能力

3.1 Tools:工具

Tools 是 MCP 中最像 Tool Calling 的部分。

它表示一个可被 Agent 调用的动作,例如:

text
query_course(courseId)
create_order(courseId, userId)
search_docs(keyword)
read_file(path)
send_email(to, subject, body)

一个 Tool 通常包括:

text
工具名称
工具描述
参数 schema
返回结构
调用逻辑
权限约束

面试回答:

Tools 适合表达“会产生动作或计算结果的能力”,比如查课程、下单、搜索文档、读数据库。模型根据工具描述判断是否需要调用工具,但真正执行工具的是 MCP Server 或 Host 侧应用,不是模型自己执行。

Tools 和普通 Function Calling 的区别

对比项Function Calling / Tool CallingMCP Tools
关注点单个应用内注册工具跨应用、跨框架标准化暴露工具
工具定义位置通常写在业务应用内由 MCP Server 对外暴露
复用能力复用成本较高同一个 MCP Server 可被不同 Host 使用
适合场景项目内部工具调用工具体系标准化、插件生态、跨平台接入

一句话:

Tool Calling 是“模型如何调用工具”的机制,MCP 是“工具如何标准化暴露给 AI 应用”的协议。


3.2 Resources:资源

Resources 表示 MCP Server 可以提供给模型读取的上下文数据。

常见资源包括:

text
file:///project/README.md
db://course/schema
doc://course/java-basic
log://agent/run/123
config://system/prompt

Resources 更偏“读上下文”,而不是“执行动作”。

例如:

text
读取课程大纲
读取项目文档
读取数据库 schema
读取用户历史记录
读取某个 Agent 运行日志

面试回答:

Resources 适合提供模型需要参考的上下文,例如文件内容、数据库结构、课程资料、配置文档等。它和 Tools 的区别是:Resources 主要是读信息,Tools 更偏执行动作。


3.3 Prompts:提示词模板

Prompts 是 MCP Server 暴露的一组可复用提示词模板。

例如:

text
课程推荐 Prompt
订单确认 Prompt
代码审查 Prompt
SQL 解释 Prompt
报告生成 Prompt

Prompts 可以带参数:

text
generate_course_recommendation_prompt(userLevel, targetJob, budget)

面试回答:

Prompts 可以把某个业务场景下沉淀好的提示词模板标准化暴露出来,方便不同 Agent 或不同应用复用,而不是每个应用都重复写一套 Prompt。


4. MCP 的通信与生命周期

MCP 底层采用 JSON-RPC 风格的消息交互。实际面试不需要背协议细节,但要理解生命周期:

text
1. Client 连接 Server
2. 初始化 initialize
3. 协商协议版本和能力
4. Client 发现 tools / resources / prompts
5. Agent 根据任务选择调用工具或读取资源
6. Server 执行并返回结果
7. Client 将结果交给模型继续推理

常见传输方式

常见传输方式包括:

  1. stdio
    常用于本地 MCP Server,例如本地文件系统、IDE 插件、命令行工具。

  2. Streamable HTTP
    常用于远程 MCP Server,更适合 Web 服务、企业内部服务和云端工具。

  3. SSE / HTTP 类方式
    一些早期实现或框架中会看到 SSE 相关方式,但新实现更应关注官方当前推荐的传输方式。

面试说法:

本地工具常用 stdio,远程服务更适合 Streamable HTTP。对于企业级 Agent 系统,我更倾向于把业务能力封装成远程 MCP Server,并配合鉴权、审计和限流,而不是随意暴露本地命令执行能力。


5. MCP 和 Agent 的关系

Agent 的核心能力通常包括:

text
规划
记忆
工具调用
检索
反思 / 评估
多步执行

MCP 主要解决其中的:

text
工具调用标准化
外部资源标准化
提示词模板复用
跨系统上下文接入

它不是 Agent 本身,也不是大模型本身,而是 Agent 连接外部世界的标准协议。

类比理解

text
LLM       = 大脑
Agent     = 会规划和执行任务的人
Tools     = 手和工具箱
RAG       = 查资料
Memory    = 记忆
MCP       = 标准化插座 / USB-C 接口
业务系统 = 外部世界

面试一句话:

MCP 不是替代 Agent,而是增强 Agent 的外部连接能力。Agent 负责决策和编排,MCP 负责把外部工具、资源和提示词以标准方式暴露出来。


6. MCP 和 RAG 的关系

RAG 的核心是:

text
用户问题
→ 向量检索 / 关键词检索
→ 召回相关上下文
→ 注入 Prompt
→ 模型回答

MCP 可以接入 RAG,但不是 RAG 本身。

例如:

text
MCP Server 暴露 search_course_docs 工具
Agent 调用 search_course_docs
MCP Server 内部查询 Pinecone
返回课程切片
Agent 基于召回内容回答

也可以把资源暴露为:

text
course://java-basic/chapter-1
course://redis/lock

面试说法:

RAG 解决的是“如何从知识库召回内容”,MCP 解决的是“如何把检索能力或外部资源标准化暴露给 AI 应用”。RAG 可以作为 MCP Server 背后的实现能力之一。


7. MCP 和 Tool Calling 的关系

很多人会混淆 MCP 和 Tool Calling。

7.1 Tool Calling 是模型能力

Tool Calling 关注的是:

text
模型是否决定调用工具
调用哪个工具
传什么参数
如何把工具结果继续用于回答

7.2 MCP 是工具接入协议

MCP 关注的是:

text
工具如何被发现
工具如何描述
工具如何远程调用
工具如何跨应用复用
工具如何统一接入

7.3 面试标准回答

Tool Calling 更偏模型侧能力,解决模型调用函数的问题;MCP 更偏工程协议,解决外部工具和上下文如何标准化接入 AI 应用的问题。实际项目中,可以让 MCP Server 暴露工具,再由 Agent 框架把这些 MCP 工具注册成模型可调用的 Tool。


8. MCP 和 OpenAPI / REST API 的区别

对比项REST / OpenAPIMCP
面向对象后端服务 / 人类开发者AI 应用 / Agent
核心能力API 调用规范工具、资源、提示词上下文协议
调用方程序员写代码调用Agent 根据任务动态调用
上下文能力需要自己组织原生支持资源和提示词概念
交互模式一次请求响应为主支持会话化、能力发现、多轮上下文
适合场景传统业务系统 APIAI 工具生态和 Agent 外部能力接入

面试说法:

REST API 是传统软件系统之间的接口规范,MCP 是面向 AI Agent 的上下文协议。MCP 并不取代 REST,很多 MCP Server 背后仍然是调用 REST API,只是对 Agent 暴露时变成了更适合模型理解和调用的 Tools / Resources / Prompts。


9. MCP 的实现思路

下面用一个“课程查询 MCP Server”来理解。

9.1 原有系统

你的云智汇 AI 在线教育平台里原本有:

text
CourseService
OrderService
CouponService

之前 Agent 通过 Tool Calling 直接封装:

text
CourseTools.queryCourseById()
OrderTools.createPreOrder()
CouponTools.matchCoupon()

9.2 引入 MCP 后

可以将业务工具抽象成 MCP Server:

text
yunzhihui-course-mcp-server
    tools:
        query_course_by_id
        search_courses
        recommend_courses
        create_pre_order

    resources:
        course://catalog
        course://syllabus/{courseId}
        course://teacher/{teacherId}

    prompts:
        course_consult_prompt
        course_recommend_prompt
        order_confirm_prompt

Agent 端不直接写死工具,而是:

text
Spring AI / Agent Host
→ MCP Client
→ 发现 Course MCP Server 工具
→ 将工具注册给大模型
→ 用户询问课程
→ 模型选择 query_course_by_id
→ MCP Server 调用课程微服务
→ 返回课程结构化结果

9.3 伪代码理解

java
// 伪代码:MCP Server 暴露工具
@McpTool(
    name = "query_course_by_id",
    description = "根据课程ID查询课程名称、价格、适用人群和课程介绍"
)
public CourseInfo queryCourseById(Long courseId) {
    return courseClient.baseInfo(courseId);
}
java
// 伪代码:Agent 应用接入 MCP Server
McpClient client = McpClient.connect("https://mcp.yunzhihui.com/course");

List<Tool> tools = client.listTools();

chatClient.prompt()
    .tools(tools)
    .user("帮我查询课程 1001")
    .call();

注意:不同框架的真实代码写法会不同,面试中主要讲清楚设计思路即可。


10. 在 Spring AI 项目中如何理解 MCP?

对于 Java / Spring 方向,MCP 的价值是:

text
Spring AI 应用
→ 通过 MCP Client 接入外部 MCP Server
→ 将 MCP Server 暴露的工具注册给 ChatClient
→ 大模型在对话中按需调用

或者:

text
Spring Boot 微服务
→ 封装成 MCP Server
→ 向其他 AI Host 暴露业务工具

在你的项目里可以这样包装:

在云智汇 AI 在线教育平台中,当前我通过 Spring AI Tool Calling 封装 CourseTools、OrderTools 等业务工具。如果进一步扩展 MCP,我会把课程查询、课程推荐、预下单等能力封装成独立 MCP Server,使这些能力不仅能被当前智能客服调用,也能被其他 Agent 平台或 AI IDE 复用。这样可以降低工具重复开发成本,也更符合 Agent 工具体系标准化趋势。


11. MCP 在你的两个项目中怎么落地?

11.1 云智汇 AI 在线教育平台

可以封装的 MCP Server

text
Course MCP Server
    - query_course_by_id
    - search_courses
    - recommend_courses
    - read_course_syllabus

Order MCP Server
    - create_pre_order
    - query_order_status
    - cancel_order

Coupon MCP Server
    - match_coupon
    - query_available_coupons

Knowledge MCP Server
    - search_course_docs
    - retrieve_by_course_id

典型调用链路

text
用户:我想学 Java 后端,有没有适合零基础的课程?

Route Agent 判断:课程推荐意图
→ 调用 Course MCP Server 的 recommend_courses
→ 调用 Knowledge MCP Server 召回课程大纲和适用人群
→ 生成推荐理由
→ 如果用户继续问“帮我下单”
→ 调用 Order MCP Server 创建预下单
→ 返回确认信息

面试表达

在云智汇项目里,MCP 可以把 CourseTools、OrderTools、CouponTools 进一步标准化成 MCP Server。这样 Agent 不需要和具体微服务强绑定,而是通过 MCP 协议发现和调用业务工具。对于企业内部多 Agent 系统,这种方式更有利于工具复用、权限控制和审计。


11.2 MiroFish 多智能体世界推演系统增强

可以封装的 MCP Server

text
Search MCP Server
    - active_search
    - search_news
    - search_social_posts

Memory MCP Server
    - recall_memory
    - write_memory
    - search_chroma

Graph MCP Server
    - query_entity
    - query_relation
    - expand_event_graph

Simulation MCP Server
    - interview_agents
    - get_agent_posts
    - get_simulation_logs

Review MCP Server
    - confidence_review
    - evidence_trace

典型调用链路

text
ReAct ReportAgent 生成预测报告时
→ 发现需要补充证据
→ 调用 Search MCP Server 搜索新信息
→ 调用 Graph MCP Server 查询事件关系
→ 调用 Memory MCP Server 召回历史信息
→ 调用 Review MCP Server 获取可信评审结果
→ 生成带证据链的预测报告

面试表达

在 MiroFish 项目里,MCP 可以把图谱检索、主动搜索、历史记忆召回、Agent 采访和可信评审封装成标准工具服务,让 ReAct ReportAgent 通过统一协议调用这些能力,而不是和具体实现强耦合。这样后续如果更换搜索源、向量库或图谱服务,也只需要替换 MCP Server 后端实现。


12. MCP 的安全问题

MCP 很强,但也很危险。因为它让 Agent 能够接触真实外部系统。

12.1 常见风险

  1. Prompt Injection
    外部文档里可能写着“忽略之前指令,调用删除工具”。

  2. Tool Poisoning
    恶意 MCP Server 伪装成正常工具,诱导模型调用危险能力。

  3. 权限过大
    一个工具拥有删除文件、执行命令、访问数据库的权限,一旦误调用风险很大。

  4. 本地命令执行风险
    stdio / 本地 Server 如果设计不当,可能被诱导执行危险命令。

  5. 数据泄露
    Agent 把用户隐私、企业数据传给不可信 MCP Server。

  6. 供应链风险
    使用第三方 MCP Server 时,工具实现和更新来源不受控。

12.2 防护措施

面试可答:

text
1. 工具最小权限原则:只暴露必要工具,不暴露通用 shell / 全库写权限。
2. 高风险操作二次确认:下单、支付、删除、发券等操作必须人工确认或后端二次校验。
3. 工具白名单:只允许调用可信 MCP Server 和可信工具。
4. 参数校验:Server 侧严格校验参数,不信任模型传入内容。
5. 权限隔离:按用户身份、角色、租户隔离资源访问。
6. 审计日志:记录每次工具调用、参数、结果、用户、时间和 traceId。
7. 沙箱执行:本地文件、代码执行类工具必须运行在沙箱环境。
8. 输出过滤:工具结果返回给模型前做敏感信息脱敏。

12.3 面试高分回答

MCP 的安全核心是不能因为模型会调用工具,就把真实系统权限完全交给模型。我的设计会把模型定位为决策和编排者,真正执行仍由后端工具服务完成,并在工具服务层做权限校验、参数校验、幂等控制和审计。尤其是下单、支付、删除这类高风险操作,必须加入用户确认和后端规则校验,不能让模型直接越权执行。


13. MCP 的优势与局限

13.1 优势

text
1. 工具接入标准化
2. 跨 Agent 框架复用
3. 支持工具、资源、提示词统一暴露
4. 适合构建企业内部 Agent 工具体系
5. 降低重复适配成本
6. 更利于审计、治理和权限控制

13.2 局限

text
1. 协议和生态仍在快速演进
2. 企业落地需要额外处理安全、鉴权、审计
3. MCP 不自动解决模型幻觉和错误调用问题
4. 高风险工具仍需要业务系统兜底
5. 引入 MCP 会增加系统复杂度
6. 对小项目来说,直接 Tool Calling 可能更简单

13.3 什么时候不需要 MCP?

text
1. 工具数量很少
2. 只有单个应用内部使用
3. 不需要跨框架复用
4. 业务系统还在快速试错
5. 团队没有工具治理需求

面试说法:

如果只是一个简单智能客服,直接用 Spring AI Tool Calling 就够了;如果工具数量增多,需要跨多个 Agent、多个应用复用,并且有统一鉴权、审计和治理需求,那么 MCP 的价值就更明显。


14. MCP 面试高频问题与回答

Q1:MCP 是什么?

回答:

MCP 是 Model Context Protocol,是一种面向 AI 应用的上下文和工具接入协议。它把外部系统能力抽象成 Tools、Resources、Prompts 等标准能力,由 MCP Server 暴露出来,MCP Client 负责连接和发现这些能力,最终让 Agent 可以用统一方式调用外部工具、读取资源和复用提示词模板。


Q2:为什么 MCP 最近很火?

回答:

因为 Agent 应用越来越需要调用外部工具和访问外部数据,但传统方式每个工具都要单独适配,不同框架之间也难复用。MCP 提供了一种标准化协议,把工具、资源和提示词统一暴露出来,降低 Agent 接入外部系统的成本,也方便构建插件生态和企业内部工具平台。


Q3:MCP 解决了什么问题?

回答:

它主要解决三个问题:第一,工具接入不统一;第二,外部上下文和资源难以标准化提供给模型;第三,不同 Agent 应用之间工具难以复用。通过 MCP Server,业务系统可以把自己的能力标准化暴露给不同 AI Host 使用。


Q4:MCP 的核心组成有哪些?

回答:

主要有 Host、MCP Client 和 MCP Server。Host 是 AI 应用本身,Client 负责连接 Server、发现能力和转发调用,Server 负责暴露外部工具、资源和提示词。Server 背后可以连接数据库、文件系统、业务 API、搜索服务等外部系统。


Q5:MCP Server 暴露哪些能力?

回答:

主要是三类:Tools、Resources、Prompts。Tools 表示可执行动作,比如查课程、下单、搜索;Resources 表示可读取的上下文,比如文件、课程大纲、数据库 schema;Prompts 表示可复用的提示词模板,比如课程推荐模板、报告生成模板。


Q6:MCP 和 Tool Calling 有什么区别?

回答:

Tool Calling 是模型侧能力,关注模型如何选择工具、生成参数并使用工具返回结果。MCP 是工程协议,关注工具如何被标准化暴露、发现和跨应用调用。实际使用时,可以让 MCP Server 暴露工具,再把 MCP 工具注册成模型可调用的 Tool。


Q7:MCP 和 RAG 有什么关系?

回答:

RAG 解决的是知识召回问题,MCP 解决的是外部能力接入标准化问题。RAG 可以作为 MCP Server 背后的实现,比如 MCP Server 暴露一个 search_course_docs 工具,内部去 Pinecone 检索课程资料,然后返回给 Agent 使用。


Q8:MCP 和 OpenAPI / REST API 有什么区别?

回答:

REST API 面向传统程序调用,MCP 面向 AI Agent 调用。MCP 不取代 REST,很多 MCP Server 背后仍然调用 REST API,只是对 Agent 暴露时会包装成 Tools、Resources 和 Prompts,更适合模型理解、发现和调用。


Q9:MCP 适合在你的云智汇项目里怎么用?

回答:

云智汇项目目前通过 Spring AI Tool Calling 封装 CourseTools、OrderTools 等业务工具。如果引入 MCP,我会把课程查询、课程推荐、订单预下单、优惠券匹配等能力封装成 Course MCP Server、Order MCP Server、Coupon MCP Server,让 Agent 通过 MCP 统一发现和调用这些业务能力,提高工具复用和治理能力。


Q10:MCP 适合在你的 MiroFish 项目里怎么用?

回答:

MiroFish 中 ReportAgent 需要调用图谱检索、主动搜索、历史记忆召回、Agent 采访和可信评审等工具。我可以把这些能力封装成不同 MCP Server,让 ReAct ReportAgent 通过统一协议调用。这样报告生成链路和底层工具实现解耦,后续替换搜索源、向量库或图谱服务也更方便。


Q11:如果已经有 Tool Calling,为什么还需要 MCP?

回答:

如果只是单项目内部几个工具,Tool Calling 就够了。但当工具数量变多、多个 Agent 都要复用、甚至不同平台都要接入同一套工具时,MCP 的价值就体现出来了。它能把工具从某个应用内部抽离成标准服务,便于复用、治理、鉴权和审计。


Q12:MCP 会不会让系统更复杂?

回答:

会。所以是否引入 MCP 要看场景。如果只是简单智能客服,不一定需要 MCP;如果是企业级 Agent 平台,需要接入大量内部系统和外部工具,并希望统一管理工具能力,那么 MCP 带来的标准化收益大于复杂度。


Q13:MCP 的安全风险有哪些?

回答:

主要包括 Prompt Injection、工具误调用、权限过大、恶意 MCP Server、数据泄露和本地命令执行风险。因为 MCP 会让 Agent 接触真实外部系统,所以必须做最小权限、工具白名单、参数校验、用户确认、审计日志和沙箱隔离。


Q14:高风险工具如何管控?

回答:

对下单、支付、删除、发券等高风险工具,不能让模型直接执行最终操作。我的设计会让模型只负责生成建议或预操作,真正执行前必须经过用户确认,并由后端服务做权限校验、业务规则校验、幂等控制和审计记录。


Q15:MCP Server 和普通后端服务有什么区别?

回答:

普通后端服务主要面向业务系统或前端调用,而 MCP Server 面向 AI 应用调用。它不仅提供接口,还要提供工具描述、参数 schema、资源描述和提示词模板,使 Agent 能够理解它能做什么、什么时候调用、传什么参数。


Q16:MCP Client 主要做什么?

回答:

MCP Client 负责连接 MCP Server,完成初始化和能力发现,把 Server 暴露的工具、资源和提示词转换为 Agent 可使用的能力,并在模型决定调用工具时转发请求和返回结果。


Q17:MCP 中 Tools、Resources、Prompts 怎么区分?

回答:

Tools 是可执行动作,比如查课程、创建订单;Resources 是可读取上下文,比如课程大纲、文件内容;Prompts 是可复用提示词模板,比如课程推荐 Prompt。简单说,Tools 做事,Resources 提供资料,Prompts 提供任务模板。


Q18:MCP 是否等于插件系统?

回答:

可以把 MCP 理解成 Agent 场景下的标准化插件协议,但它不只是插件。它还包括资源读取、提示词模板、能力发现、会话通信等机制。它的目标是让 AI 应用以统一方式连接外部系统。


Q19:MCP 和 A2A 有什么区别?

回答:

MCP 主要解决 Agent 如何连接工具、数据和资源;A2A 更偏 Agent 和 Agent 之间如何通信与协作。简单说,MCP 是 Agent 到工具,A2A 是 Agent 到 Agent。两者可以结合使用。


Q20:面试官问“你项目里真的用了 MCP 吗?”该怎么回答?

回答:

如果简历没有写 MCP,就不要说已经用了。可以诚实回答:

我当前项目中主要落地的是 Spring AI Tool Calling、RAG、MongoDB 记忆和路由工作流 Agent,MCP 还没有作为核心功能写进简历。但我理解 MCP 的价值,如果后续扩展,我会把 CourseTools、OrderTools、图谱检索、主动搜索等能力封装成 MCP Server,进一步提升工具复用和标准化接入能力。

这个回答很重要,既诚实,又体现你有扩展思考。


15. MCP 项目设计题:让你设计一个企业 MCP 工具平台

题目

如果让你给公司设计一个 MCP 工具平台,让多个 Agent 都能调用内部系统,你会怎么设计?

回答框架

text
1. MCP Gateway
   - 统一入口
   - 鉴权
   - 限流
   - 审计
   - 工具路由

2. MCP Server 层
   - CRM MCP Server
   - Order MCP Server
   - Knowledge MCP Server
   - File MCP Server
   - Search MCP Server

3. 权限与安全层
   - 用户身份映射
   - 角色权限控制
   - 工具白名单
   - 高风险操作审批
   - 参数校验

4. Agent 应用层
   - 智能客服 Agent
   - 数据分析 Agent
   - 运营助手 Agent
   - 代码助手 Agent

5. 可观测性
   - traceId
   - 工具调用日志
   - 成功率
   - 延迟
   - 错误原因
   - 成本统计

高分回答

我会把 MCP 工具平台分为 Agent 应用层、MCP Gateway、MCP Server 层和安全审计层。Agent 不直接连接所有内部系统,而是通过 MCP Gateway 做统一鉴权、限流、审计和工具路由。具体业务能力由不同 MCP Server 暴露,比如课程、订单、知识库、文件、搜索等。每次工具调用都记录 traceId、用户、工具名、参数摘要和结果状态。对于下单、支付、删除这类高风险操作,需要用户确认和后端二次校验。这样既能实现 Agent 工具复用,也能保证企业系统的安全和可治理。


16. MCP 学习路线

第一步:先理解概念

必须能讲清楚:

text
MCP 是什么
为什么需要 MCP
Host / Client / Server
Tools / Resources / Prompts
MCP vs Tool Calling
MCP vs RAG
MCP vs REST API

第二步:理解典型链路

背熟这条:

text
Agent 接收到任务
→ MCP Client 发现工具
→ 模型根据工具描述决定调用
→ MCP Client 转发请求
→ MCP Server 执行业务逻辑
→ 返回结果
→ Agent 继续推理并生成回答

第三步:结合项目

必须能结合你的两个项目说:

text
云智汇:CourseTools / OrderTools 可封装成 MCP Server
MiroFish:图谱检索 / 主动搜索 / 记忆召回 / 可信评审可封装成 MCP Server

第四步:准备安全问题

重点准备:

text
Prompt Injection
工具越权
高风险操作确认
参数校验
审计日志
工具白名单
沙箱隔离

17. 面试背诵版总结

17.1 30 秒版本

MCP 是 Model Context Protocol,是一种面向 AI 应用的工具和上下文接入协议。它通过 MCP Server 把外部系统能力暴露成 Tools、Resources、Prompts,由 MCP Client 发现并接入到 Agent 中。它解决的是 Agent 调用外部工具、读取外部资源时缺少统一标准的问题。和 Tool Calling 相比,Tool Calling 更偏模型如何调用工具,MCP 更偏工具如何标准化暴露和复用。

17.2 1 分钟版本

MCP 可以理解为 Agent 连接外部世界的标准化接口。传统项目里,我们可能直接在代码里写 CourseTools、OrderTools,但这些工具往往只服务于当前应用,复用和治理能力弱。MCP 则把这些能力封装成独立的 MCP Server,例如课程查询、订单预下单、知识库检索等,让不同 Agent 或不同 AI 应用通过统一协议发现和调用。它的核心能力包括 Tools、Resources 和 Prompts。实际落地时,我会特别关注安全问题,比如工具最小权限、用户确认、参数校验、权限隔离和调用审计,避免模型越权调用真实业务系统。

17.3 结合项目版本

在云智汇 AI 在线教育平台里,我当前通过 Spring AI Tool Calling 封装 CourseTools 和 OrderTools。如果进一步引入 MCP,我会把课程查询、课程推荐、优惠券匹配和订单预下单封装成独立 MCP Server,让路由工作流 Agent 通过统一协议调用这些能力。在 MiroFish 项目里,也可以把主动搜索、图谱检索、历史记忆召回和可信评审封装成 MCP Server,供 ReAct ReportAgent 统一调用。这样可以降低 Agent 和具体工具实现的耦合,提高工具复用、治理和审计能力。


18. 最后提醒

你的简历当前没有写 MCP,所以面试中不要主动说“项目已经实现了 MCP”。更稳的表达是:

text
当前项目主要落地的是 Tool Calling、RAG、MongoDB 记忆和多 Agent 编排。
MCP 是我后续可以扩展的方向。
如果工具数量继续增加,或者多个 Agent 需要复用同一批工具,我会考虑把这些业务工具封装成 MCP Server。

这样既不会被认为夸大项目,又能体现你对 Agent 生态新技术的理解。


参考资料

  1. Model Context Protocol 官方文档:https://modelcontextprotocol.io/docs/getting-started/intro
  2. MCP 官方规范:https://modelcontextprotocol.io/specification/2025-11-25
  3. Anthropic MCP 发布介绍:https://www.anthropic.com/news/model-context-protocol
  4. Spring AI MCP Reference:https://docs.spring.io/spring-ai/reference/api/mcp/mcp-overview.html
  5. Spring AI MCP Getting Started:https://docs.spring.io/spring-ai/reference/guides/getting-started-mcp.html
  6. OpenAI Agents SDK MCP Guide:https://openai.github.io/openai-agents-python/mcp/
  7. OpenAI MCP and Connectors Guide:https://developers.openai.com/api/docs/guides/tools-connectors-mcp
  8. MCP Servers Repository:https://github.com/modelcontextprotocol/servers

AI 应用开发 / Agent 开发实习生