第 12 次课:给 WorkBuddy 接上 MCP
一、上节课回顾
上节知识要点:
- 上节课把一张散表变成可核验的分析:定口径 → 拆维度 → 画图 → 手算 → 写建议,每一步都有据可查。
- 到今天为止,WorkBuddy 干的活——写文档、做分析、当专家——都还在它「出厂自带」的能力里打转。
- 今天开始给它接外部能力:先装现成的 MCP 工具,再亲手造一个自己的 MCP 工具。
二、本节课任务与安排
本课交付
给 WorkBuddy 装上一排「标准插座」:接上文件管家、AI 记事本、余票查询三个现成的 MCP 服务器,再用 FastMCP 亲手写一个学习打卡 MCP 服务接进去。
你会得到四个连接成功的 MCP 服务器、一个自己写的 server.py 和一份落在本机的打卡记录文件——以后想给 AI 加什么能力,先找插座,再造插头。
| 顺序 | 环节 | 学生产出 | 时间 |
|---|---|---|---|
| 回顾 | 上节课回顾 | 想起数据分析五步 | 5分钟 |
| 交付 | 看连接成功的 MCP 列表 | 知道本课交四样 | 3分钟 |
| 理论 | 理论基础:MCP 是 AI 的标准插座 | 能说出什么时候该接 MCP | 8分钟 |
| 案例1 | 🔧 案例1:接上文件管家管文件 | 文件管家连接成功 | 13分钟 |
| 案例2 | 🔧 案例2:接上 AI 记事本跨对话记事 | 记事本连接成功 | 13分钟 |
| 案例3 | 🔧 案例3:接上余票查询查真实车次 | 查到一条真实余票 | 13分钟 |
| 案例4 | 🔧 案例4:用 FastMCP 造自己的打卡服务 | 自建 MCP 连接成功 | 13分钟 |
| 收尾 | 展示与点评 | 能说出装插座三步 | 5分钟 |
| 机动 | 等待与排错 | 补齐必做成果 | 7分钟 |
| 扩展 | 扩展任务:打造你的专属打卡助手(选做) | 打卡服务多一个新工具 | 10分钟 |
环境与准备:Windows 10/11,WorkBuddy 桌面端(安装登录教程);Node.js、Python 与 fastmcp 由教师课前统一安装(自查见课前准备);本机课程目录为 D:\AIGC\lesson-12。MCP 设置入口与软件版本由教师在开课前核对:[课前演练补充]。
三、理论基础:MCP 是 AI 的标准插座
先说一个你马上会撞到的问题:WorkBuddy 很能干,但它默认只看得见自己工作目录里的文件,查不了火车票,也记不住你上个对话说过什么。要让 AI 用上这些外部能力,最笨的办法是每个 AI 应用和每个工具单独定制一根「专线」——三个 AI 配四个工具就是十二根线,谁也不认识谁。
MCP 是「标准插座」。 MCP(Model Context Protocol,模型上下文协议)是 Anthropic 在 2024 年 11 月发布并开源的连接标准,现在已是 AI 行业的事实标准。有了统一标准,工具方只需做一个「MCP 服务器」,AI 应用只需支持 MCP 协议,两边不用互相认识,插上就能用——就像全国插座的孔位统一,电器换了几代,插头一插就来电。十二根专线变成七条:每个工具做一次插座,每个 AI 留一排孔位。
图:左边 M×N 乱成一团,右边每个工具做一个 MCP 服务器,统一插到 AI 应用的插座上。
你在 WorkBuddy 里见过的「连接器」就是同一回事的省心版:飞书、邮箱、腾讯会议这些高频工具,官方已经按标准把插座做好、装进了 WorkBuddy,你点一下授权就能用——下节课连接知识库用的就是它。连接器覆盖不到的能力(管你电脑上的文件夹、查火车票、你自己的小工具),才需要今天学的两手:会自己装,会自己造。
三个角色,一个动作。 AI 应用(WorkBuddy)是宿主,提供一排统一孔位;MCP 服务器是插头后面的电器,可以是大公司写的,也可以是你自己写的;工具是电器提供的每个具体能力,比如「列出文件」「查询余票」。在 WorkBuddy 里添加一个 MCP 服务,这个动作叫「装插座」——本课四个案例就是装四次插座。
什么时候该接 MCP:先找插座,再造插头。 三句话判断:AI 自己就会的(写作、总结、改写)不用接;要碰你电脑里的文件或外部服务,先搜有没有现成的 MCP 服务器,有就直接装(案例1 到案例3);现成的找不到、这个需求又天天用,才自己造一个(案例4)。多一句提醒:MCP 服务器是有权限的程序,只装来源可信的;文件类服务器只开放指定目录——本课第一个案例就会看到这把「房间钥匙」。
四、实操环节
案例1:接上文件管家管文件
任务目标:
老师带练给 WorkBuddy 添加官方的文件管家 MCP 服务器(filesystem),只开放本课的一个素材目录,让 AI 名正言顺地列出、读取文件并写出新文件。本案例从建目录开始,不依赖其他案例。
实操步骤
建本课素材目录:双击「此电脑 → D盘」,进入 D:\AIGC\lesson-12(没有就右键新建),在其中右键 → 新建 → 文件夹,命名为
素材库。执行后你会看到:素材库文件夹出现在 lesson-12 目录下,暂时是空的。装插座:打开 WorkBuddy,找到 MCP / 插件设置入口,点「添加 MCP 服务」,把下面配置整段贴进去(入口名称与界面以教师课前核对为准)。执行后你会看到:列表里出现名为 filesystem 的服务,状态显示已连接。
json{ "mcpServers": { "filesystem": { "transport": { "type": "stdio", "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "D:\\AIGC\\lesson-12\\素材库"] } } } }为什么这么做:配置里最后那个参数就是「房间钥匙」——文件管家只被允许读写素材库这一个目录,你电脑里其他地方它碰不到。首次连接会自动下载组件,慢的时候等一两分钟。
图:配置记住三样东西——服务名、命令、参数;贴进去连上,对话里点名工具就能用。
让 AI 把素材写进受控目录:新建对话,发送下面的提示词:
text请用文件管家在素材库写入两个文件, 文件内容在下面的输入素材里,一字不改。 写完把两个文件各读一遍,回读确认。 输入素材: 文件一:D:\AIGC\lesson-12\素材库\今日待办.txt 11月10日 待办清单 1. 把第 11 课的毛利对比图和销售趋势图发给学委,明天早自习前。 2. 周五实训课互评第 10 课的培训方案,今晚通读一遍自己的。 3. 预习下一课连接知识库的内容,看 20 分钟讲义。 文件二:D:\AIGC\lesson-12\素材库\课程作品单.txt 课程作品清单(截至本月) - 实习周报一份:来源第 7 课。 - 新人培训方案 Word:来源第 10 课。 - 毛利对比图与销售趋势图:来源第 11 课。 输入素材结束。执行后你会看到:素材库里多出两个 txt,双击打开与输入素材逐字一致。
让 AI 用这两个文件干活:继续在同一个对话发送:
text请用文件管家读取素材库里的「今日待办.txt」和「课程作品单.txt」, 把三件待办和三份作品合并整理成一张清单表, 保存为「本周一览.md」到同一目录, 做完告诉我你动了哪些文件。执行后你会看到:素材库目录里多出「本周一览.md」,内容来自两个 txt 且数字没有被改。
对着验收表核一遍:
查什么 合格的样子 插座已装 MCP 列表里 filesystem 显示已连接 只管一间房 AI 只列出了素材库里的文件,没有越到别的目录 产出可核对 「本周一览.md」里的 3 件待办、3 份作品与原文逐条一致
问题与注意事项
- 连接失败:检查配置里目录路径是双反斜杠
\\、目录确实存在;重连一次,再不行举手找老师。 - AI 说没有可用工具:确认对话里提到「文件管家」,让 AI 「用 filesystem 工具重做」;仍不行重启 WorkBuddy 再连。
- 首次下载超时:机房网络慢会导致 npx 下载失败,找老师确认教师机已预下载缓存。
扩展练习(选做)
想练「让 AI 改文件」的,加做一步。复制下面的提示词发送:
请用文件管家读取「今日待办.txt」,
把每件待办按「预计耗时是否超过 30 分钟」拆成子任务,
生成「待办拆解.md」保存到素材库,
拆解结果要能对回原文的三个编号。执行后你会看到:素材库多出「待办拆解.md」,每个子任务都挂着原待办编号。时间不够直接进案例2。
案例2:接上 AI 记事本跨对话记事
任务目标:
老师带练添加官方的记忆本 MCP 服务器(memory),把几条你的课程事实存进本机记忆库,再开一个全新对话验证 AI 还记得。案例2 只用对话完成,不需要案例1 的产物。
实操步骤
装第二个插座:还是在 MCP / 插件设置入口点「添加 MCP 服务」,贴入下面配置。注意和案例1 比,只改了两处——服务名和命令里的包名,流程本身一模一样。执行后你会看到:memory 服务显示已连接。
json{ "mcpServers": { "memory": { "transport": { "type": "stdio", "command": "npx", "args": ["-y", "@modelcontextprotocol/server-memory"] } } } }存三件事:新建对话,发送下面的提示词:
text请用记忆本 MCP 记住我的这三件事, 逐条存好后复述给我确认。 输入素材: 我在电子商务专业,下周要交市场调研课的选题表。 我每周三下午是实训课,机房在实训楼 B 区。 我的课程作业都存在 D 盘 AIGC 各课目录里。 输入素材结束。执行后你会看到:AI 逐条复述三件事,确认已写入记忆库。
换个对话考它:点「新建对话」开一个全新的对话(不是继续刚才那个),发送:
text你知道我最近在忙什么吗? 我的实训课是周几?作业存在哪里? 请用记忆本查一下再回答。执行后你会看到:新对话里的 AI 通过记忆本查到并答出三件事——这个对话它明明是「第一次见你」。
对着验收表核一遍:
查什么 合格的样子 插座已装 MCP 列表里 memory 显示已连接 跨对话记得 新对话能答出专业调研、周三实训、D 盘作业位置三件事 记录可管理 让 AI 删掉其中一条后再问,那条真的不见了
问题与注意事项
- 新对话答不上来:提醒它「用记忆本的搜索工具查」,MCP 工具不是每轮自动用的,点名它才会调。
- 记错了内容:让 AI 先列出记忆里关于你的全部条目,指名删掉错的,再重存一条对的。
- 记忆存在本机文件里,不是玄学:想让 AI「忘光」,删掉对应条目即可,别去删配置。
扩展练习(选做)
想把记忆本变成课程表助手的,加做一步。复制下面的提示词发送:
请用记忆本 MCP 帮我建一张本学期课程表记忆:
周一上午网页设计、周二上午数据结构、周三下午 AIGC 实训、
周四下午英语、周五上午体育,
全部存好后,回答我「明天该带什么资料」,
答案要能对回表里今天的下一门课。执行后你会看到:AI 存入五条课程记忆,并按今天星期几给出带资料建议。时间不够直接进案例3。
案例3:接上余票查询查真实车次
任务目标:
老师带练添加社区的 12306 余票查询 MCP 服务器(12306-mcp),查一条真实的火车票余票,体会「现成的插座」能直接带来真实世界的数据。案例3 独立成案,装不上时按兜底路径处理。
实操步骤
装第三个插座:添加 MCP 服务,贴入下面配置。执行后你会看到:12306 服务显示已连接(首次同样要等组件下载)。
json{ "mcpServers": { "rail-query": { "transport": { "type": "stdio", "command": "npx", "args": ["-y", "12306-mcp"] } } } }查一条真实余票:新建对话,发送下面的提示词(日期就写「明天」,让 AI 自己换算成具体日期;它要是反问,把今天的日期告诉它):
text请用 12306 余票查询工具查车票, 查询要素在下面的输入素材里, 只报查询到的结果,查不到的不要编。 输入素材: 出发站:长沙南 到达站:武汉 日期:明天 车型席位:高铁二等座 要列出:车次、出发到达时间、余票数量 输入素材结束。执行后你会看到:一张真实车次列表,车次号、时刻和余票数来自 12306 的实时数据。
查你自己的线路:把出发站和到达站换成你家到学校(或任意两个城市)再查一次,体验「同一个插座,换参数就换任务」。
查什么 合格的样子 插座已装 MCP 列表里 12306 服务显示已连接 数据真实 车次与余票数字与 12306 官网/app 同日查询结果一致 不编造 让它查一条不存在的线路(如「长沙南到长沙南」),它明确说查不到而不是瞎编
问题与注意事项
- 查询超时或报错:12306 接口偶尔限流,等半分钟重查;还失败就换一条线路,仍不行找老师看服务状态。
- 查不到不是编一个:合格的标准是「查不到就说查不到」。谁的车次列表里有明显编造的车次号,回炉案例2 的「不编造」提醒。
- 社区服务更新快:这个包由社区维护,装不上时由教师现场核对替代包:[课前演练补充]。
扩展练习(选做)
想练「让 AI 替你做决策」的,加做一步。复制下面的提示词发送:
请再查一遍明天长沙南到武汉的高铁,
从结果里挑出二等座有票、
16 点以后出发的两个车次,
说明你推荐哪一个并给出依据,
依据只能来自查询结果本身。执行后你会看到:AI 给出推荐车次和基于余票与时间的依据。时间不够直接进案例4。
案例4:用 FastMCP 造自己的打卡服务
任务目标:
老师带练用 Python 的 FastMCP 框架,写一个自己的「学习打卡」MCP 服务器:两个工具——记一条打卡、查最近打卡,在本机跑起来后装进 WorkBuddy,完成一次真实打卡。现成的插座找不到你要的能力时,就自己造一个。
实操步骤
建服务目录:进入 D:\AIGC\lesson-12,右键 → 新建 → 文件夹,命名为
study-log。写服务器代码:进入 study-log,右键 → 新建 → 文本文档,用记事本打开,整段粘贴下面的代码,点「文件 → 另存为」,文件名输入
"server.py"(带英文双引号,防止记事本自动加 .txt),编码选 UTF-8 保存:pythonfrom fastmcp import FastMCP import json import os from datetime import date mcp = FastMCP("study-log") RECORDS = os.path.join(os.path.dirname(os.path.abspath(__file__)), "records.json") def load_records(): if os.path.exists(RECORDS): with open(RECORDS, "r", encoding="utf-8") as f: return json.load(f) return [] def save_records(records): with open(RECORDS, "w", encoding="utf-8") as f: json.dump(records, f, ensure_ascii=False, indent=2) @mcp.tool def add_record(content: str) -> str: """记一条学习打卡,content 写今天学了什么""" records = load_records() records.append({"日期": date.today().isoformat(), "内容": content}) save_records(records) return f"已记录第 {len(records)} 条:{content}" @mcp.tool def list_records(limit: int = 5) -> str: """查最近几条学习打卡,默认返回 5 条""" records = load_records() if not records: return "还没有打卡记录,先让我记一条吧。" recent = records[-limit:] lines = [f"{r['日期']}:{r['内容']}" for r in reversed(recent)] return "最近的学习打卡:\n" + "\n".join(lines) if __name__ == "__main__": mcp.run()代码里两个
@mcp.tool就是两个插座孔:add_record记打卡,list_records查打卡。打卡数据存进同目录的records.json——能力是你写的,数据落在你自己的电脑里。装 FastMCP 框架:这里必须用一次命令行,因为给 Python 装包没有图形界面可点。打开资源管理器进入
D:\AIGC\lesson-12\study-log,点一下窗口顶部的地址栏,删掉里面的路径、输入cmd回车,在弹出的黑色窗口里执行:batpip install fastmcp教师课前一般已装好,这里再执行一次只会提示「已满足」。执行后你会看到:出现
Successfully installed或Requirement already satisfied字样。如果提示 pip 不是内部命令或超时:找老师确认课前安装项(见课前准备),不要自己另装 Python。
试跑一次:还是在刚才的命令行窗口执行:
batpython server.py执行后你会看到:窗口出现 FastMCP 的启动字样并停住等待——这表示服务器已在待命。按
Ctrl+C先退出,接下来交给 WorkBuddy 去启动它。把自己的插座装进 WorkBuddy:添加 MCP 服务,贴入下面配置。注意
args里是你机器上的真实路径,反斜杠要写成两个。执行后你会看到:study-log 服务显示已连接。json{ "mcpServers": { "study-log": { "transport": { "type": "stdio", "command": "python", "args": ["D:\\AIGC\\lesson-12\\study-log\\server.py"] } } } }完成一次真实打卡:新建对话,先记一条再查一遍:
text请用我的学习打卡服务记录下面这条打卡, 记完查一下最近的打卡记录,报给我。 输入素材: 打卡内容:今天学会了用 FastMCP 写自己的 MCP 服务器 输入素材结束。执行后你会看到:AI 回报「已记录第 1 条」并附上查询结果。
打开原始档案:回到资源管理器,双击打开
D:\AIGC\lesson-12\study-log\records.json。执行后你会看到:文件里躺着刚才那条打卡的日期和内容——AI 说的和文件里记的是同一件事。对着验收表核一遍:
查什么 合格的样子 插座已装 MCP 列表里 study-log 显示已连接 记得进文件 records.json 里出现刚才那一条,日期正确 查得出来 新对话让 AI 查打卡,能报出记录条数和内容
问题与注意事项
- 连接失败先查三处:server.py 路径是否双反斜杠、文件扩展名是不是被记事本存成了 server.py.txt、命令行里
python server.py能不能正常启动。 - 出现中文乱码:server.py 和 records.json 都要求 UTF-8,记事本另存时别选 ANSI。
- 改了代码不生效:MCP 服务器是 WorkBuddy 启动的常驻程序,改完 server.py 要在 MCP 设置里停用再启用 study-log,才会加载新代码。
扩展练习(选做)
想给打卡服务加统计能力的,加做一步。复制下面的提示词发送(工作目录选 D:\AIGC\lesson-12\study-log):
请打开 server.py,给我的打卡 MCP 新增一个工具 count_records,
功能是统计 records.json 里一共有多少条打卡记录,
返回总条数和最早一条的日期。
改完告诉我怎么重启验证,并给出一句验证用的提示词。执行后你会看到:server.py 多出第三个工具,按它给的提示词验证能报出总条数。时间不够直接进收尾。
扩展任务:打造你的专属打卡助手(选做)
任务目标:
先跟老师把下面的基线提示词完整跑一遍,给打卡服务加一个「坚持天数」工具;跑通后,把功能描述换成你自己最想要的一个小工具再改一次。选做不计入必做时间。
实操步骤
复制下面的提示词发送(工作目录选 D:\AIGC\lesson-12\study-log):
text请打开 server.py,给我的打卡 MCP 新增一个工具 days_streak, 功能是从 records.json 里找出最早的打卡日期, 算出从那一天到今天一共坚持了多少天, 返回一句话:已连续记录 N 天,最早一条是某年某月某日。 改完告诉我怎么重启验证, 并给出一句验证用的提示词。执行后你会看到:server.py 多出 days_streak 工具,按 AI 给的验证提示词能查到「已连续记录 N 天」。
换成你自己的需求:把提示词里 days_streak 的功能描述换成你想要的小工具(比如统计本周打卡几次、按关键词找某条记录),重跑一遍。改坏了不要紧,把 server.py 删掉,回案例4 第 2 步重新粘贴一份完整代码即可。
五、总结与巩固
随机请两位同学打开自己的 MCP 列表,展示四个已连接的服务,并说一说其中一个是干嘛用的。
回想本课的方法:装插座三步——找到入口、贴配置、发消息验证。配置里的三样东西记住就行:服务名(插座叫什么)、命令(用什么程序起服务)、参数(给它的目录或脚本路径)。装现成的和造自己的,走的是同一条流程。
说一说:你的哪件日常琐事适合做成一个自己的 MCP?打算给它起什么工具名?
保留素材库、四个已连接的 MCP 服务和 records.json。下节课连接飞书和 ima 知识库——用的正是今天「装插座」的思路:WorkBuddy 把那些高频插座预装成了「连接器」,点授权就能用;你今天亲手装过的配置,就是连接器背后的东西。