ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

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

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 URLClaude Code 就能正常发请求。官网入口在 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 地址是 https://taotoken.net/api 注意 API 地址后面不加任何查询参数保持干净。具体操作分三步。第一步进控制台创建 Key地址是 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 创建完把 Key 复制出来形如sk-xxxxxxxx只显示一次记得存好。第二步如果你只是想先验证模型通不通可以去模型对话页面 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 直接发一条消息确认 Key 有效。第三步回到 Claude Code 配置环境变量把 Base URL 指向 TaoToken 的 API 地址。这里有个细节很多人会漏Claude Code 读的是ANTHROPIC_BASE_URL和ANTHROPIC_AUTH_TOKEN这两个环境变量不是随便起个名字就行。配置片段如下直接复制到你的 shell 配置文件里export ANTHROPIC_BASE_URLhttps://taotoken.net/api export ANTHROPIC_AUTH_TOKENsk-你的Key配完执行source ~/.zshrc或~/.bashrc让它生效然后echo $ANTHROPIC_BASE_URL确认一下。这一步做完Claude Code 的模型通道就通了接下来 Skill 和 MCP 才有意义——因为 Skill 要靠模型来执行MCP 的调用结果也要回到模型里做推理。如果你打算长期跑编码任务或者 Agent 工作流可以考虑 Coding Plan入口在 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 它更适合高频、长时间的调用场景。而如果你只是想先跑通本文的示例用按量 Key 就够了。Key 管理页面在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 遇到参数问题先去文档翻一遍比到处问快。需要强调的是TaoToken 在这里只是“通道”它不改变 Skill 和 MCP 的职责划分。Skill 依然是方法层MCP 依然是连接层TaoToken 负责让这两层都能稳定地调到模型。把这三者的关系理清后面的配置就不会乱。3. 可复制配置Skill 片段 MCP server 注册一次给全这一节是全文最实操的部分我会把 Skill 的目录结构、SKILL.md 内容、MCP server 的注册命令、以及 settings 片段全部给出来你照着改就能用。先讲 Skill再讲 MCP最后讲两者怎么在同一个项目里共存。3.1 Skill 的目录结构与 SKILL.mdSkill 的本质是一个带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的 descriptionGitHub 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_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_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_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_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_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 拿 Key再去接入文档 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 对照参数。这两个页面能解决 90% 的接入类问题。如果你只是想先验证模型能不能正常对话去模型对话页面 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 发一条消息确认通道通了再往下配 Skill 和 MCP。如果你打算长期跑编码任务、Agent 工作流或者团队要沉淀一套稳定的 Skill MCP 组合看 Coding Plan https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 它更适合高频、持续的调用场景。最后留一个我自己的判断口诀你配的时候可以随时拿出来对反复教 Claude 同一套方法用 SkillClaude 拿不到某个外部系统的数据用 MCP既要方法又要数据两个一起上。把这句话贴在显示器边上比记一堆概念管用。
返回列表