news 2026/10/2 11:42:33

Skill 和 MCP 到底有什么区别?一篇讲清楚:一个教 Claude 怎么做事,一个让 Claude 接入外部世界|TaoToken 统一 Key 通道实践

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Skill 和 MCP 到底有什么区别?一篇讲清楚:一个教 Claude 怎么做事,一个让 Claude 接入外部世界|TaoToken 统一 Key 通道实践

1. 先把场景摆出来:为什么你总把 Skill 和 MCP 搞混

在 Claude Code 里折腾过一阵子的人,大概率都经历过这个阶段:想给 Claude 加点能力,搜到两个词,一个叫 Skill,一个叫 MCP,文档各看了一半,越看越糊涂。都能“扩展能力”,都要写配置,都能让 Claude 变强,那到底该用哪个?

我一开始也踩过这个坑。当时想让 Claude 帮我做代码评审,第一反应是去接一个 GitHub MCP,接完发现它确实能读到 PR 了,但评审出来的东西还是泛泛而谈,什么“建议增加错误处理”“注意边界情况”,跟团队真正在意的点完全对不上。后来才反应过来:我缺的根本不是数据通道,我缺的是“评审该按什么口径来”这件事本身。而这件事,MCP 解决不了,得靠 Skill。

所以这篇的核心检索词就一句话:Skill 是教 Claude 怎么做事,MCP 是让 Claude 接入外部世界。前者管方法、流程、输出规范,后者管连接、数据、可执行动作。搞清这条边界,后面所有选择都会变简单。

这篇文章适合三类人:刚上手 Claude Code、想给团队沉淀工作流、以及已经在用 MCP 但觉得“接了也没变聪明”的开发者。我会用 TaoToken 统一 Key 通道作为接入示例,把 Skill 配置片段、MCP server 注册、以及一次真实的工具调用验证动作全部走一遍,让你看完能直接落地。

先给一个生活化类比,后面所有细节都围绕它展开。把 Claude 想成一个刚入职的聪明新人:Skill 是你递给他的岗位 SOP,告诉他代码评审按什么顺序看、发版说明按什么格式写、排查线上问题先看日志还是先看监控;MCP 是你给他开通的系统权限,让他能查 GitHub Issue、能读 Notion 文档、能看 Sentry 报错、能查 PostgreSQL。SOP 和权限,缺一个都干不好活,但它们从来不是一回事。

2. TaoToken 前置:一条统一 Key 通道,把模型和工具串起来

在讲配置之前,得先把“通道”这件事说清楚,否则后面 Skill 和 MCP 的示例会散。Claude Code 本身要连模型,MCP server 要连外部系统,如果每个环节都单独配一套 Key、一套 Base URL,维护起来会很乱。我的做法是用 TaoToken 做统一入口,模型调用和工具调用都走同一条通道,Key 只维护一份。

TaoToken 在这里扮演的角色很单纯:它是一个兼容主流接口规范的 API 通道,你拿到一个 Key,配好 Base URL,Claude Code 就能正常发请求。官网入口在 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 地址是 https://taotoken.net/api ,注意 API 地址后面不加任何查询参数,保持干净。

具体操作分三步。第一步,进控制台创建 Key,地址是 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,创建完把 Key 复制出来,形如sk-xxxxxxxx,只显示一次,记得存好。第二步,如果你只是想先验证模型通不通,可以去模型对话页面 https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 直接发一条消息,确认 Key 有效。第三步,回到 Claude Code 配置环境变量,把 Base URL 指向 TaoToken 的 API 地址。

这里有个细节很多人会漏:Claude Code 读的是ANTHROPIC_BASE_URL和ANTHROPIC_AUTH_TOKEN这两个环境变量,不是随便起个名字就行。配置片段如下,直接复制到你的 shell 配置文件里:

export ANTHROPIC_BASE_URL="https://taotoken.net/api" export ANTHROPIC_AUTH_TOKEN="sk-你的Key"

配完执行source ~/.zshrc(或~/.bashrc)让它生效,然后echo $ANTHROPIC_BASE_URL确认一下。这一步做完,Claude Code 的模型通道就通了,接下来 Skill 和 MCP 才有意义——因为 Skill 要靠模型来执行,MCP 的调用结果也要回到模型里做推理。

如果你打算长期跑编码任务或者 Agent 工作流,可以考虑 Coding Plan,入口在 https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,它更适合高频、长时间的调用场景。而如果你只是想先跑通本文的示例,用按量 Key 就够了。Key 管理页面在 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,遇到参数问题先去文档翻一遍,比到处问快。

需要强调的是,TaoToken 在这里只是“通道”,它不改变 Skill 和 MCP 的职责划分。Skill 依然是方法层,MCP 依然是连接层,TaoToken 负责让这两层都能稳定地调到模型。把这三者的关系理清,后面的配置就不会乱。

3. 可复制配置:Skill 片段 + MCP server 注册一次给全

这一节是全文最实操的部分,我会把 Skill 的目录结构、SKILL.md 内容、MCP server 的注册命令、以及 settings 片段全部给出来,你照着改就能用。先讲 Skill,再讲 MCP,最后讲两者怎么在同一个项目里共存。

3.1 Skill 的目录结构与 SKILL.md

Skill 的本质是一个带SKILL.md的目录,放在项目的.claude/skills/下面。最小结构长这样:

.claude/ └── skills/ └── summarize-changes/ └── SKILL.md

更完整的可以带模板和示例:

.claude/ └── skills/ └── release-note/ ├── SKILL.md ├── template.md └── examples/ └── good-release-note.md

关键是SKILL.md,它分两部分:YAML frontmatter 告诉 Claude 这个 Skill 是什么、什么时候触发;Markdown 正文告诉它执行步骤和输出格式。下面是一个可以直接用的代码评审 Skill:

--- description: 按团队口径评审当前仓库改动。适合在用户说"帮我 review 当前 diff""检查这次改动有没有风险"时使用。 --- ## Current changes !`git diff HEAD` ## Instructions 请完成三件事: 1. 优先找真实 bug,而不是风格问题 2. 其次看安全、性能、兼容性 3. 必须指出缺失的测试,并说明该补哪类用例 ## Output 按严重程度排序输出: 1. 阻塞性问题 2. 建议修改 3. 可选优化

注意!git diff HEAD`` 这行,它是 Skill 里的动态注入语法,执行时会把当前 diff 塞进上下文。这样 Claude 不用你手动粘贴改动,直接就能看到。description字段写得好不好,直接决定触发准不准,建议把用户可能说的原话都塞进去。

3.2 MCP server 注册

MCP 的注册用claude mcp add命令。远程 HTTP 类型的写法:

claude mcp add --transport http notion https://mcp.notion.com/mcp

本地 stdio 类型的写法:

claude mcp add --transport stdio myserver -- npx -y some-mcp-server

管理命令有三个常用:

claude mcp list claude mcp get github claude mcp remove github

进 Claude Code 之后,输入/mcp可以看当前所有 server 的连接状态。如果某个 server 显示 failed,先看它的启动命令是不是缺依赖,再看环境变量有没有传进去。

3.3 settings 片段:让 Skill 和 MCP 共存

Claude Code 的项目级配置放在.claude/settings.json,下面是一个同时启用 Skill 和 MCP 的片段:

{ "permissions": { "allow": [ "Skill(summarize-changes)", "Skill(release-note)" ] }, "mcpServers": { "github": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-github"], "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_你的token" } } } }

这里要提醒一句:MCP server 的 token 不要硬编码进仓库,用环境变量引用更安全。另外,如果你用的是 Codex 系的工具,认证信息会落在auth.json里,格式和 Claude Code 不同,别混用。Cline 的 MCP 配置则在它自己的设置面板里,路径和 Claude Code 不一样,但三件套是一样的:Base URL、Key、Model ID,缺一不可。

配完之后,Skill 负责“怎么评审”,MCP 负责“去哪拿 PR 数据”,两者在同一个项目里各司其职,互不干扰。

4. 验证请求:跑一次真实工具调用,看结果落在哪

配置写完不算完,得跑一次真实调用,确认 Skill 触发了、MCP 连上了、结果符合预期。这一节我用一个具体场景走完整流程:让 Claude 按团队评审规则检查一个 GitHub PR。

第一步,确认 MCP 连接状态。进 Claude Code,输入/mcp,应该能看到 github server 显示 connected。如果显示 failed,先别往下走,回到上一节检查启动命令和 token。

第二步,触发 Skill。直接输入:

用我们的评审规则检查 GitHub PR #128,并给出需要修改的点。

这句话里有两个信号:评审规则会命中summarize-changes或code-review-rules的 description,GitHub PR #128会触发 github MCP 去拉数据。Claude 的执行顺序是:先通过 MCP 拿到 PR #128 的 diff 和评论,再按 Skill 里定义的顺序做评审。

第三步,看输出结构。如果 Skill 生效,输出应该严格按你定义的格式来,比如先列阻塞性问题,再列建议修改,最后列可选优化。如果输出是散的、没有结构,说明 Skill 没触发,检查 description 是不是写得太窄。

第四步,验证 MCP 真的拿到了数据。你可以追问一句:

PR #128 里改了哪几个文件?

如果 Claude 能准确列出文件名,说明 MCP 的数据通道是通的。如果它说“我无法访问”,那就是 MCP 没连上,或者 token 权限不够。

我实测下来,最容易出问题的是第三步和第四步之间的衔接:MCP 通了,但 Skill 没触发,结果 Claude 拿到了一堆 PR 数据却不知道该怎么评审,输出依然泛泛。这时候不要怀疑 MCP,回去改 Skill 的 description,把触发词写得更贴近你的实际说法。

如果你想单独验证模型通道是否正常,可以去模型对话页面 https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 发一条测试消息,确认 Key 和 Base URL 没问题。模型通道、MCP 通道、Skill 触发,这三件事要分开验证,混在一起排查会很痛苦。

5. 常见报错排查:401、local proxy failed、reading choices、OAuth

这一节按真实报错来,每个都给出原因和修法。这些是我和身边人踩过的坑,不是编的。

401 Unauthorized。最常见的原因是 Key 没配对,或者 Base URL 写错了。检查ANTHROPIC_AUTH_TOKEN是不是完整的sk-开头字符串,ANTHROPIC_BASE_URL是不是https://taotoken.net/api,注意结尾不要多加斜杠。如果 Key 是从控制台复制的,确认没有多余空格。还有一种情况是 Key 被禁用或额度耗尽,去 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 看一眼状态。

local proxy failed。这个报错通常出现在 MCP server 启动阶段,意思是本地进程没起来。原因可能是npx拉包失败、Node 版本不对、或者启动命令里的参数写错。先手动在终端跑一遍npx -y @modelcontextprotocol/server-github,看它报什么错。如果是网络问题导致拉包失败,换个时间重试或者提前把包装到本地。

reading choices 相关报错。这类报错一般出现在模型返回结构不符合预期时,比如返回体里没有choices字段。常见原因是 Base URL 指向了一个不兼容的端点,或者请求被中间层改写了。确认你用的是https://taotoken.net/api,并且没有在客户端里额外套一层转换。如果用了第三方客户端,检查它的接口格式是不是 OpenAI 兼容模式,Claude Code 用的是 Anthropic 格式,两者不能混。

OAuth 相关报错。MCP server 如果走 OAuth 授权,第一次连接会弹浏览器让你登录。如果报 OAuth failed,先确认回调地址有没有被防火墙拦,再确认 token 有没有过期。有些 server 的 OAuth token 有效期很短,过期后要重新授权。这类问题在 Notion、GitHub 这类需要账号授权的 MCP 上比较常见。

Skill 不触发。这不是报错,但比报错更烦。原因几乎都是description写得太抽象。修法是把用户可能说的原话都写进去,比如“帮我看看这次改了什么”“review 一下当前 diff”“生成提交摘要前先总结变更”。触发词越贴近真实说法,命中率越高。

MCP 连上了但 Claude 不用。这种情况通常是 Skill 和 MCP 的职责没分清。Claude 拿到了数据,但不知道该怎么处理。修法是补一个 Skill,明确告诉它“拿到数据后按什么结构输出”。记住那句话:MCP 管连接,Skill 管方法,缺一个都不行。

排查的时候有个原则:先验证模型通道,再验证 MCP 通道,最后验证 Skill 触发。三层分开测,比一锅乱炖快得多。

6. 语义一致 CTA:按你的场景选入口

走到这里,你应该已经能分清 Skill 和 MCP 了。最后按场景给几个入口,方便你直接落地。

如果你是在排查接入问题、配 Key、调 Base URL,先去 API Keys 页面 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 拿 Key,再去接入文档 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 对照参数。这两个页面能解决 90% 的接入类问题。

如果你只是想先验证模型能不能正常对话,去模型对话页面 https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 发一条消息,确认通道通了再往下配 Skill 和 MCP。

如果你打算长期跑编码任务、Agent 工作流,或者团队要沉淀一套稳定的 Skill + MCP 组合,看 Coding Plan https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,它更适合高频、持续的调用场景。

最后留一个我自己的判断口诀,你配的时候可以随时拿出来对:反复教 Claude 同一套方法,用 Skill;Claude 拿不到某个外部系统的数据,用 MCP;既要方法又要数据,两个一起上。把这句话贴在显示器边上,比记一堆概念管用。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/2 11:42:19

MCP协议最佳实践指南:用TaoToken统一Key打通AI与工具连接

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/2 11:41:27

Python + Playwright 实现网页表单批量自动化填写实战

提到程序自动化填写网页表单数据,可能很多人第一反应是爬虫、抢票脚本这类偏“灰色”的用途。但实际上,日常工作中最常见的需求反而是非常朴素的重复录入:每天从Excel里整理一批新信息,打开后台系统,一条条复制粘贴到网…

作者头像 李华
网站建设 2026/10/2 11:40:52

Paperclip协议:用文件系统重构AI Agent状态管理

1. “Paperclip”不是回形针:它正在重构AI Agent的工程范式最近在几个技术社区里频繁刷到“paperclip”这个词,尤其和OpenClaw、React、Node.js绑在一起出现——比如“agent failed before reply: session file locked (timeout 60000ms) openclaw”这种…

作者头像 李华
网站建设 2026/10/2 11:40:37

203.诊断

实验室不大,大约二十平方米左右,但布置得井井有条。进门左手边是一张不锈钢操作台,台上摆放着电子天平、切割机、镶嵌机和磨抛机等样品制备设备。右手边靠墙的位置,一台崭新的台式直读光谱仪静静地矗立着,银白色的外壳…

作者头像 李华