1. 先把 MCP 和 Skill 的边界说清楚
如果你正在用 Claude Code、Cursor 或者别的 AI 编程助手,大概率会在配置文件里同时看到 MCP 和 Skill 这两个词。很多人第一次接触时会把它们当成同一类东西,觉得都是“给 AI 加能力”,装就完事了。实际用下来会发现,这俩解决的是完全不同的问题,混着理解很容易在配置阶段就卡住。
一句话概括:MCP 是接外部工具和数据源的协议,Skill 是教 AI 怎么完成某类任务的方法说明。MCP 让 AI 能访问外部系统、工具、数据库、浏览器、文档服务;Skill 告诉 AI 遇到某类任务时应该按什么流程做。Plugin 则是更大的打包形式,一个 Plugin 里可以同时包含 Skill、MCP Server 配置、Slash Commands、Agents、Hooks。
用程序员熟悉的比喻:MCP 像一组 API 或 SDK,让 AI 能调用外部能力;Skill 像一份 SOP 或工作流说明,让 AI 知道该怎么干活;Plugin 像一个 npm 包,把多种能力打包安装。这篇就聚焦 Claude Code 场景,从 settings.json 到 config.toml 给出可复制的配置骨架,再演示一次调用验证动作,帮你在本地快速区分并落地这两个概念。
适合谁看:正在用 Claude Code 或类似 AI 编程助手,想搞清楚 MCP、Skill、Plugin 分别是什么、怎么配、怎么验证的人。读完你应该能自己写出一个最小可用的 MCP 配置和一个 Skill 定义,并且知道什么时候该用哪个。
2. 前置准备:TaoToken 接入与 Claude Code 环境
在动手配 MCP 和 Skill 之前,得先保证 Claude Code 能正常跑起来。Claude Code 本身是一个命令行 AI 编程助手,它需要一个可用的模型接入点。我这边用的是 TaoToken 提供的接入服务,官网在 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/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite ,登录后在控制台里创建一个新的 Key,复制出来先存到安全的地方。这个 Key 后面要写进 Claude Code 的环境变量或配置文件里。
第二步是确认 Claude Code 已经安装。如果你还没装,可以用 npm 全局安装:
npm install -g @anthropic-ai/claude-code装完之后在终端里执行claude --version,能打印出版本号就说明安装成功。接下来需要把 TaoToken 的接入信息告诉 Claude Code。最直接的方式是通过环境变量:
export ANTHROPIC_BASE_URL="https://taotoken.net/api" export ANTHROPIC_API_KEY="你的_TaoToken_API_Key"如果你用的是 Windows PowerShell,写法是:
$env:ANTHROPIC_BASE_URL="https://taotoken.net/api" $env:ANTHROPIC_API_KEY="你的_TaoToken_API_Key"设置完之后执行claude进入交互界面,随便问一句“你好”,能正常回复就说明接入通了。这一步是整个配置的地基,如果这里不通,后面 MCP 和 Skill 配得再对也没用。
注意:API Key 不要直接提交到 Git 仓库,建议放在 shell 的 profile 文件里,或者用 Claude Code 支持的配置文件方式管理。
3. 可复制配置:settings.json 与 config.toml 骨架
Claude Code 的配置分几个层次。全局配置一般在用户目录下的.claude/settings.json,项目级配置在项目根目录的.claude/settings.json。MCP Server 的配置通常写在 settings.json 的mcpServers字段里。而 Skill 的定义一般放在.claude/skills/目录下,每个 Skill 一个文件夹,里面包含说明文件。
先看 settings.json 的骨架。这是一个包含 MCP Server 配置的最小示例:
{ "mcpServers": { "context7": { "command": "npx", "args": ["-y", "@upstash/context7-mcp"], "env": {} }, "playwright": { "command": "npx", "args": ["-y", "@playwright/mcp"], "env": {} } } }这里配了两个 MCP Server:context7 用来查最新框架文档,playwright 用来做浏览器自动化。command是启动命令,args是参数,env是环境变量。Claude Code 启动时会读取这个文件,把对应的 MCP Server 拉起来,然后 AI 就能调用这些工具了。
再看 Skill 的配置骨架。Skill 不是写在 settings.json 里的,而是以文件形式存在。在项目根目录创建.claude/skills/code-review/SKILL.md,内容如下:
--- name: code-review description: 对当前代码变更做系统性审查,按正确性、可维护性、安全性维度检查 --- # Code Review Skill ## 何时使用 当用户要求审查代码、检查变更、做 code review 时使用。 ## 执行步骤 1. 先查看当前 git diff,确认变更范围 2. 按正确性、可维护性、安全性三个维度逐项检查 3. 只报告有证据的问题,给出具体文件和行号 4. 不要泛泛而谈,每条意见都要能定位到代码 ## 输出格式 - 问题列表:文件路径 + 行号 + 问题描述 + 建议 - 如果没有问题,明确说明“未发现明显问题”这个文件就是 Skill 的核心。name和description放在 frontmatter 里,Claude Code 会根据 description 判断什么时候加载这个 Skill。正文部分就是给 AI 看的操作手册。
如果你用的是 config.toml 形式的配置(某些工具链或插件会用到),骨架类似这样:
[mcp_servers.context7] command = "npx" args = ["-y", "@upstash/context7-mcp"] [mcp_servers.playwright] command = "npx" args = ["-y", "@playwright/mcp"] [skills.code-review] path = ".claude/skills/code-review/SKILL.md" trigger = "code review, 审查代码, 检查变更"config.toml 和 settings.json 表达的是同一件事,只是格式不同。关键字段都是 command、args、env 以及 Skill 的路径和触发条件。你可以根据自己用的工具链选择对应格式。
提示:MCP Server 的
command和args要确保本机有对应的可执行环境。比如用 npx 启动的需要 Node.js,用 uvx 启动的需要 Python 环境。配之前先确认依赖装好了。
4. 验证请求:一次调用看结果
配置写完之后,得验证一下 MCP 和 Skill 是不是真的生效了。先验证 MCP。在 Claude Code 交互界面里输入:
帮我用 context7 查一下 Next.js 最新的 App Router 用法如果 MCP 配置正确,Claude Code 会调用 context7 这个 MCP Server,去查最新文档,然后基于查到的内容回答你。你会在终端里看到类似“调用 context7 工具”的提示。如果没配好,它会直接凭训练数据回答,或者报错说找不到工具。
再验证 Skill。在项目里随便改几行代码,然后输入:
帮我审查一下当前的代码变更如果 code-review Skill 生效了,Claude Code 会先执行git diff看变更,然后按 Skill 里定义的三个维度逐项检查,输出带文件路径和行号的问题列表。如果 Skill 没生效,它可能只是随便看几眼,给一些泛泛的建议。
这里有个细节值得注意:MCP 和 Skill 可以一起用。比如你让 AI 审查一个前端页面问题,它可能先用 systematic-debugging Skill 确定调试流程,再用 playwright MCP 打开页面、点击按钮、读取控制台报错,最后按 Skill 的流程定位根因。这种配合才是两者结合的最佳状态。
验证的时候如果发现 MCP 工具没被调用,可以先在终端里手动跑一下 MCP Server 的启动命令,看看能不能正常起来。比如npx -y @upstash/context7-mcp,如果能启动并等待输入,说明命令本身没问题,那问题就在 Claude Code 的配置读取上。
5. 本篇常见错排查
配置 MCP 和 Skill 时踩的坑,大多集中在几个地方。下面按现象、原因、解决方式列一下。
MCP Server 启动失败,报 command not found。原因通常是本机没有对应的运行时。比如配了npx但没装 Node.js,或者配了uvx但没装 Python。解决方式是先确认运行时装好,node -v和python --version能正常输出。如果用的是 npx,第一次启动会下载包,网络慢的话会卡住,可以提前手动跑一次把包缓存下来。
settings.json 改了但没生效。Claude Code 读取配置的优先级是项目级高于全局级。如果你在全局改了但项目里有自己的.claude/settings.json,项目级的会覆盖全局的。解决方式是确认当前生效的是哪个文件,必要时在项目级也同步一份。另外改完配置要重启 Claude Code 会话,它不会热加载。
Skill 不触发。最常见的原因是 description 写得不够明确,Claude Code 判断不出什么时候该用。解决方式是把 description 写具体,包含触发关键词。比如不要写“代码审查”,要写“当用户要求审查代码、检查变更、做 code review 时使用”。另外 Skill 文件路径要对,.claude/skills/目录名和 SKILL.md 文件名都不能错。
MCP 工具被调用了但返回结果不对。这通常是 MCP Server 本身的权限或参数问题。比如 playwright MCP 要操作浏览器,但本机没装浏览器驱动,或者 context7 要查的库名拼错了。解决方式是先单独跑 MCP Server,用它的调试模式看入参和返回。另外检查env字段里有没有漏配必要的 API Key 或 token。
装了太多 MCP 和 Skill 导致响应变慢。MCP Server 每个都要启动进程,Skill 太多会让 AI 在判断该用哪个时犹豫。解决方式是只装常用的。MCP 方面,文档查询、浏览器自动化、Git 平台这三类基本够用;Skill 方面,code-review、simplify、frontend-design、deep-research 这几个覆盖大多数场景。不常用的先禁用,需要时再开。
注意:排查时优先看 Claude Code 的日志输出。它调用 MCP 工具时会有明确提示,Skill 加载时也会有记录。顺着日志找,比盲目改配置快得多。
6. 该用哪个:MCP 与 Skill 的选择与组合
回到最开始的问题:什么时候用 MCP,什么时候用 Skill。判断标准很简单——如果你的需求是“让 AI 访问某个外部系统”,用 MCP;如果是“让 AI 按某种专业流程做事”,用 Skill。
典型 MCP 场景:查最新官方文档(context7)、操作浏览器验证页面(playwright)、连接 GitLab 查看 MR 变更、查询数据库或内部知识库。这些都需要 AI 能触达外部系统,MCP 提供的就是这个通道。
典型 Skill 场景:代码审查(code-review)、简化重构(simplify)、前端页面设计(frontend-design)、深度调研(deep-research)、系统化调试(systematic-debugging)。这些不一定需要外部工具,但需要 AI 按固定流程和标准执行,Skill 提供的就是这套方法。
两者组合起来效果最好。写新功能可以用 brainstorming Skill 加 TDD Skill 加项目文件工具;修 bug 用 systematic-debugging Skill 加浏览器或日志 MCP;查框架用法用 context7 MCP 加回答总结;做页面用 frontend-design Skill 加 playwright MCP;审查代码用 code-review Skill 加 Git 工具。
如果你想让 AI 编程助手真正好用,不要只追求装很多插件,而是想清楚两个问题:我希望 AI 能访问哪些外部工具,这对应 MCP;我希望 AI 按什么流程完成任务,这对应 Skill。把这两个问题想清楚,配置自然就清晰了。
需要长期跑编码任务或 Agent 场景的话,可以看看 Coding Plan 相关的接入方式:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite 。如果只是想先验证模型对话效果,可以直接在模型对话页面试:https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=models&utm_campaign=rewrite 。接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite ,配置过程中遇到接入问题可以对照查。