应用通过通信组件向服务请求资料,服务返回结果,再由应用决定怎样使用。 模型不是凭空拿到电脑或外部系统里的全部信息。
建议先理解 MCP 的作用与场景。本页使用配套课程资料实验解释角色和信息流,不要求先会写程序。
应用、客户端和服务分别做什么
| 名称 | 日常解释 | 本实验中是什么 |
|---|---|---|
| 主机应用(Host) | 管理任务、界面或其他功能,决定连接哪些服务 | 项目提供的命令行教学客户端,组织这次实验;没有接入模型 |
| 客户端(Client) | 应用内部负责与一个服务通信的组件 | 官方 SDK 的 ClientSession |
| 服务端(Server) | 提供具体能力或资料的程序 | 项目提供的课程资料程序,只暴露固定资料的读取和模板能力 |
日常 AI 应用里,Host 还会组织用户要求、模型和结果展示。为单独验证协议,本实验把这部分缩小成命令行程序,实际执行通信但不调用模型。不能据此声称某个桌面 AI 产品已经完成连接。
图中的方法名属于本实验采用的协议 2025-11-25。应用可能使用其他受支持版本;不要把这套初始化消息当作所有版本永远不变的流程。
第一步:先知道双方能做什么
在本版本中,客户端先发初始化请求,双方约定协议版本并声明支持的能力。服务声明支持工具、资源或提示模板,并不代表它一定提供你希望的每一种具体操作。
随后可以查询具体列表。例如工具列表返回 get_course_material,并说明需要课程 ID。这个说明让应用知道该怎样请求。连接版本不兼容或所需能力不存在时,应在此处理,不能直接猜一个工具名继续。
第二步:请求一项具体能力
读取这节课的请求核心内容是:
{
"name": "get_course_material",
"arguments": {"course_id": "silk-road-01"}
}这是便于阅读的参数节选,不是完整的协议消息。服务按课程 ID 查固定的示例资料,返回课程标题、学生背景、40 分钟课时与 M01—M03 内容。换成不存在的 ID,实际实验得到错误结果。
协议规范双方怎么交流;资料是否存在、内容是否新、账号能否访问,由服务与实际环境决定。
第三步:应用如何把结果交给模型
真实 AI 应用取得返回数据后,可以选择相关内容,放进模型本次能够参考的。应用也可能先筛选、截取或处理资料;连接服务不代表整个资料库都已放进模型输入。
接下来模型可以根据这些资料生成答案或提出后续操作。这个阶段的正确性与协议调用成功不同,应核对原始依据、用户要求和实际产出。本实验在返回资料并核对之后结束,没有执行这一模型生成阶段。
工具、资源和提示模板如何区分
| 能力 | 你取得什么 | 本实验真实验证的例子 |
|---|---|---|
| 工具(Tool) | 某项操作的结果,可能是数据,也可能是错误 | get_course_material 按课程 ID 返回资料;工具可以是只读查询,也可以是其他操作 |
| 资源(Resource) | 按标识读取的内容 | course://catalog 返回课程目录 |
| 提示模板(Prompt Template) | 可选用、填参数的要求内容 | prepare_lesson 返回含课程 ID 的备课要求;获取模板本身不会生成教案 |
在所引用规范中,工具通常面向模型调用,资源由应用决定如何使用,提示模板面向用户选择。具体界面可以不同。本实验为了可重复检查,直接调用这些能力,不模拟模型自主选择。
提示模板中的 Prompt 和日常提示词有联系,都是要求或交互内容;MCP 另外约定怎样列出和获取模板。Skill 则可以把方法、模板及其他材料组织成一个包,两者不能直接画等号。
本地和远程,区别在哪里
本实验用标准输入输出(stdio),即客户端启动一个本机服务程序,通过程序之间的输入输出交换消息。无需公开网址,不使用远程账号,也不打开监听端口。
远程服务可以采用 HTTP 连接,应用按地址通信,可能需要身份验证。是否支持某种传输方式、协议版本和授权流程,需要同时核对应用与服务。把本地命令填进只接受网址的设置框,通常无法完成连接。
为什么权限仍然重要
工具说明里可以标记“只读”,但说明或注解不能替代真实限制。本示例只实现按已有课程 ID 读取固定文件,不接受任意路径,也不提供修改、删除或发送工具。
这表示 MCP 暴露的操作范围有限;不是把整个服务进程变成了操作系统级只读沙箱。换成能修改业务系统的服务时,应核对其真实访问控制与提供的操作,不能因为也叫 MCP 就推断权限相同。
想一想
已经成功取得备课提示模板,是否意味着查询过课程资料、调用过模型并生成了教案?
参考判断: 没有。模板是一份可选用的要求,读取资料与生成教案是后续不同动作,应分别有结果证据。
下一步
读 实际使用与复现指南,对照真实返回结果;或者回到 MCP 基础页 继续其他主题。
来源与适用范围
核验日期:2026-09-09。角色解释参考 MCP 架构说明。本实验的步骤分别参考协议 2025-11-25 的 生命周期、工具、资源 与 提示模板。实验 SDK 为 Python SDK v1.26.0。图是按实际实验流程整理的机制示意,原始结果另存于验证记录。