agent面试必备30-彻底搞懂 MCP 协议(Model Context Protocol)与面试指南
🔌 AI Agent 终极形态:彻底搞懂 MCP 协议(Model Context Protocol)与面试指南
如果说 2023 年是“百模大战”,那么接下来的 AI 竞争焦点就是“生态连接”。
在过去的 AI 开发中,给大模型接入外部工具是一件极其痛苦的事:每个大模型都有自己的接口,每个数据源(GitHub、Notion、本地数据库)都有自己的 API。为了把它们连起来,开发者不得不写无数的“胶水代码”。
为了终结这种混乱,Anthropic(开发 Claude 的公司)强势推出了 MCP(Model Context Protocol,模型上下文协议)。如果你在面试中能对 MCP 侃侃而谈,绝对能让面试官刮目相看!这篇文章将用大白话带你彻底搞懂 MCP 协议。

💡 一、 什么是 MCP 协议?(大白话秒懂)
通俗概念:
MCP 就像是 AI 界的 “USB-C 接口标准”。
以前,你要把 AI 连接到本地文件、公司数据库、Slack,需要针对不同的 AI 写不同的专属插件(N 个 AI 乘以 M 个数据源,工作量是 N×MN \times MN×M)。
现在有了 MCP,大家统一遵守这套“USB-C 接口”规范。你只要为公司数据库写一个 MCP Server,任何支持 MCP 的 AI(比如 Claude Desktop、Cursor 等)都可以直接“插上”使用。工作量瞬间降为 N+MN + MN+M。
核心定位:
它是一个开源的、标准的客户端-服务器(Client-Server)架构协议,专门用于在 AI 应用(客户端)和外部数据源/工具(服务端)之间建立安全的双向连接。
🏗️ 二、 MCP 的核心架构与三大能力
MCP 的架构非常简洁,主要分为两边:
- MCP Host(宿主/客户端):发起请求的 AI 应用程序(比如你正在使用的 Claude 客户端,或者 IDE 编辑器)。
- MCP Server(服务端):你本地或云端运行的轻量级程序,负责实际连接 GitHub、本地数据库或执行特定代码。
面试必考:MCP Server 能向 AI 提供什么?(三大核心能力)
| 核心能力 | 💡 大白话解释 | 🎯 典型应用场景 |
|---|---|---|
| Resources (资源) | 把外部数据暴露给大模型,就像给大模型挂载了一个“只读网盘”。 | 让大模型直接读取你本地的 .log 日志文件、API 响应结果或内部 Wiki 文档。 |
| Tools (工具) | 允许大模型触发外部操作,并获取执行结果(类似于 Function Calling)。 | 让大模型调用 API 发送邮件、执行一段 SQL 查询,或者操作 GitHub 提交代码。 |
| Prompts (提示模板) | 服务端预先定义好的标准 Prompt 模板,客户端可以一键调用。 | 提供统一的“代码审查 Prompt”或“周报生成 Prompt”,规范大模型的输出格式。 |
🎯 三、 高频面试 Q&A 实战演练
Q1:MCP 协议和传统的 Function Calling(函数调用)有什么区别?
标准答案:
Function Calling 是大模型底层的一种能力(输出结构化 JSON 参数);而 MCP 是一种系统级的通信协议和架构标准。
MCP 的Tools能力底层确实依赖 Function Calling,但 MCP 更进一步,它标准化了发现工具、获取资源列表、执行工具的完整生命周期,并且天生支持客户端与服务端的物理隔离。
Q2:企业为什么需要接入 MCP,而不是直接把 API 给大模型?
标准答案:
核心是为了解耦与安全。
- 解耦:写一次 MCP Server,就能在所有支持 MCP 的 AI 平台复用,拒绝重复造轮子。
- 安全隔离:企业的核心数据和执行逻辑封装在本地运行的 MCP Server 中,AI 应用(Host)只通过标准协议与其交互,企业可以随时切断连接或进行严格的权限审计,避免核心数据直接暴露给公网大模型。
Q3:MCP 目前支持哪些通信方式?
标准答案:
目前主要支持两种标准传输层(Transports):
- Stdio(标准输入输出):适用于本地运行。AI 客户端直接在本地拉起 MCP Server 进程,通过控制台的标准输入/输出进行极速通信(最常用)。
- SSE (Server-Sent Events) over HTTP:适用于远程调用。MCP Server 部署在云端,通过 HTTP 协议与远端的 AI 客户端进行通信。
💻 四、 面试加分代码:手写一个极简的 MCP Server
在面试中,如果能展示你用 Python 的 mcp 官方库(如 FastMCP 框架)手写过服务端,证明你一直紧跟行业最前沿技术。以下是保姆级注释的代码:
# 运行前需安装官方库: pip install mcp
from mcp.server.fastmcp import FastMCP
import os
# ==========================================
# 1. 初始化 MCP Server
# 就像用 FastAPI 写后端一样简单,起个名字
# ==========================================
mcp = FastMCP("Interview_Demo_Server")
# ==========================================
# 2. 核心能力一:暴露 Tool (工具)
# 使用 @mcp.tool() 装饰器,直接将 Python 函数变成大模型可调用的工具
# ==========================================
@mcp.tool()
def fetch_system_info(info_type: str) -> str:
"""
获取服务器底层的系统信息。
这是给大模型看的描述,大模型会根据这个描述决定是否调用此工具。
"""
print(f"🔧 [工具被调用] 大模型正在请求系统信息: {info_type}")
if info_type == "cpu":
return "CPU 使用率: 15%"
elif info_type == "memory":
return "内存使用率: 4.2GB / 16GB"
else:
return "未知的信息类型,请请求 cpu 或 memory。"
# ==========================================
# 3. 核心能力二:暴露 Resource (资源)
# 使用 @mcp.resource() 装饰器,将本地文件或数据作为只读资源暴露给大模型
# uri 格式类似于文件路径
# ==========================================
@mcp.resource("file://project_config")
def read_config() -> str:
"""读取项目的本地核心配置文件"""
print("📄 [资源被读取] 大模型正在访问项目配置...")
return """
{
"project_name": "AI_Agent_V2",
"status": "in_development",
"secret_key": "hidden"
}
"""
# ==========================================
# 4. 启动服务器
# ==========================================
if __name__ == "__main__":
print("🚀 MCP Server 准备就绪,正在通过 Stdio 模式监听客户端请求...")
# 默认以 stdio (标准输入输出) 模式启动
# 任何支持 MCP 的宿主(如 Claude Desktop)都可以作为子进程拉起这个脚本
mcp.run()
# 💡 面试讲解要点:
# 向面试官解释:“通过 FastMCP 框架,开发者根本不需要关心底层的 JSON-RPC 通信细节。
# 只需要用 @tool 装饰器包装业务函数,用 @resource 挂载本地数据。
# 配置到 Claude Desktop 的配置文件后,Claude 就能瞬间拥有读取这台电脑配置和 CPU 状态的超能力!”
更多推荐


所有评论(0)