过去三个月,我把 WorkBuddy 当成主力的 MCP 接入试验台,把市面上叫得上名字的 MCP 服务几乎接了个遍。接得越多,越发现一个普遍现象:很多人开口就是“我配了十几个 MCP”,可真要问他“这个流程里哪一段是 Skill、哪一段是 MCP”,立刻就含糊了。这两者被混着用,是绝大多数人把 MCP 玩得又乱又低效的根本原因。
这篇文章不做概念复读机,而是基于我实际在 WorkBuddy 里跑过的 10 套 MCP 服务,逐个说说它们的安装方式、真实体验、适合场景和踩过的坑,顺带把 Skill 与 MCP 的边界彻底讲清楚。无论你是刚接触 MCP 的新手,还是已经在多个工具间来回折腾的老手,这篇都能帮你少走不少弯路。
1. 先分清 Skill 和 MCP,再谈接了多少个连接器
1.1 MCP 是“连接能力”的标准化接头
MCP 的官方定义是 Model Context Protocol,翻译过来就是“模型上下文协议”。它的本质是给 AI 模型和外部工具之间定了一个统一的接口标准。过去你要让 AI 读文件、查数据库、调浏览器,每个工具都要单独写适配逻辑;现在只要这个工具实现了 MCP Server,客户端实现 MCP Client,两边就能像 USB 设备插上 USB 口一样直接通信。
在 WorkBuddy 里,MCP 连接器负责的是一件很纯粹的事:提供能力。它能读本地文件、能查 GitHub Issue、能搜索网页、能执行 SQL 查询。你把它理解成“插在电脑上的外设”就行,但外设本身不会自己完成一套复杂任务,它只是具备某个单一维度的操作能力。
一个 MCP Server 通常会暴露三类东西:Tools(工具,AI 可以调用的函数)、Resources(资源,AI 可以读取的数据)、Prompts(提示模板,预置的交互脚本)。日常用得最多的是 Tools,比如 Filesystem MCP 提供的 read_file、write_file、list_directory,GitHub MCP 提供的 create_issue、list_pull_requests,这些就是能力的原子单位。
1.2 Skill 是“完成一件事”的编排脚本
WorkBuddy 里的 Skill,定位完全不一样。它不是能力接口,而是把一组能力串成一条完整工作流的“编排脚本”。一个 Skill 内部可以包含提示词模板、参数定义、多个 MCP 工具的组合调用、条件分支逻辑、输出格式约束。
举个例子:我想让 AI 每周五自动生成一份团队周报。这个任务如果只靠 MCP 根本做不了,因为没有任何一个 MCP 服务叫“生成周报”。但写成 Skill 就不一样了:
- 调用 Slack MCP 获取本周团队群里的讨论消息
- 调用 SQLite MCP 查询本周工单处理数据
- 调用 Filesystem MCP 读取指定目录下的项目进展文档
- 最后把以上素材交给模型,按预设的周报模板结构生成内容并保存
这个过程里,每个 MCP 服务只负责一件事,但 Skill 负责把顺序、规则、提示词组织好,最终产出有价值的结果。所以 Skill 是“做一件事”,MCP 是“能做一个动作”。
1.3 两者混用会有什么代价
我见过不少人在 WorkBuddy 里要么只配 MCP 不建 Skill,要么建了一堆 Skill 但完全没接 MCP。
只配 MCP 不建 Skill 的结果是:你确实拥有了很多“能力”,但这些能力是一盘散沙。AI 有文件读写能力、有搜索能力、有数据库查询能力,但你每次都要重新描述一遍完整的执行逻辑,效率很低。
只建 Skill 不接 MCP 的结果更糟:Skill 没有数据来源,内部的工具调用全是空的,只能靠模型编造或使用训练数据里的过期信息,输出看起来完整,实际上根本不可用。
正确的思路是:MCP 是 Skill 的基础设施,Skill 是 MCP 的上层调度。先想清楚你要做什么事,再按需选择接入哪些 MCP 能力,然后用 Skill 把它们封装成可复用流程。这个顺序对了,后面怎么接都知道该往哪使劲。
2. 统一接入的前置准备与我的测评口径
2.1 我用的调试工具:MCP Inspector 是排查问题的第一站
在开始全部测评之前,强烈建议先配好 MCP Inspector。它是官方提供的一个可视化调试工具,可以单独加载任意 MCP Server,查看它暴露了哪些 Tools,手动调用某个 Tool 看返回结构,还能直接看到完整的 JSON-RPC 请求和响应。
我测下来的实际体验是:在 WorkBuddy 里调用某个工具报错时,直接在 WorkBuddy 的日志面板里看错误信息往往不够直观,尤其是指针不明的问题。这时候把同一个 MCP Server 搬到 Inspector 里跑一遍,基本能立刻看出是服务启动失败、工具名写错,还是返回格式异常。
Inspector 的启动方式也很简单,用 npx 就能拉起来:
npx @modelcontextprotocol/inspector启动后它会提供一个本地 Web 页面,在页面上填入要调试的 MCP Server 命令和参数,就能连接并浏览工具列表。这套工具帮我排查了不少看起来像“模型变笨了”的问题,实际上都是某个工具悄悄挂掉导致的。
2.2 我的测评维度
横向测评最怕标准不统一。这次我固定用五个维度评估每一套 MCP 服务,下面的分析都基于这几个维度:
- 接入成本:安装命令是否简单、配置项是否多、是否需要额外申请 token 或注册账号
- 稳定性:调用多次是否会出现随机失败、服务是否容易断连、有没有已知的崩溃场景
- 响应速度:工具调用从发出到拿到结果的大致耗时,尤其在长文本处理时是否明显卡顿
- 权限复杂度:token 需要哪些 scope、是否容易遗漏权限导致调不通
- 实战价值:放在真实工作流里能解决什么具体问题,是否是不可替代的
每项分四档:极简、简单、中等、复杂。这个口径在后面每个服务的描述里都会用到,方便对比。
2.3 运行环境说明
我这轮测试的环境是 macOS + Node.js 20 LTS + Python 3.11 + Docker Desktop,WorkBuddy 作为 MCP 客户端集中管理所有连接器。大部分 MCP 服务用 npx 直接启动,少数需要 Docker 跑,还有几个需要环境变量注入 token。
需要提醒的是:npx 首次运行某个 MCP 包时,会先在本地下载,这个过程如果网络状况不理想,很容易让 WorkBuddy 误判为“服务启动失败”。我一开始还以为是配置写错了,后来才发现是 npx 缓存还没拉完。先在终端手动执行一次同样的 npx 命令,确认能正常启动,再去配置 WorkBuddy,这个顺序能省掉不少冤枉时间。
3. 10 套实战 MCP 服务逐个过:安装、体验、坑位
3.1 文件与网页获取:Filesystem 和 Fetch 是情报输入的基础设施
Filesystem MCP(官方 @modelcontextprotocol/server-filesystem)
这是最值得先装的一套服务,接入成本极简。通过它,AI 可以读取、写入、编辑本地文件,甚至能做目录创建、文件搜索等操作。我在 WorkBuddy 里的典型用法是让它读取项目目录下的日志文件、修改配置文件、批量重命名文件。
安装方式是在 mcp.json 里指定工作目录白名单:
{ "mcpServers": { "filesystem": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-filesystem", "/Users/me/workspace" ] } } }这里有一个很关键的安全设计:路径必须显式写出来,默认不能访问白名单之外的内容。这个限制非常合理,因为 AI 写文件的能力一旦失控,后果比读文件严重得多。我一开始把所有常用目录都加了进去,后来发现目录越多,AI 越容易在路径匹配上犯迷糊,建议只加当前项目实际用到的目录。
稳定性方面,这套服务非常皮实,我连续跑了很多天没有出现过崩溃。唯一一次遇到问题是我给了它一个新创建的空目录,恰好目录名的中文字符编码在 macOS 上被 WorkBuddy 日志转义了,导致它一直报“目录不存在”,最后在 Inspector 里手动传参才确认是编码显示问题,实际服务本身没有故障。
Fetch MCP(官方 @modelcontextprotocol/server-fetch)
Fetch 负责把网页内容转成 Markdown 格式喂给模型。它的价值在于让 AI 可以“读网页”,而不是只能靠训练数据里的旧内容。我经常让它抓取技术文档、GitHub README、新闻页面。
安装同样很简单:
npx -y @modelcontextprotocol/server-fetch这套服务的响应速度受目标网站影响很大。抓普通博客很快,基本一两秒就返回;抓有大量 JS 渲染的站点就直接废了,因为 Fetch 本质上是请求 HTML 源码,不做浏览器渲染。所以如果你的目标是那些需要 JS 执行的 SPA 站点,不要指望 Fetch 能拿到完整内容,这种情况应该交给后面的 Puppeteer。
Fetch 还有一个容易被忽略的行为:部分网站会返回很大的页面,MCP 返回给模型的内容如果超过上下文窗口,WorkBuddy 会做截断处理,导致模型看到的信息不完整。我实际测试时抓一个长文章页面,模型只看到前 8000 字符,后面的内容全丢了。解决方案是在 Skill 里增加一步“先让模型判断内容是否被截断,如果被截断就换用 Filesystem 做分段缓存再读”,这个思路后面细说。
3.2 开发辅助三件套:GitHub、Context7、Sentry 各有各的脾气
GitHub MCP(官方 github/github-mcp-server)
这是我在开发类工作流里最依赖的一套装配置,也是一开始配置最容易翻车的。GitHub 官方维护的 MCP Server 有两种运行方式:Docker 方式或远程连接方式。我推荐使用远程连接方式,因为无需本地起进程。
接入前需要创建一个 Personal Access Token,也就是个人访问令牌。这里必须注意权限配置:如果只是读代码、提 issue、查 PR,token 只需要 repository 相关的读权限;只有当你确实需要让 AI 直接操作仓库内容时,才给它更高的写权限。
我踩过的一个具体坑是:第一版配置时我图省事,直接用了之前给 CI 系统用的全权限 token,结果 AI 在某个操作里真的修改了一个分支设置,差点出事。那次之后我的原则是:单独为 MCP 建一个专用 token,只给当前工作流必需的 scope,绝不复用其他系统的凭证。
实际体验上,GitHub MCP 的速度和稳定性都不错,list_issues、get_pull_request、search_repositories 这些常用工具响应都在两秒内。最有用的工具是代码搜索,它可以让 AI 直接跨仓库搜代码片段,做代码审查时非常实用。
Context7 MCP(@upstash/context7-mcp)
这个服务解决的问题特别具体:让 AI 能读到最新版的第三方库文档。模型训练数据有时间截点,你让它写一个基于最新版框架的代码,它很容易按照旧 API 接口来写。Context7 把各种框架的官方文档做了索引,MCP 调用时按需取一段文档内容给模型。
安装是 npx 一行命令:
npx -y @upstash/context7-mcp使用方式也很符合直觉:先调用 lookup-library 接口确认某个库在不在文档索引里,再调用 get-library-docs 获取指定模块的文档内容。我用它查过多个前端框架的最新 API,准确率很高。
这套服务没有 token 配置,接入成本极简。缺点是文档覆盖面不是百分之百,一些偏小众或更新不频繁的库可能查不到。另外每次调用会消耗不少上下文空间,建议只在你需要最新 API 用法时才用,不要全程挂在流程里。
Sentry MCP(ghcr.io/getsentry/mcp)
Sentry MCP 是我处理线上报错时的利器,它把 Sentry 的项目报错信息、堆栈追踪、事件详情接到 AI 面前,让模型可以直接分析崩溃原因。
它的运行方式比较特殊,需要 Docker:
docker run -e SENTRY_AUTH_TOKEN=... -e SENTRY_ORG=... -p 8000:8000 ghcr.io/getsentry/mcp其中 SENTRY_AUTH_TOKEN 需要在 Sentry 后台创建一个内部集成或用户令牌,SENTRY_ORG 填你的组织名。这个是所有测试服务里配置相对繁琐的一档,token 也容易因为权限不足导致拉不到事件详情。
实际效果我很满意:把一次生产环境的异常堆栈丢给它,它能基于 Sentry 返回的上下文快速指出错误发生在哪一行、上游调用的链路是什么,甚至能结合项目代码结构提出修复建议。相比自己盯着堆栈一行行看,确实省力不少。
不过要提醒的是,Sentry MCP 只负责解析 Sentry 平台信息,它读不到你的完整项目代码。如果想让它在分析报错时也看到具体代码上下文,需要配合 Filesystem MCP 把相关源码目录挂进来,这又是一个 Skill 编排的场景。
3.3 数据与自动化:SQLite 和 Puppeteer 是干活最重的两个
SQLite MCP(官方 @modelcontextprotocol/server-sqlite)
如果你的工作流涉及本地数据查询,这个基本是必装的。它允许 AI 连接一个 SQLite 数据库文件,执行 SELECT、INSERT、UPDATE 等 SQL 操作。我在多套测试里都用它做结构化数据的存储和查询,稳定性和速度都非常出色。
启动配置很简单:
{ "mcpServers": { "sqlite": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-sqlite", "/path/to/data.db" ] } } }这套服务的风险点不在技术本身,而在使用习惯。AI 执行 SQL 时如果权限不受限,它可以任意修改数据库内容。我的建议很明确:除非你确实需要 AI 做数据写入,否则把数据库文件设为只读,或者在 WorkBuddy 的 Skill 里明确约束 AI 只能执行 SELECT 语句。
有一次我在测试时让 AI 分析一批用户行为数据,它在理解需求时自己决定“先建一个临时表再查”,直接把生产环境同名的数据库结构给改了。问题虽然不大,但给我提了个醒:给 AI 的 SQL 权限,必须和你愿意承担的修改风险成正比。
Puppeteer MCP(官方 @modelcontextprotocol/server-puppeteer)
Puppeteer MCP 把无头浏览器能力接入进来,AI 可以打开网页、点击按钮、填写表单、截图,甚至执行页面上的 JavaScript。它是 Fetch 的终极版本,能处理一切需要 JS 渲染的场景。
安装命令:
npx -y @modelcontextprotocol/server-puppeteer首次运行会自动下载对应版本的浏览器内核,这个过程比较慢,而且如果你的环境缺少一些系统依赖库,浏览器内核启动会失败。我在另一台 Linux 机器上测试时就遇到缺少共享库导致无法启动,需要手动安装依赖才能解决。
实际体验上,Puppeteer MCP 的功能很强,但使用时要非常小心资源占用。每开一个页面就是一个新的浏览器标签,如果你在同一个会话里连续开十个页面,内存占用会肉眼可见地上涨。建议在 Skill 里加一条逻辑:每次访问完页面后主动调用 close 工具关闭标签,避免资源堆积。
它在网页自动化场景里几乎是不可替代的。我在测试里让它打开一个后台管理系统的页面、输入账号密码、点击登录、跳转后截图,全程零人工干预就跑通了。不过这类自动化操作要格外注意合规性,只在自己有权限的系统里使用。
3.4 信息检索:Brave Search 让我放下了手动搜索的执念
Brave Search MCP(官方 @modelcontextprotocol/server-brave-search)
这是一个联网搜索服务,安装时需要先到 Brave 官网申请一个免费的 API Key。它适合让 AI 获取实时信息,比如最新技术动态、某个库的当前版本号、某篇新闻的原文内容。
配置方式:
npx -y @modelcontextprotocol/server-brave-search在环境变量里设置 BRAVE_API_KEY 即可。免费版有每月查询次数限制,日常轻度使用够用,但如果你的工作流里每小时都要搜索,很快就用完了。
搜索结果的质量方面,英文内容的准确率和时效性明显优于中文内容。它的返回结果是网页列表加摘要,AI 会基于这些信息做二次总结。这里容易出现一个问题:模型有时候会把搜索摘要里的内容当成权威结论,实际上摘要本身可能来自不可靠来源。我建议在 Skill 里明确要求模型标注信息来源,并在关键结论上要求它引用具体链接。
3.5 协作与知识库:Slack 和 Notion 配置繁琐但回报很高
Slack MCP(官方 slack/bolt-mcp 相关实现)
它让 AI 可以读取 Slack 频道的消息记录、发送消息、查看线程回复。对企业内部使用来说,这个能显著减少“人工复制聊天记录再喂给 AI”的流程。
Slack MCP 的配置是所有服务里最复杂的,因为它需要创建一个 Slack 应用、配置 Bot Token、设置事件订阅和 OAuth 权限。我实测下来,最容易出问题的是权限范围遗漏。你至少要给 Bot 添加这样几个权限:
- channels:history 读取频道消息
- chat:write 发送消息
- reactions:write 添加表情回应
- users:read 读取用户信息
缺少任何一个权限,对应的工具调用就会报权限错误,而且在日志里并不醒目,经常是一段含糊的 not_allowed_token_type。我排了很久才发现是少配了 users:read,这类问题去 Slack 应用的 OAuth 权限页面逐项核对才能解决。
跑通之后它的体验相当顺滑。我在测试里做了一个简单的工单提醒 Skill:当 SQLite 里某个工单状态变为待处理时,通过 Slack MCP 自动发消息到指定频道,并艾特对应负责人。整个过程稳定运行,没有出现过掉线。
Notion MCP(makenotion/notion-mcp)
它允许 AI 操作 Notion 工作区的页面、数据库、块内容。对于知识库管理场景非常实用,在 WorkBuddy 里可以让 AI 根据对话内容自动创建笔记页面,或者从 Notion 数据库里查询任务状态。
接入方式以 Docker 为主,需要提前在 Notion 后台创建 Integration,拿到集成令牌后配置到环境变量里。注意这个令牌要关联到具体的页面或数据库,未授权的内容是访问不了的。我一开始怎么调试都读取不了某个数据库,后来才意识到需要在该数据库的页面设置里手动添加“连接”这个集成,这个问题有很强的隐蔽性。
还有一点要注意:Notion MCP 对数据库内容的写入并不总是完全符合预期。它有明确的权限模型,但某些嵌套块的编辑会出现位置错乱的情况,因此如果你需要它修改一个结构复杂的页面,最好让它在修改前先读取页面结构,再按计划精确操作,不要让它自由发挥。
4. 横向对比:优先级、稳定性与真实场景匹配度
4.1 一张表看完 10 套服务的对比结果
下面这张表是我按照固定维度打出的实际测评结果,单项排名分四档:极简、简单、中等、复杂。
| 服务名称 | 接入成本 | 稳定性 | 响应速度 | 权限复杂度 | 推荐度 | 核心场景 |
|---|---|---|---|---|---|---|
| Filesystem | 极简 | 高 | 快 | 低 | 必装 | 本地文件读写、日志分析、配置修改 |
| Fetch | 极简 | 中 | 中 | 低 | 选装 | 抓取静态网页转 Markdown |
| GitHub | 简单 | 高 | 快 | 中 | 必装 | Issue/PR 操作、代码搜索、项目协作 |
| Context7 | 极简 | 高 | 中 | 低 | 必装 | 获取第三方库最新文档 |
| Sentry | 复杂 | 中 | 中 | 高 | 按需 | 线上崩溃堆栈分析 |
| SQLite | 简单 | 高 | 快 | 中 | 按需 | 结构化查询、数据分析、本地存储 |
| Puppeteer | 中等 | 中 | 慢 | 低 | 按需 | JS 渲染页面抓取、浏览器自动化 |
| Brave Search | 简单 | 中 | 快 | 低 | 选装 | 实时信息检索 |
| Slack | 复杂 | 高 | 快 | 高 | 按需 | 团队消息读写、自动通知 |
| Notion | 中等 | 中 | 中 | 高 | 按需 | 知识库查询、页面创建与编辑 |
4.2 三类优先级:先装什么、后装什么、不装什么
如果让我给一个刚接触 WorkBuddy 的人推荐接入顺序,我会分成三档。
第一档是基础建设,装上就能提升绝大多数场景的效率:Filesystem、GitHub、Context7。这三套服务的共同点是接入简单、稳定性高、能直接嵌入到大量 Skill 里。
第二档是按需增强,你需要什么场景才装什么:SQLite 适合数据处理,Fetch 和 Puppeteer 适合网页信息获取,Notion 适合知识库管理。这个阶段的决策逻辑不是“越多越好”,而是“我的日常流程里缺哪块”。
第三档是要有条件才装:Slack 和 Sentry 都是配置复杂、权限敏感的服务。如果你的团队已经在用 Slack 或者你经常处理 Sentry 报错,那它们非常值得投入成本。如果只是跟风装来试玩,大概率会卡在权限配置上,最后沦为摆设。
4.3 不推荐一上来全装
我见过一些朋友刚接触 MCP 时非常兴奋,半小时内把所有服务全部配好,然后发现对话质量并没有变好,反而经常出现模型在工具选择上犹豫不决、调用错工具的情况。
这里有个很实际的原因:MCP 服务接入越多,模型在每一步需要区分的工具就越多,决策负担越大。尤其在一个 Skill 里,如果同时能看到文件工具、搜索工具、数据库工具、浏览器工具,它有时候会选择绕远路去完成一个本来应该一步到位的操作。
我个人的经验是,单条 Skill 里涉及的 MCP 服务控制在三个以内是最舒服的。接入的数量可以很多,但每个具体的 Skill 应该尽量精简,不要让模型面临无意义的“多选框”。
5. 避坑实录:配置、权限、token 与运行日志的排查链路
5.1 路径与启动参数:启动失败的三个常见原因
第一是 npx 首次下载未完成,WorkBuddy 里显示服务启动失败,但实际是没有耐心的客户端等不到 npx 跑完。我的建议是先终端执行一遍同样的命令,确认能手动启动后再接入 WorkBuddy。
第二是 npx 缓存目录里的包版本冲突。某次我在升级一个 MCP 服务后发现旧版行为还在,排查了半天才发现 npx 默认缓存了旧包版本,需要先清理缓存再重试。
第三是 Node/Python 版本不兼容。有几套服务对 Node 版本有要求,Node 18 以下直接跑不起来。我建议在启动服务的命令前加上环境变量指定正确的版本路径,而不是依赖系统默认。
5.2 权限与 token:最危险的是偷懒用全权限凭证
这个坑我前面提过,但值得单独强调。无论是 GitHub、Slack 还是 Notion,几乎所有需要 token 的服务,你都应该单独为 MCP 创建一个专用凭证,并只赋予当前工作流必需的权限。
MCP 的 AI 有自主决策能力,它的行为具有一定不确定性。它不是在按固定脚本执行,而是根据模型理解动态规划工具调用,这意味着一个权限过大的 token,本质上等于把一个高权限账号交给了一个可能误判的代理。给 AI 的权限越小,犯错的破坏半径就越小。
5.3 响应太长导致截断:模型“看不到”完整结果的伪装问题
这个问题非常隐蔽。当某个 MCP 工具返回的内容超过模型上下文窗口时,客户端往往会做静默截断,但模型本身并不知道结果被截断了,它只会基于自己看到的一部分内容继续生成答案。表面上看一切正常,实际上结论可能建立在缺失信息上。
我的排查方法是:在 Skill 里给模型加一条检查提醒,当它依赖某个工具的返回结果进行分析时,先主动确认返回内容是否完整,遇到可疑截断就要求重新读取或换一种方式分段获取。Context7 和 Fetch 这两类服务最容易触发这个问题,尤其是拉取长文档时。
5.4 排错链路:不要一上来就怀疑模型能力
我在接入过程中踩了很多次坑,总结出一条稳定的排查顺序:
第一步,先在 WorkBuddy 里查看这次调用的日志,确认是客户端报错还是服务端无响应。第二步,把对应的 MCP Server 搬到 MCP Inspector 里手动触发同样的工具调用,看能否独立复现问题。如果可以复现,说明问题出在这个服务本身或它的依赖环境;如果不能复现,说明问题可能在 WorkBuddy 与服务之间的连接配置或超时设置上。第三步,检查这个服务的源码仓库 issue 区域,很多已知问题别人早就遇到过,搜索关键词就能找到解决方案。第四步才是重新审视 Skill 里的提示词是否给出了模糊指令。
这套链路帮我解决过至少七八个表面上看像“模型能力不行”的问题,实际上都是服务本身的环境依赖或配置错误。
6. 在 WorkBuddy 里让 Skill 和 MCP 协同工作的两种落地模式
6.1 模式一:先收集后汇总的“素材流水线”
以我之前做的团队周报 Skill 为例,它串联了三个 MCP 服务:Slack、SQLite、Filesystem,外加 Notion 作为输出目标。Skill 内部的逻辑是这样设计的:第一步从 Slack 拉取指定频道最近一周的消息记录,提取与项目相关的讨论;第二步从 SQLite 查询本周工单状态变化,统计完成数量和待处理事项;第三步把这两部分素材交给模型,按照预设的周报模板生成结构化内容;第四步通过 Notion MCP 把内容写入指定数据库,同时在本地用 Filesystem 保存一份 Markdown 备份。
这个流程如果只用单个 MCP 服务,根本跑不出来。但有了 Skill 编排,几个原本独立的能力就成了一台完整的“周报生成机”。每次需要时直接触发,不需要重新描述需求。
6.2 模式二:问题驱动的“排查工作流”
另一个对我帮助很大的模式是线上问题排查。它串联的是 GitHub、Sentry、Context7 三套服务。
当收到一个线上异常通知时,这个 Skill 会先读取 Sentry 的堆栈信息,提取错误类型和发生位置。接着,它调用 GitHub MCP 获取相关代码仓库里对应模块的文件内容,把报错位置和实际代码对应起来。如果错误涉及某个第三方库的调用方式,它会用 Context7 确认当前版本的正确用法,最后综合以上信息给出一个带有代码定位、原因分析和修复建议的报告。
这种工作流的特点是“带着具体问题驱动工具调用”,每一步都有明确的目标,不会让模型漫无目的地操作。相比直接让模型“帮我看看哪里错了”,可靠性高得多。
6.3 我的选择:不追求更多,先打磨一条完整链路
接得多了以后,我反而开始做减法。现在的原则很简单:Skill 数量不求多,每一条 Skill 都必须绑定明确的场景和可量化的产出。MCP 服务的接入也遵循同样的标准,如果一个服务拿不出一个具体场景,就先不接。
如果你刚上手,我建议也这样:挑一个你每周都要花时间处理的重复性任务,拆解它的步骤,找到每一步对应需要的 MCP 服务,然后用一条 Skill 把步骤串起来。先跑通一条完整的闭环,再考虑扩展更多连接器。你会比我一开始那种“全装再说”的路径高效得多。