📗 第 9 章 · Model Context Protocol
所属课程:课程 004 Building with the the AI API
官方章节名:Model Context Protocol
课时数:12
CCAR-F 主命中领域:D4 18%
归档日期:2026-10-15
📋 本章课时清单
| 本章序 | 全课序 | 类型 | 课时 | lesson ID | 直链 | 精译 |
|---|---|---|---|---|---|---|
| 1 | 60 | 🎬 视频 | Introducing MCP | 287780 |
直链 | ✅ |
| 2 | 61 | 🎬 视频 | MCP clients | 287775 |
直链 | ✅ |
| 3 | 62 | 🎬 视频 | Project setup | 287785 |
直链 | ✅ |
| 4 | 63 | 🎬 视频 | Defining tools with MCP | 287797 |
直链 | ✅ |
| 5 | 64 | 🎬 视频 | The server inspector | 287781 |
直链 | ✅ |
| 6 | 65 | 🎬 视频 | Implementing a client | 287793 |
直链 | ✅ |
| 7 | 66 | 🎬 视频 | Defining resources | 287782 |
直链 | ✅ |
| 8 | 67 | 🎬 视频 | Accessing resources | 287783 |
直链 | ✅ |
| 9 | 68 | 🎬 视频 | Defining prompts | 287784 |
直链 | ✅ |
| 10 | 69 | 🎬 视频 | Prompts in the client | 287786 |
直链 | ✅ |
| 11 | 70 | 🎬 视频 | MCP review | 287790 |
直链 | ✅ |
| 12 | 71 | 📝 测验 | Quiz on Model Context Protocol | 289126 |
直链 | ⬜ 待补 |
🎯 本章考点提示
D4(18%)核心,12 课时。MCP 三原语完整实现:tools / resources / prompts,加 server inspector 与 client 实现。
⭐ 与
课程003第 9 课及队列第 3 门《Introduction to Model Context Protocol》三者同源,可交叉印证。
📖 逐课精译
课时 1 · Introducing MCP
类型:🎬 视频 | lesson ID:
287780| 官方直链
- 精译状态:✅ 已精译(2026-10-27,用户粘贴讲稿)
- 官方原句:
- Model Context Protocol (MCP) is a communication layer that provides the AI with context and tools without requiring you to write a bunch of tedious integration code.
- Think of it as a way to shift the burden of tool definitions and execution away from your server to specialized MCP servers.
- MCP servers provide tool schemas and functions already defined for you, eliminating the need to build and maintain complex integrations yourself.
- Isn't MCP Just Tool Use? This is a common misconception. MCP servers and tool use are complementary but different concepts.
- 精译:
- 定义:MCP 是一层通信协议,为 AI 提供上下文与工具,省去大量繁琐的集成代码。它把工具的定义与执行的负担,从你的服务端转移到专门的 MCP 服务器上。
- 基本架构:MCP 客户端(即你的服务端)连接一个或多个 MCP 服务器;服务器内包含工具、提示和资源。每个 MCP 服务器是某个外部服务的接口。
- 例子(GitHub):用户问"我所有仓库里有哪些未合并的 PR?",模型需要访问 GitHub API 的工具。不用 MCP,你要为仓库、PR、Issue、项目等每项功能分别写模式(schema)与函数实现,工作量巨大。
- MCP 的做法:GitHub 的工具由 GitHub 相关的 MCP 服务器封装好,应用直接使用,不必自己实现。MCP 服务器把复杂的集成打包成可复用的组件,任何应用都能接入。
- 谁来写 MCP 服务器(考点):任何人都可以写。服务提供商通常会发布官方实现;讲稿举例 AWS 可能发布覆盖其各项服务的官方 MCP 服务器。
- 与直接调 API 的区别:直接调 API,工具定义要你自己写;MCP 服务器已经提供了定义好的工具模式和函数,省去实现工作。
- 与工具调用(tool use)的区别(考点):两者互补而不同。工具调用是模型在请求中使用工具的机制;MCP 关心的是谁来创建和维护这些工具。讲稿明确纠正"MCP 就是 tool use"这一常见误解。
- 核心:MCP 服务器已经替你定义好了工具模式与函数,你不必自己构建和维护复杂的集成。
- 本章新生词:已回灌
30-单词表/04-第 9 章速查分组(课时 1,见下方统计) - 考点映射:映射表标 D4 4.1(MCP 体系核心架构)⭐,本课是 4.1 的概念课时。
- ⚠️ 核对项:讲稿中 AWS 发布官方 MCP 服务器是举例,不代表 AWS 已确定发布的具体服务,实际以各厂商官方公告为准。
- ⚠️ 核对项:讲稿中 GitHub 的工具数量与具体功能是示例性描述,实际支持的工具清单以 GitHub 官方 MCP 服务器文档为准。
课时 2 · MCP clients
类型:🎬 视频 | lesson ID:
287775| 官方直链
- 精译状态:✅ 已精译(2026-10-27,用户粘贴讲稿)
- 官方原句:
- The MCP client serves as the communication bridge between your server and MCP servers.
- MCP's key strengths is being transport agnostic - a fancy way of saying the client and server can talk to each other using different communication methods.
- The most common setup runs both the MCP client and server on the same machine, where they communicate through standard input/output.
- ListToolsRequest/ListToolsResult: The client asks the server "what tools do you provide?"
- CallToolRequest/CallToolResult: The client asks the server to run a specific tool with certain arguments, then receives the results.
- 精译:
- 角色:MCP 客户端是你的服务端与 MCP 服务器之间的通信桥梁,是访问 MCP 服务器提供的全部工具的入口。消息传递与协议细节由客户端负责。
- 传输无关(核心):客户端与服务器可以用不同的通信方式交互,这叫"传输无关"(transport agnostic)。最常见的方式是两者在同一台机器上运行,通过标准输入输出(stdio)通信。也可以通过 HTTP、WebSocket 等网络协议连接。
- 两个关键消息(考点):
ListToolsRequest/ListToolsResult,客户端询问服务器"你提供哪些工具"并拿到工具列表;CallToolRequest/CallToolResult,客户端请求服务器以指定参数执行某个工具,并取回结果。 - 完整流程(以"我有哪些仓库"为例):
- 用户向你的服务端提问。
- 服务端需要先向模型提供可用工具,于是通过客户端发送
ListToolsRequest,收到ListToolsResult。 - 服务端手里有了问题与工具列表,向模型发出初始请求。
- 模型判断需要调用工具,返回工具调用请求(tool use)。
- 服务端让客户端执行该工具:客户端发送
CallToolRequest,MCP 服务器再向 GitHub 发起真实请求。 - GitHub 返回仓库数据,经 MCP 服务器作为
CallToolResult返回,再经客户端回到服务端。 - 服务端把工具结果作为后续消息发回模型,模型组织出完整回答。
- 服务端把回答返回用户。
- 设计意义:流程步骤多,但每个组件职责清楚。客户端把与服务器通信的复杂度封装起来,让你专注于应用逻辑。
- 本章新生词:已回灌
30-单词表/04-第 9 章速查分组(课时 2,见下方统计) - 考点映射:映射表标 D4 4.1(MCP 体系核心架构,1 对 1 双向连接)⭐,本课是 4.1 的通信与消息类型课时。
- ⚠️ 核对项:讲稿中的
ListToolsRequest、CallToolRequest等是 MCP 规范中的消息名,本文件按讲稿记录;实际字段与版本以 MCP 官方规范为准。 - ⚠️ 核对项:讲稿把传输方式列为 HTTP、WebSocket 等,具体支持的传输类型以 MCP 当前规范为准。
- ⚠️ 核对项:讲稿流程中"模型返回工具调用请求"等步骤是示意性描述,实际消息结构请以官方文档为准。
课时 3 · Project setup
类型:🎬 视频 | lesson ID:
287785| 官方直链
- 精译状态:✅ 已精译(2026-10-27,用户粘贴讲稿)
- 官方原句:
- We're going to build a CLI-based chatbot to better understand how MCP clients and servers work together.
- The server will provide two essential tools: one for reading document contents and another for updating them.
- In real-world projects, you typically implement either an MCP client or an MCP server, not both.
- The project includes a comprehensive README file with setup instructions.
- 精译:
- 项目目标:做一个基于命令行(CLI)的聊天机器人,通过亲手搭建来理解 MCP 客户端与服务器如何协作。它让用户通过命令行与一组文档交互。
- 两个组件:① MCP 客户端,负责用户交互;② 自定义 MCP 服务器,负责文档操作。服务器提供两个基础工具:读取文档内容、更新文档内容。文档全部保存在内存中,不需要数据库。
- 架构提醒(考点):真实项目中通常只实现客户端或服务器之一。要向其他开发者暴露你的服务,就做服务器;要连接现成的 MCP 服务器,就做客户端。本项目两者都做,纯粹是为了教学,理解它们如何通信。
- 搭建步骤:下载附带的
cli_project.zip并解压到开发目录,在编辑器中打开项目。按 README 操作:① 在.env文件中填入模型 API 密钥;② 用 UV(推荐)或 pip 安装依赖;③ 运行起始应用,确认环境可用。 - 项目文件:
main.py(入口)、mcp_client.py(客户端)、mcp_server.py(服务器)。 - 运行方式:使用 UV 时执行
uv run main.py;使用标准 Python 时执行python main.py。启动成功后会出现聊天提示符,可以先问一个简单问题(如"1+1 等于几?")验证。 - 衔接:基础环境就绪后,下一步开始实现 MCP 功能,观察客户端与服务器如何交互。
- 本章新生词:已回灌
30-单词表/04-第 9 章速查分组(课时 3,见下方统计) - 考点映射:映射表标 D4 4.1(MCP 体系核心架构)⭐;本课是搭建实操课时,对应"客户端与服务器各自的职责"这一考点。
- ⚠️ 核对项:讲稿说"Model Control Protocol",而全文其他地方写作 "Model Context Protocol"。本文件统一用 Model Context Protocol,以官方名称为准。
- ⚠️ 核对项:讲稿中的
cli_project.zip、main.py、mcp_client.py、mcp_server.py是课程配套项目,不是官方 SDK 的组成部分。运行前请以课程附件为准。 - ⚠️ 核对项:讲稿要求在
.env中填写模型 API 密钥。密钥属于敏感信息,应只保存在本地,不要提交到版本库。
课时 4 · Defining tools with MCP
类型:🎬 视频 | lesson ID:
287797| 官方直链
- 精译状态:✅ 已精译(2026-10-27,用户粘贴讲稿)
- 官方原句:
- Building an MCP server becomes much simpler when you use the official Python SDK.
- Instead of manually writing complex JSON schemas for tools, the SDK handles all that complexity for you with decorators and type hints.
- The
@mcp.tooldecorator automatically generates the JSON schema that the AI needs. - The
Fieldclass from Pydantic provides parameter descriptions that help the AI understand what each argument expects. - Both tools include basic error handling ... the tools raise a
ValueErrorwith a descriptive message that the AI can understand and potentially act upon. - 精译:
- 用 SDK 建服务器:官方 Python SDK 用装饰器与类型提示代替手写的 JSON 模式(schema)。讲稿用一行代码创建服务器:
FastMCP("DocumentMCP", log_level="ERROR")。 - 示例数据:文档保存在一个 Python 字典中,键为文档 ID,值为文档内容(讲稿给出 6 份文档,文件名含
.md、.pdf、.docx、.txt)。 - 工具一:读取文档(
read_doc_contents):用@mcp.tool(name=..., description=...)装饰函数;参数doc_id: str = Field(description=...);文档不存在时抛出ValueError;存在则返回内容字符串。 - 工具二:编辑文档(
edit_document):三个参数,文档 ID、要查找的字符串old_str、替换内容new_str。实现用 Python 内置的str.replace()完成查找替换。old_str的描述要求"必须完全一致,包括空白字符"。 - 自动生成的模式:
@mcp.tool从函数签名与类型提示自动生成 AI 需要的 JSON 模式,不必手写。 - Field 的作用:
pydantic.Field为每个参数提供描述,帮助模型理解参数含义(它也是参数校验的来源)。 - 错误处理:文档 ID 无效时抛出
ValueError,并附上可读的说明,模型可以据此调整。 - SDK 的优势(考点):从类型提示自动生成模式;代码简洁,便于维护;借助 Pydantic 做参数校验;比手写模式少很多样板代码;有类型安全与 IDE 支持。
- 核心:你专注于业务逻辑,SDK 处理协议细节。
- 本章新生词:已回灌
30-单词表/04-第 9 章速查分组(课时 4,见下方统计) - 考点映射:映射表标 D4 4.3(工具边界定义)⭐⭐ 与 4.2;本课是 4.3 的工具定义实操,也是 MCP "Tools 原语" 的落地。
- ⚠️ 核对项:讲稿中
FastMCP、@mcp.tool与Field来自 MCP Python SDK 与 Pydantic,实际导入路径与参数名以 SDK 当前版本为准(讲稿写的是mcp.server.fastmcp)。 - ⚠️ 核对项:讲稿中的
docs字典是示例数据;文件名后缀(.pdf、.docx)只是标签,此处的文档内容是纯字符串,并非真正解析的文件。 - ⚠️ 核对项:讲稿说
Field同时用于描述与参数校验。实际校验规则以 Pydantic 与 SDK 文档为准。
课时 5 · The server inspector
类型:🎬 视频 | lesson ID:
287781| 官方直链
- 精译状态:✅ 已精译(2026-10-27,用户粘贴讲稿)
- 官方原句:
- The Python MCP SDK includes a built-in browser-based inspector that lets you debug and test your server in real-time.
- The MCP inspector is actively being developed, so the interface you see might look different from current screenshots.
- This tool becomes essential as you build more complex MCP servers.
- 精译:
- 作用:构建 MCP 服务器时,不必把它接到完整应用上,就能测试功能。Python MCP SDK 自带一个基于浏览器的检查器(inspector),可实时调试与测试服务器。
- 启动:先激活 Python 环境(具体命令见项目 README),然后执行
mcp dev mcp_server.py。它会在 6277 端口启动开发服务,并给出一个本地 URL,在浏览器中打开即可。 - 界面提醒:检查器仍在开发中,界面可能与截图不同,但测试工具、资源、提示的核心功能应保持一致。
- 连接:点击左侧的 "Connect" 启动服务器连接。连接后,导航栏会出现 Resources(资源)、Prompts(提示)、Tools(工具)等入口。
- 测试工具的步骤:进入 Tools;点击 "List Tools" 列出全部工具;选中一个工具打开测试界面;填写必填参数;点击 "Run Tool" 执行并查看结果。
- 串联测试:例如先用编辑工具替换文档中的文字,再立即运行读取工具,确认修改已生效。
- 开发循环(考点):修改服务器代码 → 在检查器中测试单个工具 → 无需完整应用即可验证结果 → 在隔离环境中排查问题。
- 意义:当你构建更复杂的 MCP 服务器时,它是必备工具,省去把服务器接到模型或其他应用上才能测试的麻烦。
- 本章新生词:已回灌
30-单词表/04-第 9 章速查分组(课时 5,见下方统计) - 考点映射:映射表标 D4 4.1 与 4.3,本课是 MCP 开发调试实操,属于 4.1 的运行时视角。
- ⚠️ 核对项:
mcp dev mcp_server.py与端口 6277 是讲稿给出的命令与默认端口,实际以当前 SDK 版本的文档为准。 - ⚠️ 核对项:讲稿说检查器界面仍在开发中,具体按钮与导航名称以官方当前版本为准。
课时 6 · Implementing a client
类型:🎬 视频 | lesson ID:
287793| 官方直链
- 精译状态:✅ 已精译(2026-10-27,用户粘贴讲稿)
- 官方原句:
- In most real-world projects, you'll either implement an MCP client OR an MCP server - not both.
- The client session requires proper resource cleanup when we're done with it.
- We need to implement two key methods in our client:
list_tools()andcall_tool(). - We pass the tool name and input parameters (provided by the AI) to the server and return the result.
- 精译:
- 客户端的两部分:① MCP Client,我们自己写的类,用来简化会话的使用;② Client Session,与服务器的真实连接,属于 MCP Python SDK。
- 为什么要包一层:会话用完后需要正确清理资源。我们把它包在自定义的 MCP Client 类里,由这个类自动完成清理。
- 应用需要客户端做的两件事:① 获取可用工具列表,发给模型;② 在模型请求时执行工具。客户端通过简单的方法调用提供这两种能力。
list_tools():通过会话调用 SDK 的list_tools(),返回结果中的tools,类型为list[types.Tool]。call_tool():接收工具名与工具输入(由模型提供),交给服务器执行,并返回types.CallToolResult | None。- 测试:用异步上下文管理器
async with MCPClient(command="uv", args=["run", "mcp_server.py"]) as client:启动服务器,然后调用list_tools()并打印结果;应能看到read_doc_contents与edit_document两个工具。 - 完整流程(考点):① 应用用客户端获取工具;② 工具与用户问题一起发给模型;③ 模型决定调用
read_doc_contents;④ 应用用客户端执行该工具;⑤ 结果回送模型,模型回答用户。例如问"report.pdf 的内容是什么?",会触发读取工具,返回 20m condenser tower 的文档内容。 - 角色:客户端是应用逻辑与 MCP 服务器之间的桥梁,使你无需关心底层连接细节即可访问服务器功能。
- 本章新生词:已回灌
30-单词表/04-第 9 章速查分组(课时 6,见下方统计) - 考点映射:映射表标 D4 4.1(1 对 1 双向连接),本课是客户端实现的核心课时,对应
list_tools/call_tool两个方法。 - ⚠️ 核对项:讲稿中
MCPClient、session()、list_tools()、call_tool()等是课程自己写的包装类与方法名,不是 SDK 的类名;SDK 中的会话 API 以当前版本文档为准。 - ⚠️ 核对项:讲稿的测试命令
uv run mcp_server.py与command="uv"指向本项目的启动方式,运行时以项目 README 为准。 - ⚠️ 核对项:讲稿说"在使用中两者只实现一端",这是通常做法的概括,不是 MCP 规范的强制要求。
课时 7 · Defining resources
类型:🎬 视频 | lesson ID:
287782| 官方直链
- 精译状态:✅ 已精译(2026-10-27,用户粘贴讲稿)
- 官方原句:
- Resources in MCP servers allow you to expose data to clients, similar to GET request handlers in a typical HTTP server.
- Resources follow a request-response pattern. Your client sends a
ReadResourceRequestwith a URI, and the MCP server responds with the data. - For templated resources, the Python SDK automatically parses parameters from the URI and passes them as keyword arguments to your function.
- The MCP Python SDK automatically serializes your return values. You don't need to manually convert to JSON strings.
- 精译:
- 定位:资源(resource)让服务器把数据暴露给客户端,类似 HTTP 服务器中的 GET 处理函数。适合"获取信息",而不是"执行动作"(动作由工具完成)。
- 示例需求:文档提及功能。用户输入
@文档名引用文件。需要两项操作:① 获取所有可用文档列表(用于自动补全);② 获取某个被提及文档的内容(提交消息时注入提示词)。 - 请求-响应模式:客户端发送
ReadResourceRequest,其中带一个 URI;服务器返回数据。URI 相当于资源的地址。 - 两类资源(考点):直接资源(Direct Resources),URI 固定,如
docs://documents;模板资源(Templated Resources),URI 带参数,如docs://documents/{doc_id}。对模板资源,SDK 自动从 URI 中解析参数,并以关键字参数传给函数。 - 直接资源示例:
@mcp.resource("docs://documents", mime_type="application/json")修饰的函数返回文档 ID 列表。 - 模板资源示例:
@mcp.resource("docs://documents/{doc_id}", mime_type="text/plain")修饰的函数接收doc_id,文档不存在时抛出ValueError,存在则返回内容。 - MIME 类型:
mime_type参数告诉客户端返回数据的类型。讲稿列出两种:application/json(结构化 JSON)与text/plain(纯文本),也可以是其他有效的 MIME 类型。 - 自动序列化:SDK 会自动序列化返回值,不必手动转为 JSON 字符串。
- 测试:用
uv run mcp dev mcp_server.py启动检查器,在界面的 Resources(直接资源)和 Resource Templates(模板资源)中查看并点击测试,看到客户端将收到的确切响应结构。 - 要点:资源暴露数据,工具执行动作;静态数据用直接资源,带参数的查询用模板资源;MIME 类型帮助客户端理解格式;URI 模板中的参数名就是函数参数名。
- 本章新生词:已回灌
30-单词表/04-第 9 章速查分组(课时 7,见下方统计) - 考点映射:映射表标 D4 4.2(MCP 三大能力要素,Resources 只读数据源)⭐⭐,本课是 4.2 中 Resources 原语的主课时。
- ⚠️ 核对项:讲稿说"Resources 类似 GET 请求处理函数"是类比,不是 MCP 规范的定义;规范中的正式定义以官方文档为准。
- ⚠️ 核对项:
ReadResourceRequest为讲稿所述的消息名,实际字段与版本以 MCP 官方规范为准。 - ⚠️ 核对项:讲稿只列出
application/json与text/plain两种 MIME 类型,其他可用类型以 SDK 文档为准。
课时 8 · Accessing resources
类型:🎬 视频 | lesson ID:
287783| 官方直链
- 精译状态:✅ 已精译(2026-10-27,用户粘贴讲稿)
- 官方原句:
- Resources in MCP allow your server to expose data that can be directly included in prompts, rather than requiring tool calls to access information.
- The key advantage is that the AI receives the document content directly in the prompt, eliminating the need for tool calls to access the information.
- The response from the MCP server contains a
contentslist. You typically only need the first element. - The MIME type acts as your hint for determining the correct parsing strategy.
- 精译:
- 定位:资源让服务器提供的数据可以直接放进提示词,而不必通过工具调用获取信息。对模型来说,这是更高效地提供上下文的方式。
- 请求流程:用户想引用某份文档(如输入
@report.pdf)时,应用通过 MCP 客户端从服务器读取该资源,并把内容直接放进发给模型的提示词。 read_resource方法:接收一个 URI 参数,调用会话的read_resource(AnyUrl(uri)),取回结果的第一个contents元素。- 响应结构:服务器返回的
contents是列表,通常只需要第一个元素,它包含实际数据与 MIME 类型等元数据。 - 按类型解析(代码要点):若
resource是types.TextResourceContents,且mimeType == "application/json",则用json.loads(resource.text)解析为 Python 对象;否则直接返回resource.text字符串。MIME 类型决定解析策略。 - 所需导入:
import json(解析 JSON)与from pydantic import AnyUrl(为 URI 参数提供正确的类型)。 - 测试:在 CLI 应用中输入类似"@report.pdf 文档里有什么?"的问题时,应用应当:显示可用资源的自动补全列表;允许选择资源;自动获取资源内容;把内容放进提示词发给模型。
- 优势(考点):模型直接在提示词中收到文档内容,不需要为了读取信息而额外调用工具,因此交互更快、更高效。
- 分层:
read_resource是客户端中可被应用其他部分复用的构件,客户端负责与服务器通信,应用逻辑负责如何使用这些数据。 - 本章新生词:已回灌
30-单词表/04-第 9 章速查分组(课时 8,见下方统计) - 考点映射:映射表标 D4 4.2(MCP 三大能力要素,Resources 只读数据源,客户端被动读取)⭐;本课是 4.2 中客户端读取资源的课时。
- ⚠️ 核对项:讲稿说资源内容"直接进入提示词"是设计选择,资源是否注入提示词取决于应用的实现,不是 MCP 的强制行为。
- ⚠️ 核对项:讲稿中
types.TextResourceContents、read_resource、AnyUrl的导入路径与类名以 SDK 当前版本为准。 - ⚠️ 核对项:讲稿说"只需要第一个元素"是示例写法;多内容的响应应当按实际返回结构处理,以官方文档为准。
课时 9 · Defining prompts
类型:🎬 视频 | lesson ID:
287784| 官方直链
- 精译状态:✅ 已精译(2026-10-27,用户粘贴讲稿)
- 官方原句:
- Prompts in MCP servers let you define pre-built, high-quality instructions that clients can use instead of writing their own prompts from scratch.
- The key insight is that while users can accomplish these tasks on their own, they'll get more consistent and higher-quality results when using prompts that have been carefully developed and tested by the MCP server authors.
- Prompts define a set of user and assistant messages that clients can use directly.
- Add in headers, bullet points, tables, etc as necessary.
- 精译:
- 定位:提示(prompts)是服务器预先写好、经过测试的高质量指令模板。客户端可以直接使用,而不必从零写提示词。
- 为什么需要:例如"把报告转成 Markdown",用户随口一说也能完成,但服务器作者精心测试过的提示,在格式、结构与输出要求上会更稳定、质量更高。
- 工作方式:提示定义一组用户与助手消息;客户端请求某个提示时,服务器返回一个消息列表,可直接发给模型。
- 基本结构(要点):用
@mcp.prompt()装饰函数;为每个提示设置名称(name)与描述(description);返回组成完整提示的消息列表;提示应当质量高、经过测试,并与服务器的用途相关。 - 导入:
from mcp.server.fastmcp import base,用来构造消息类型。 - 示例:格式化命令(
format):函数接收doc_id(用Field说明);把提示文本拼入文档 ID,要求用 Markdown 语法重写文档,并可添加标题、列表、表格等;指示模型使用edit_document工具修改文档;返回[base.UserMessage(prompt)]。 - 测试:在 Inspector 的 Prompts 页签中选择提示并填写参数,检查器会显示生成的消息,用来验证变量插值与消息结构是否符合预期。
- 最佳实践:聚焦服务器核心任务;指令要具体,不要模糊;用不同输入充分测试;描述要清楚;考虑提示如何与服务器的工具和资源配合。
- 核心理念(考点):提示应当提供用户自己不容易获得的价值,它代表你在服务器所覆盖领域的专业能力。
- 本章新生词:已回灌
30-单词表/04-第 9 章速查分组(课时 9,见下方统计) - 考点映射:映射表标 D4 4.2(MCP 三大能力要素,Prompts 模板)⭐⭐;本课是 4.2 中 Prompts 原语的主课时。
- ⚠️ 核对项:讲稿中
from mcp.server.fastmcp import base与base.UserMessage的导入路径与类名,以 SDK 当前版本为准。 - ⚠️ 核对项:讲稿示例的提示文本以省略号结尾("After the document has been reformatted..."),是未完成的示例,实际使用时需补全。
- ⚠️ 核对项:讲稿说提示"比用户自己写的更好"是设计目标,并非对所有场景都成立;效果以测试为准。
课时 10 · Prompts in the client
类型:🎬 视频 | lesson ID:
287786| 官方直链
- 精译状态:✅ 已精译(2026-10-27,用户粘贴讲稿)
- 官方原句:
- Prompts in MCP define a set of user and assistant messages that can be used by the client.
- The
get_promptmethod retrieves a specific prompt with arguments interpolated into it. - The MCP server will pass these as keyword arguments to the prompt function, allowing dynamic content to be inserted into the prompt template.
- Prompts bridge the gap between predefined functionality and dynamic user needs.
- 精译:
- 定位:提示是服务器定义的一组用户与助手消息,客户端可以直接使用。它们应当质量高、经过测试,并与服务器的整体用途相关。
list_prompts:客户端方法,通过会话调用list_prompts(),返回结果中的prompts数组,类型为list[types.Prompt]。get_prompt:客户端方法,接收提示名(prompt_name)与参数字典(args: dict[str, str]),调用会话的get_prompt(prompt_name, args),返回结果中的messages。这些消息构成一段对话,可直接送给模型。- 参数如何工作:服务器端的提示函数可以接收参数(如
format_document(doc_id))。客户端调用get_prompt时,参数字典中的键要与函数参数名对应;服务器把它们作为关键字参数传给函数,实现动态插值。 - CLI 中的使用流程(考点):① 用户输入斜杠(
/),可用提示以命令形式出现;② 选择提示(如format);③ 系统提示用户补充必要参数(如要格式化哪份文档);④ 带着插值后的内容发送给模型;⑤ 模型可以再调用工具获取数据、完成任务。 - 最佳实践:与服务器用途相关;上线前充分测试;指令清晰具体;设计时考虑与现有工具配合;想清楚用户需要提供哪些参数。
- 核心:提示在预定义功能与用户的动态需求之间架起桥梁,为模型提供结构化的起点,同时通过参数保持灵活性。
- 本章新生词:已回灌
30-单词表/04-第 9 章速查分组(课时 10,见下方统计) - 考点映射:映射表标 D4 4.2(MCP 三大能力要素,Prompts 模板)⭐;本课是 4.2 中客户端使用提示的课时。
- ⚠️ 核对项:讲稿中
list_prompts、get_prompt为课程自己包装的客户端方法,SDK 会话 API 的名称与参数以当前版本为准。 - ⚠️ 核对项:讲稿中斜杠命令(
/)的交互形式是本项目 CLI 的设计,不是 MCP 规范的强制行为。 - ⚠️ 核对项:讲稿中
format_document的示例省略了Field与返回值,完整写法见课时 9。
课时 11 · MCP review
类型:🎬 视频 | lesson ID:
287790| 官方直链
- 精译状态:✅ 已精译(2026-10-27,用户提供幻灯片截图,视频为 04:12 时长的章节回顾)
- 官方原句(幻灯片标题 "MCP Server Primitives",三列):
- Tools — Model-controlled: Claude decides when to call these. Results are used by Claude. Used for: giving additional functionality to Claude.
- Resources — App-controlled: Our app decides when to call these. Results are used primarily by our app. Used for: getting data into our app; adding context to messages.
- Prompts — User-controlled: The user decides when to use these. Used for: workflows to run based on user input, like a slash command, button click, or menu option.
- 精译:
- 总览:MCP 服务器有三种原语(primitives):工具(Tools)、资源(Resources)、提示(Prompts)。区分的关键是"谁决定何时使用"。
- 工具(Tools)——模型控制:由 Claude(模型)决定何时调用,结果也由 Claude 使用。用途:为 Claude 提供额外功能。对应本章课时 4(工具的定义与执行)。
- 资源(Resources)——应用控制:由我们的应用决定何时调用,结果主要由应用使用。用途:把数据带入应用、为消息添加上下文。对应本章课时 7–8(资源的定义与读取)。
- 提示(Prompts)——用户控制:由用户决定何时使用,用途是基于用户输入运行的工作流,例如斜杠命令、按钮点击或菜单选项。对应本章课时 9–10(提示的定义与使用)。
- 一句话记忆(考点):工具由模型调用,资源由应用读取,提示由用户触发。三者的控制方不同,因此设计重点也不同。
- 与本章的衔接:工具对应 D4 4.3 的工具边界与定义;资源与提示对应 D4 4.2 的 MCP 三大能力要素;客户端实现(课时 6)则为应用调用这三种原语提供入口。
- 本章新生词:已回灌
30-单词表/04-第 9 章速查分组(课时 11,见下方统计) - 考点映射:映射表标 D4 4.2 与 4.1(MCP 三大能力要素与核心架构)⭐;本课是本章的收束回顾,把"谁控制"作为区分三原语的判据。
- ⚠️ 核对项:视频原文为英文幻灯片,上面的中文是据幻灯片内容精译,三列的措辞以幻灯片为准。
- ⚠️ 核对项:幻灯片中的 "Claude" 与 "our app" 是讲者的示例语境,本库统一称"模型"与"应用",考试时以官方术语为准。
课时 12 · Quiz on Model Context Protocol
类型:📝 测验 | lesson ID:
289126| 官方直链
- 精译状态:⏸ 暂不补(测验,仅视频无题目文字稿;决定 2026-10-27,用户确认)
- 官方原句:待补
- 精译:待补(题目与选项提供后按第 11 章测验的体例收录)
- 本章新生词:待补(回灌
30-单词表/04-)
✅ 本章进度
- [x] 抓取本章讲稿/字幕(课时 1–11 用户粘贴,课时 11 为幻灯片截图)
- [x] 逐课精译(11/12 课时;课时 12 测验待题目)
- [x] 生词回灌
30-单词表/04-(第 9 章分组,课时 1–11) - [ ] 章节测验(课时 12,仅视频无题目文字稿,暂不补)
🔗 关联
- 上级:
课程 004 README - 导读:
01-课程导读与大纲全景 - 生词表:
30-单词表/04-(已建 · 第 9 章分组 课时 1–11) - 登录 SOP:
40-认证事务/08-Partner SSO