应用通过通信组件向服务请求资料,服务返回结果,再由应用决定怎样使用。 模型不是凭空拿到电脑或外部系统里的全部信息。

建议先理解 MCP 的作用与场景。本页使用配套课程资料实验解释角色和信息流,不要求先会写程序。

应用、客户端和服务分别做什么

名称日常解释本实验中是什么
主机应用(Host)管理任务、界面或其他功能,决定连接哪些服务项目提供的命令行教学客户端,组织这次实验;没有接入模型
客户端(Client)应用内部负责与一个服务通信的组件官方 SDK 的 ClientSession
服务端(Server)提供具体能力或资料的程序项目提供的课程资料程序,只暴露固定资料的读取和模板能力

日常 AI 应用里,Host 还会组织用户要求、模型和结果展示。为单独验证协议,本实验把这部分缩小成命令行程序,实际执行通信但不调用模型。不能据此声称某个桌面 AI 产品已经完成连接。

看图理解一次查询,消息怎样往返?
AI 应用 (Host)应用侧
客户端 (Client)应用内组件
外部服务 (Server)外部服务
01 · 初始化与确认

客户端与服务协商版本和能力;客户端发送初始化完成通知。

Client → Server
02 · 发现能力

客户端发出 tools/list,服务返回工具名称、说明与参数。

Client ↔ Server
03 · 请求操作

客户端发出 tools/call,附上课程 ID 等参数。

Client → Server
04 · 检查结果

服务返回资料或错误;应用核对是否取得需要的内容。

Server → Client → Host
配套实验固定协议版本 2025-11-25。此图展示工具调用路径,不代表所有 MCP 能力都通过 tools/call 使用。

图中的方法名属于本实验采用的协议 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。图是按实际实验流程整理的机制示意,原始结果另存于验证记录。