MCP:标准化连接外部系统

建议用时:25 分钟(含练习)

学习目标

能够说明 MCP client、server、tools、resources 和 prompts 的基本关系与信任边界。

本节产出

一张 MCP 连接与权限图

核心知识:共同协议不等于共同权限

术语

MCP

MCP 的全称是 Model Context Protocol。它为 AI 应用与外部能力之间的上下文交换提供共同协议。应用可以通过它发现可用能力、读取资源或调用工具,但协议本身不会自动决定某个用户有权访问什么,也不会保证每个服务实现都安全可靠。

先区分三个参与者:Host 是组织交互的 AI 应用;Client 是应用中与某个服务通信的组件;Server 是提供能力的程序。一个 Host 可以管理多个 Client,各自连接不同 Server。Server 可以在本机运行,也可以是远程服务,不应把这个词简单理解成一台云服务器。

AI应用中的客户端连接MCP服务,服务分别提供工具、资源和提示模板,访问外部系统仍需单独授权

图中的无箭头连线说明连接与能力归属,不表示调用顺序,也不代表已经授予全部权限。应用身份、服务身份和下游系统身份可能不同。诊断访问问题时,要明确是哪一段拒绝了请求:应用到服务、服务到数据库,还是具体业务规则。

三类能力分别解决什么问题

MCP 的三类能力

MCP 的三类能力
能力主要作用练习中的例子
Tools执行一个定义好的动作查询指定文档的可用版本
Resources提供可读取的上下文资料文档目录或数据结构说明
Prompts提供可复用的交互模板按固定问题组织阅读任务

这些是协议中的能力类别,不代表每个 Server 都实现全部类别。应用也可能只支持其中一部分。课程以官方架构文档为基础;具体版本的发现、传输和授权细节可能变化,实际连接应核对双方支持的版本,而不是照抄旧教程中的调用顺序。

官方文档介绍本地 stdio 与远程 Streamable HTTP 等传输方式。传输解决消息怎样到达,并不能替代业务权限判断。本地服务可能拥有进程用户的文件访问能力,远程服务则可能接收发送给它的数据,两者都需要明确范围。

案例:连接公开课程目录

假设一个练习 Server 只提供已公开课程的目录和正文,不允许写入。应用先了解它的能力,再按课程标识读取内容。若服务同时暴露删除课程工具,虽然模型当前只需要读取,额外写能力仍然扩大了风险,应在配置与账号层面限制。

接入前可以填写一张边界表:程序来源与版本、运行位置、读取范围、写入范围、联网目标、凭证由谁保管,以及如何停止服务。这不是形式化的安装清单,而是帮助你解释“接上以后究竟发生什么”。不知道这些信息,就无法判断一次调用会影响哪些系统。

故障应该沿连接分段检查

如果应用看不到任何工具,先确认服务是否启动、协议是否兼容,以及它实际发布了哪些能力。若工具可见但调用被拒绝,检查认证和业务授权。若调用成功但没有数据,检查查询参数、可见数据范围和返回结果是否被截断。

不要把所有问题都归结为模型不聪明,也不要为了修复读取问题直接开放全部目录或管理员权限。先用最小、无敏感信息的公开样例验证链路,能更清楚地区分连接问题与资料问题。

服务返回的文本仍然可能不可信。一个资源中包含“忽略任务限制”并不能改变用户授权。工具定义与服务更新也值得关注:能力清单变化后,原有评测和权限假设可能需要复核,不能只在首次安装时检查一次。

动手练习

  1. 画出练习目录服务的 Host、Client、Server 和实际资料存储位置。
  2. 各设计一个 Tool、Resource 和 Prompt,并说明为什么选择这一类别。
  3. 对“看不到工具”“调用被拒绝”“成功但为空”分别写出第一项检查。

参考答案与推演

完成检查

  • 能区分 Host、Client、Server 与外部数据系统。
  • 不把协议兼容、认证成功和业务授权混为一谈。
  • 接入范围来自实际配置与文档,而不是服务名称。
  • 故障排查按链路分段,使用最小公开样例。

参考与来源

MCP:标准化连接外部系统

3 道题 · 及格分 60 分

开始测验