AI面试八股文-14_14-MCP-Skill-Function Calling

简介: 本文深度解析MCP 2026-07-28规范,涵盖协议架构、Server开发、Function Calling与Agent Skills差异、企业级安全治理(授权/沙箱/审计)及长任务处理。PDF版下载:https://pan.quark.cn/s/9cc742e9c2a8

pdf版下载链:https://pan.quark.cn/s/9cc742e9c2a8

14 MCP、Agent Skills 与 Function Calling:协议、工具与安全

更新: 2026-10-12
难度: ⭐⭐⭐⭐⭐
考点: MCP 2026-07-28、Agent Skills、Function Calling、长任务、授权、沙箱与企业治理

口径说明:本文以 MCP 2026-07-28 正式规范为准。产品命令、SDK API 和 Registry 条目变化快,面试前应再次核对官方文档。

📋 目录

  1. MCP 基础与架构
  2. Server 与 Client 工程
  3. MCP、Function Calling 与 Agent Skills
  4. 权限、安全与企业治理
  5. 长任务、扩展和生态
  6. 官方来源

一、MCP 基础概念

Q1: 什么是 MCP(Model Context Protocol)?为什么 AI 工程师需要掌握?

MCP 是 AI 应用连接外部数据、工具和工作流的开放协议。它基于 JSON-RPC 2.0,把 Host、Client、Server 之间的能力发现、调用和生命周期标准化。

它解决的是“连接层”问题,而不是替代模型推理、业务编排或权限系统:

用户 → Host/Agent → MCP Client ⇄ MCP Server → 业务 API / 数据 / 工具

面试重点:

  • 工具实现一次,可被多个兼容 Host 复用。
  • Client 和 Server 在初始化时协商协议版本与能力,不能假设对端支持全部特性。
  • MCP 只定义交互协议;业务权限、数据治理、沙箱和审计仍需应用实现。
  • 截至 2026-10-12,正式规范版本为 2026-07-28。

Q2: MCP 的核心原语有哪些?谁控制它们?

Server 侧三个核心原语:

原语 控制方 用途
Tools 模型选择、Host 执行策略约束 执行动作或查询
Resources 应用选择 以 URI 暴露上下文和数据
Prompts 用户选择 可复用交互模板

还要知道:

  • Elicitation:Server 在处理请求时要求补充用户输入。
  • Tasks:异步长任务扩展,不属于核心原语。
  • Skills over MCP、MCP Apps:可选扩展,必须显式协商支持。
  • Roots、Sampling、Logging 在 2026-07-28 中已进入 Deprecated;新实现不应继续依赖。

Q3: MCP 的 Host、Client、Server、Transport 如何协同?

  • Host:面向用户的 AI 应用,负责模型、权限、上下文与 UI。
  • Client:Host 内与某个 Server 建立会话的协议组件。
  • Server:声明并实现 tools/resources/prompts。
  • Transport:承载 JSON-RPC 消息。

标准传输:

  1. stdio:Host 启动本地子进程,按行传输 JSON-RPC。
  2. Streamable HTTP:每条消息向单一 MCP endpoint 发送 POST,响应为 JSON 或请求级 SSE。

HTTP+SSE 已废弃;2026-07-28 还移除了旧 Streamable HTTP 的 SSE 重放语义。断线后应把未完成请求视为失败,并用新 request ID 重发可安全重试的操作,不能假设 Last-Event-ID 恢复。

Q4: MCP Server 有哪些类型?如何选?

按信任边界分比按“官方/社区”分更有价值:

类型 适用场景 关键控制
本地 stdio 文件、代码、开发工具 工作目录限制、进程权限
企业远程 Server 内部 API、数据平台 OAuth、租户隔离、审计
SaaS 远程 Server 第三方服务 数据处理条款、最小 scope
聚合 Gateway 多 Server 治理 身份传播、策略、路由、可观测

不要把 Registry 中“可发现”误当作“已审计”。引入第三方 Server 前应检查发布者、源码、依赖、权限、更新策略和数据流向。


二、MCP Server 开发实战

Q5: 如何用 Python 开发 MCP Server?

生产实现建议使用官方 Python SDK 当前稳定线,并按 SDK v2 文档编写或迁移。核心步骤:

  1. 定义 tool/resource/prompt 及 JSON Schema。
  2. 在 handler 内做业务鉴权、输入校验、超时和错误映射。
  3. 本地优先用 stdio;远程部署用 Streamable HTTP。
  4. 用 Inspector、契约测试和真实 Client 验证能力协商。
  5. 固定 SDK 版本,升级时跑协议与回归测试。

示意代码只表达边界,不绑定易变 API:

def search_orders(user_id: str, limit: int = 20) -> list[dict]:
    if not 1 <= limit <= 100:
        raise ValueError("limit out of range")
    # 身份从可信执行上下文取得,不能相信模型传入的 user_id 即有权限
    authorize(current_principal(), "orders:read", user_id)
    return db.query(
        "SELECT id, status FROM orders WHERE user_id = ? LIMIT ?",
        (user_id, limit),
    )

Q6: MCP Server 如何做认证、授权和安全控制?

要区分:

  • 认证:调用者是谁。
  • 授权:该身份能对哪个资源执行什么动作。
  • 用户确认:当前高风险动作是否得到用户明确同意。

远程 HTTP 授权遵循 MCP Authorization:OAuth 体系、Protected Resource Metadata、资源指示符和 audience 校验。Server 必须只接受签发给自己的 token,禁止把 Client token 原样透传给下游 API。

stdio 不等于“天然安全”:本地子进程继承用户权限,仍需限制目录、环境变量、网络、子进程和密钥读取。

Q7: 如何在 Claude Code、Cursor、Copilot 或自研 Host 中配置 MCP?

稳定回答应讲配置模型,不背易变菜单:

{
   
  "mcpServers": {
   
    "example": {
   
      "command": "python",
      "args": ["server.py"],
      "env": {
   
        "TOKEN": "${ENV_TOKEN}"
      }
    }
  }
}

或远程 Server:

{
   
  "mcpServers": {
   
    "example": {
   
      "url": "https://mcp.example.com/mcp"
    }
  }
}

检查点:作用域是个人、项目还是组织;配置是否会提交;密钥是否来自 secret store;Client 是否支持目标扩展;远程 URL 是否走 OAuth。具体路径和命令以各产品官方文档为准。

Q8: 大型工具结果和长输出应该怎么处理?

不要依赖未经官方确认的“500K 永续化”或私有 resultSizeLimit 字段。通用做法:

  • 工具返回摘要、分页游标、artifact URI,而不是把全量日志塞进上下文。
  • 大对象放对象存储或 Resource,返回校验和、MIME、大小与权限信息。
  • 限制单次输出、分页大小和总预算。
  • 长处理使用 Tasks 扩展;短请求用 progress、timeout 和 cancellation。
  • 对模型上下文另做截断、压缩和引用,不把传输成功等同于模型能有效使用。

三、MCP vs Function Calling vs Agent Skills

Q9: MCP 和 Function Calling 有什么区别?

维度 Function Calling MCP
层级 模型/API 输出工具名和参数 Host 与工具服务的连接协议
发现 应用把 schema 交给模型 Client 从 Server 列举能力
执行 应用代码负责 MCP Client/Server 交换协议消息
复用 通常绑定单个应用 可跨兼容 Host 复用

二者经常一起使用:Host 把 MCP tool schema 暴露给模型,模型生成 tool call,Host 再通过 MCP 调用 Server。

Q10: MCP 和 OpenAI Tools/Responses API 有什么关系?

OpenAI Function Calling 的稳定主线是 Responses API 的工具调用循环:

定义 tools → 模型返回 function_call → 应用校验并执行
→ 把 function_call_output 回传 → 模型继续或结束

应开启 strict: true,对象 schema 设置 additionalProperties: false,并按严格模式要求声明字段。Schema 合规不代表业务安全,仍需做授权、幂等、限额和输出校验。

MCP 负责外部工具的协议化接入;Responses/Agents SDK 负责模型调用与编排。不要把某厂商 API 能力误称为 MCP 的一部分。

Q11: 企业 MCP 安全应该分哪几层?

  1. 身份层:OAuth、audience、scope、租户身份。
  2. 协议层:版本与 capability 校验、schema、大小、超时、取消。
  3. 策略层:allow/ask/deny、风险分级、人工审批。
  4. 执行层:OS/容器沙箱、只读挂载、无网默认、资源配额。
  5. 数据层:脱敏、最小披露、租户过滤、保留期。
  6. 供应链层:版本锁定、签名、SBOM、来源审查。
  7. 审计层:trace、身份、工具、参数摘要、结果状态和审批证据。

Prompt、tool description 和 annotations 都是提示信息,不是强制安全边界。

Q12: 企业如何规模化部署 MCP?

推荐分层:

AI Host
  → 身份与策略层
  → MCP Gateway / Registry
  → 独立信任域中的 Servers
  → 业务 API / 数据源

Gateway 可统一认证、路由、速率限制和审计,但不能掩盖身份。必须明确 end-user identity、workload identity、下游凭证和租户如何传播。对写操作配置幂等键、审批和补偿;对长任务持久化状态、TTL 和取消。

Q13: 截至 2026-10-12,MCP 规范有哪些关键变化?

以 2026-07-28 为准:

  • 引入 Active / Deprecated / Removed 生命周期和最短弃用窗口。
  • Streamable HTTP 简化为单 endpoint 的 POST;长期变更通知走 subscriptions/listen。
  • HTTP+SSE 为 Deprecated。
  • Tasks 移到官方扩展 io.modelcontextprotocol/tasks,支持 polling、mid-flight input 和 durable handle。
  • 引入 Multi Round-Trip Requests:需要更多输入时返回 InputRequiredResult,Client 重试原请求并提供 input responses。
  • Roots、Sampling、Logging 已 Deprecated;迁移到显式参数/Resource、直接模型 API 和 OpenTelemetry。
  • 官方扩展包括 Tasks、Skills over MCP、MCP Apps。

Q14: 如何发现和评估 MCP Server?

优先使用官方 Registry 和组织私有 Registry;社区目录只用于发现候选。

评估清单:

  • 发布者与仓库是否可验证。
  • 支持的协议版本、传输和扩展。
  • 工具权限是否最小,写操作是否显式。
  • OAuth、租户隔离、日志、数据保留。
  • 依赖锁定、漏洞响应、版本迁移。
  • 是否有契约测试、健康检查和卸载路径。

四、安全与权限管理

Q15: 面试中如何回答 “MCP Top 10” 类问题?

不要背未经核验的年份、下载量或编号。以官方规范和威胁模型回答更稳:

  • 凭证泄露与 token passthrough。
  • confused deputy 与错误 consent。
  • OAuth discovery SSRF。
  • 工具投毒、描述投毒和供应链风险。
  • 越权、scope creep 与租户数据泄露。
  • 命令/SQL/路径注入。
  • 无边界执行、无限重试和成本攻击。
  • 审计不足与不可追责。

防御落点是最小权限、token audience、per-client consent、egress 控制、沙箱、审批、版本锁定和可观测。

Q16: Agent 安全和传统 Web 安全的差异是什么?

传统 Web 应用主要执行显式代码路径;Agent 会把不可信自然语言、检索内容和工具结果纳入决策。因此“数据可能变成指令”,需要额外治理:

  • 给内容标记来源和信任级别。
  • 不让模型决定自己的权限。
  • 工具参数与业务对象再次鉴权。
  • 高风险动作必须可预览、可审批、可回滚。
  • 限制步数、时间、Token、费用和并发。
  • 用恶意网页、仓库指令、假工具描述做红队 eval。

Q17: Tasks 扩展如何处理长任务?

2026-07-28 中 Tasks 是官方、可选扩展 io.modelcontextprotocol/tasks,不是早期 SEP 编号即可代表的稳定核心能力。

典型流程:

tools/call → 返回 task handle
tasks/get → 轮询状态
tasks/update → 提供任务中途需要的输入
tasks/cancel → 请求取消

设计要点:任务 ID 高熵并绑定授权上下文;状态持久化;结果 TTL;幂等;轮询退避;取消语义;任务输入与输出审计。不能让模型凭空维护 job ID。

Q18: Confused Deputy、Token Passthrough、SSRF 如何防?

  • Confused Deputy:代理第三方 OAuth 时做 per-client consent,精确匹配 redirect URI,state 短期且单次使用。
  • Token Passthrough:校验 issuer、audience、scope、resource;下游调用使用单独获取的下游 token。
  • SSRF:OAuth 元数据和跳转 URL 要求 HTTPS,解析并阻断私网/链路本地/云元数据地址,每次 redirect 重验,生产环境经 egress proxy。

这些是 MCP 官方 Authorization 与 Security Best Practices 明确覆盖的风险。

Q19: 企业 Readiness 应关注什么?

不是等待“协议替你解决一切”,而是验证:

  • 身份:用户、Client、workload、Server 是否可区分。
  • 策略:scope、资源级授权、审批能否统一。
  • 生命周期:版本、弃用、回滚、Server 下线。
  • 可观测:OpenTelemetry trace、指标、审计关联。
  • 可靠性:超时、取消、重试、幂等、Tasks 恢复。
  • 配置:组织策略能否覆盖本地个人配置。
  • 数据:区域、保留、脱敏、租户隔离。

Q20: MCP Sampling 现在应该怎么回答?

Sampling 曾允许 Server 请求 Client 代调模型,并可携带工具。它在 2026-07-28 已 Deprecated,新实现应直接集成模型提供商 API。

面试回答应体现迁移意识:

  • 旧系统仍需在弃用窗口内兼容和测试。
  • 新系统把模型调用放入明确的 Agent/服务层。
  • 保留审批、预算、模型路由、trace 和数据策略。
  • 不再把 Sampling 当作未来架构的核心卖点。

Q21: MCP Client 类型和 capability negotiation 应如何理解?

“Internal/External Client”不是规范定义的两种 Client 类型。更稳的区分是本地 stdio Client、远程 HTTP Client、Gateway/聚合 Client。

无论形态如何,都必须:

  1. 初始化并协商 protocol version。
  2. 只使用双方声明的 capability/extension。
  3. 对 deprecated feature 做迁移和兼容策略。
  4. 为每次请求设置 timeout、cancellation 和 trace。

Q22: MCP Authorization Flow 如何工作?

高层流程:

  1. Client 请求受保护资源,Server 返回 challenge。
  2. Client 读取 OAuth Protected Resource Metadata,发现授权服务器和所需 scope。
  3. Client 走授权码 + PKCE 等安全流程,并用 resource indicator 指定目标 Server。
  4. Server 校验 token 的 issuer、audience/resource、有效期和 scope。
  5. 遇到 insufficient_scope 时,由 Client 决定是否做 step-up authorization。

DPoP 可作为更强的 sender-constrained token 机制,但不能把“可选安全扩展”说成所有 MCP 调用都强制使用。


五、发现、Skills 与工程边界

Q23: “MCP Server Card” 是正式能力吗?

不能把早期工作组或提案直接说成已发布标准。当前能力发现主要依靠初始化后的 tools/resources/prompts 列表、Registry 元数据及扩展协商。

如果需要组织级“Server Card”,可自定义元数据描述版本、owner、数据分类、权限和 SLA,但必须明确这是治理层约定,不是 MCP 核心规范。面试中应先说清标准状态,再讲自建方案。

Q24: MCP Triggers / Events 是正式原语吗?

MCP 核心没有一个可任意主动触发 Agent 的通用 @mcp.trigger 装饰器。2026-07-28 的长期变更通知通过订阅能力与 subscriptions/listen;业务事件通常由 webhook、队列、调度器触发 Host,再由 Host 调用 MCP。

推荐架构:

业务事件 → Queue/Webhook → Orchestrator/Agent → MCP tool

这样事件身份、重放、幂等、死信和审批由成熟基础设施承担。

Q25: MCP Registry 是什么?

官方 MCP Registry 是 Server 的发现索引,不是可信执行沙箱,也不等同于 npm/PyPI 的统一包托管。

企业应在官方/私有 Registry 之上增加:

  • allowlist、owner、风险级别和数据分类;
  • 发布签名、依赖扫描与版本固定;
  • 审批、灰度、撤回和应急下线;
  • Client 策略和使用审计。

不要使用未经官方文档确认的发布命令示例。

Q26: Agent Skills、Skills over MCP 和 MCP Tool 有什么区别?

概念 本质 何时加载
Agent Skill SKILL.md + 可选 scripts/references/assets 的可复用工作流 渐进披露
MCP Tool 可调用的远程/本地执行能力 Server 列表发现
Skills over MCP 通过 MCP 发现和消费结构化 Skill 的官方可选扩展 双方协商

Agent Skills 开放规范要求 SKILL.md 至少包含 name 和 description。启动时只加载元数据,匹配任务后加载正文,需要时再读资源。Skill 是“怎么做”,Tool 是“能执行什么”;Skill 中的脚本也必须受权限和沙箱约束。

Q27: 什么情况下不应该使用 MCP?

  • 单应用调用一个固定 API,直接 SDK/HTTP 更简单。
  • 高频低延迟数据面或大规模流处理。
  • 强一致分布式事务。
  • 一次性脚本。
  • 团队无法承担 Server 生命周期与安全治理。
  • 工具只能在已有服务内部使用,没有跨 Host 复用价值。

判断标准:标准化与复用收益,是否大于新增协议、部署和治理成本。

Q28: MCP 有哪些官方 SDK?如何选?

截至 2026-10-12,官方 SDK 页面列出 TypeScript、Python、C#、Go、Rust、Ruby、Java、Swift、PHP、Kotlin,并按完整度与维护承诺分 Tier。Tier 会变化,不能把“十种”永久写死。

选型顺序:

  1. 团队主语言与运行时。
  2. 当前 spec 与所需扩展支持。
  3. SDK Tier、维护活跃度和迁移成本。
  4. 并发、部署、可观测和依赖治理。

Q29: 官方 reference servers 应如何使用?

Reference server 的价值是学习协议和做兼容测试,不代表生产可直接信任。Sequential Thinking、Memory、Everything、Fetch 等名称不能按“2026 新增官方产品”背诵。

生产选择应从官方 Registry 当前条目出发,并验证:

  • 是否仍维护、发布者是谁;
  • 权限与网络边界;
  • 数据是否离开组织;
  • 是否支持目标 spec;
  • 是否有安全审计和替代/下线路径。

高频面试话术

MCP 是连接协议,Function Calling 是模型/API 的工具调用机制,Agent Skill 是按需加载的可复用工作流。生产系统通常三者组合:Skill 规定流程,模型生成严格 schema 的调用,MCP 连接工具;权限、沙箱、审批和审计由 Host 与企业治理层强制执行。

我不会把 roadmap、SEP 或社区插件当成正式规范。当前以 MCP 2026-07-28 为准:Streamable HTTP 是远程主线,HTTP+SSE、Roots、Sampling、Logging 已弃用;长任务走 Tasks 扩展,Skills over MCP 也是显式协商的扩展。

相关文章
|
4天前
|
云安全 人工智能 运维
当攻击全面Agent化,你的安全防御能否跟上AI Speed?
多起客户侧AK泄露事件应急的真实观察
1238 4
|
27天前
|
人工智能 JSON API
全网刷屏的 Jev 模型正式开放!一手实战测评 + 保姆级教程
全网爆火的 Jev 模型是什么?有什么用?怎么使用?怎么接入 AI 编程工具?效果真的好么?傻子可懂的 Jev 保姆级实战教程 + 项目实战测评来啦
9740 32
|
14天前
|
存储 人工智能 并行计算
大模型本地部署终端选型方法论:以 Qwen3.8-27B 为例的四档分层完整流程
本文提出一套大模型本地部署终端选型方法论:定约束、定档位、定框架、定参数四步决策法,配合入门、主力、质量、无损四档分层模型。以 Qwen3.8-27B 实测数据为例,逐环节解读显存、带宽、存储、散热、系统、预算等要素,给出面向不同预算的优选方案、决策自查清单与市场观察框架。文末前瞻 AI 笔记本的 CPU+GPU 与统一内存两条路线,论证四步决策法在新品类上的延续性。
|
8天前
|
存储 人工智能 安全
千问办公官网入口网页版登录:qwenwork.cn 注册送2000积分、登录送100积分
阿里云千问办公(QwenWork)是AI智能工作平台,支持一句话生成PPT、表格、网页、视频及数据分析。个人免费版送2000积分+每日登录赠100分,含1GB存储、5个发布页;企业版198元/席/月起。阿里千问办公QwenWork官网:https://t.aliyun.com/U/0VCTGt 阿里AI工作平台,一句话完成数据分析、PPT 生成、视频剪辑、网页搭建等复杂任务
|
12天前
|
人工智能 JSON 自然语言处理
2026 年 Jev 决策模型深度拆解:原理解读、实战测评与保姆级落地教程
有一款特殊AI模型在开发者圈子刷屏,它摒弃传统大模型擅长的对话聊天能力,专注做高速结构化决策,它就是TypeSafe AI推出的Jev模型。该模型由ChatGPT共同发明人Diogo Almeida主导研发,定位为**System One Model(系统一模型)**,对标人类大脑快速直觉判断的思维模式,在响应延迟、调用成本、结构化输出稳定性上相比传统生成式大模型有着巨大差异。本文会完整拆解Jev底层原理、三大核心原语能力、适用业务场景,同时提供可直接运行的curl、Python代码示例,并且结合多组实测数据,客观分析模型优势与能力边界,帮助普通开发者和AI应用从业者快速上手落地。
894 1
|
5天前
|
Web App开发 人工智能 JavaScript
太猛了,一个月干到15W+,给大家推荐一个最近爆火的开源逆向工具:REA
REA(Reverse Engineer Anything)是近期爆火的开源AI逆向工具,4月发布,1个月内斩获15万+ Star。它让AI Agent无需源码即可分析二进制、APK、JS/Electron、HAR包等17类目标,自动反编译、生成可运行代码,并强制返回带证据与局限的结论。全本地执行,MIT协议,支持Hopper/Ghidra/IDA等引擎,一行命令即可上手。
592 1
太猛了,一个月干到15W+,给大家推荐一个最近爆火的开源逆向工具:REA
|
9天前
|
人工智能 JSON 自然语言处理
2026 年 Jev 决策模型全解析:核心原理拆解,性能实战测评与落地部署教程
有一款特殊AI模型在开发者圈子刷屏,它摒弃传统大模型擅长的对话聊天能力,专注做高速结构化决策,它就是TypeSafe AI推出的Jev模型。该模型由ChatGPT共同发明人Diogo Almeida主导研发,定位为System One Model(系统一模型),对标人类大脑快速直觉判断的思维模式,在响应延迟、调用成本、结构化输出稳定性上相比传统生成式大模型有着巨大差异。本文会完整拆解Jev底层原理、三大核心原语能力、适用业务场景,同时提供可直接运行的curl、Python代码示例,并且结合多组实测数据,客观分析模型优势与能力边界,帮助普通开发者和AI应用从业者快速上手落地。
580 0
|
10天前
|
存储 人工智能 自然语言处理
千问办公官网入口链接在哪?2026年最新QwenWork测评、千问办公怎么样?一文看懂
千问办公(QwenWork)是阿里云推出的AI智能办公平台,提供网页端和阿里云官网双入口。支持PPT/Word/Excel生成、多模态处理、网页全栈搭建、钉钉深度集成等6大核心能力。个人版免费可用,高级版198元/月;企业版198元/人/月。新用户注册即赠2000积分。阿里千问办公QwenWork官网:https://t.aliyun.com/U/0VCTGt 阿里AI工作平台,一句话完成数据分析、PPT 生成、视频剪辑、网页搭建等复杂任务
1160 0