
1. 先别急着选把场景摆出来如果你正在搭 AI Agent大概率会遇到这个岔路口Claude 生态里同时有 Skills 和 MCP 两套扩展机制官方文档各讲各的社区文章又喜欢把它们对立起来。结果就是——明明只是想让 Agent 读一下本地文件、调一下内部接口却在选型上卡了半天。我先把结论放前面Skills 和 MCP 不是二选一它们解决的是两类不同的问题。Skills 是「操作手册」本质是一堆 Markdown 指令文件按需加载教 Claude 在特定任务上怎么做MCP 是「万能插头」是一套通信协议让 Claude 能实时连上外部工具、数据库、API。一个管「该怎么做」一个管「能不能连上」。那为什么还要纠结因为很多任务两者都能沾边。比如「整理 GitHub Issue」这件事MCP 可以拉取 Issue 列表Skills 可以定义分类规则和回复模板。你只上 MCPAgent 有数据但没章法只上 SkillsAgent 有章法但拿不到实时数据。这篇就按「同一任务、两种模式」的思路用 TaoToken 统一 Key 接入 Claude把 Skills 和 MCP 的配置骨架、调用对比、验证步骤走一遍。适合正在搭 Agent、手里已经有 Claude 调用能力、但对扩展机制还没定型的开发者。读完你能直接判断手上这个需求该写 Skill 还是接 MCP。2. TaoToken 前置统一 Key 接入 Claude 的配置骨架在对比 Skills 和 MCP 之前得先有一个能稳定调 Claude 的入口。TaoToken 在这里的作用是统一 Key 管理——你不用为每个模型、每个工具单独维护一套凭证一个 Key 走通对话、编码、Agent 调用。先拿 Key。打开官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 注册后在控制台创建 API Key。控制台地址是 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite Key 列表在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 。API 基础地址统一用 https://taotoken.net/api 注意这个地址不带 UTM 参数配置时别画蛇添足。拿到 Key 之后Claude 侧的接入分两条路一条是走 Anthropic 兼容接口适合自己写脚本另一条是走 Claude Code 的 settings.json适合把 Agent 跑在本地工程里。这篇重点讲 settings.json因为 Skills 和 MCP 的差异在 Claude Code 里体现得最直观。先看 settings.json 的骨架。这个文件一般放在项目根目录的.claude/settings.json或者用户级的~/.claude/settings.json。核心是两段一段配模型接入一段配扩展能力。{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: 你的_TaoToken_API_Key, ANTHROPIC_MODEL: claude-sonnet-4-20250514 }, permissions: { allow: [ Read, Write, Bash(git:*) ] } }这里ANTHROPIC_BASE_URL指向 TaoToken 的 API 地址ANTHROPIC_AUTH_TOKEN填你刚创建的 Key。模型名按你实际要用的填Claude 系列在 TaoToken 侧是透传的。注意settings.json 里的 Key 不要提交到 Git。建议用环境变量注入或者把文件加进.gitignore。团队协作时每人本地一份别共享同一个 Key。配完这一段先别急着加 Skills 和 MCP跑一次最简对话验证接入是否通。验证命令在第四节这里先把扩展配置的位置留出来。3. 可复制配置Skills 与 MCP 两种模式怎么写3.1 Skills 模式写 Markdown 就是写能力Skills 的配置极简。在项目里建一个.claude/skills/目录每个 Skill 一个子目录里面放一个SKILL.md。Claude Code 启动时会扫描这个目录按需加载。目录结构长这样.claude/ skills/ issue-triage/ SKILL.md release-notes/ SKILL.mdissue-triage/SKILL.md的内容示例--- name: issue-triage description: 对 GitHub Issue 做分类、优先级判断和回复草稿 --- # Issue 分类规则 当用户要求整理 Issue 时按以下步骤执行 1. 读取 Issue 标题和正文 2. 按类型归类bug / feature / question / docs 3. 按优先级标注P0 阻塞、P1 重要、P2 一般 4. 生成一段回复草稿语气友好包含预期处理时间 ## 分类关键词 - bug报错、崩溃、不生效、异常 - feature希望、建议、能否支持 - question怎么用、如何配置 - docs文档、说明、示例缺失就这么简单。没有服务端、没有端口、没有握手协议。Claude 在遇到相关任务时会自动加载这个 Skill把里面的规则当成工作手册。Skills 的关键特性是「按需加载」。你装 100 个 Skill启动时只加载每个 Skill 的 name 和 description真正用到哪个才读全文。所以 Token 消耗很低不会一上来就把上下文塞满。3.2 MCP 模式起一个 Server 才能连外部MCP 的配置要重一些。你需要在 settings.json 里声明 MCP ServerClaude Code 启动时会去连接这些 Server。{ mcpServers: { github: { command: npx, args: [-y, modelcontextprotocol/server-github], env: { GITHUB_PERSONAL_ACCESS_TOKEN: 你的_GitHub_Token } }, filesystem: { command: npx, args: [ -y, modelcontextprotocol/server-filesystem, /Users/yourname/projects ] } } }这段配置的意思是启动两个 MCP Server一个连 GitHub一个管本地文件系统。Claude Code 会通过标准输入输出和它们通信。MCP 的能力是实时的、双向的。GitHub Server 能拉 Issue、加标签、发评论filesystem Server 能读能写。这些操作不是「教 Claude 怎么做」而是「给 Claude 一个能调的工具」。代价也很明显。每个 MCP Server 启动时它的工具定义会预加载进上下文。一个 GitHub MCP 的工具定义轻松上千 Token装三四个 MCP上下文就吃掉一大块。这是 MCP 和 Skills 在成本上最直观的差异。3.3 同一任务两种写法对照拿「整理 GitHub Issue」这个任务两种模式的配置差异可以列成表维度Skills 模式MCP 模式配置文件.claude/skills/issue-triage/SKILL.mdsettings.json里的mcpServers依赖无需要 MCP Server 进程数据来源靠 Claude 已有上下文或脚本Server 实时拉取Token 占用低按需加载高工具定义预加载跨模型Markdown 通用需特定支持适合任务规则、模板、流程实时 API、认证、双向通信看到这里你应该有感觉了Skills 管「方法论」MCP 管「连接能力」。真正复杂的 Agent往往是两者一起上。4. 验证请求跑通一次调用看结果配置写完得验证。分两步先验证 TaoToken 接入通再验证 Skills 和 MCP 各自生效。4.1 验证 TaoToken 接入用 curl 直接打 TaoToken 的 API确认 Key 和地址没问题curl https://taotoken.net/api/v1/messages \ -H x-api-key: 你的_TaoToken_API_Key \ -H anthropic-version: 2023-06-01 \ -H content-type: application/json \ -d { model: claude-sonnet-4-20250514, max_tokens: 128, messages: [ {role: user, content: 只回复两个字通了} ] }返回里能看到content字段有正常文本说明 Key 和地址都对。如果返回 401检查 Key 有没有复制全返回 404检查地址是不是写成了带路径的变体。4.2 验证 Skills 生效在项目里启动 Claude Code输入一个触发 Skill 的请求帮我整理一下最近的 Issue按类型和优先级分类如果 Skill 配置正确Claude 会读取issue-triage/SKILL.md按里面的规则输出分类结果。你可以在 Claude Code 里用/skills命令查看当前加载了哪些 Skill。实测下来Skills 的调试很轻——改 Markdown 文件重启会话就生效不用重启任何服务。4.3 验证 MCP 生效MCP 的验证稍微麻烦一点。启动 Claude Code 后用/mcp命令查看 Server 连接状态。正常的话能看到github和filesystem两个 Server 显示 connected。然后发一个需要实时数据的请求列出当前仓库最近 5 个 open 状态的 Issue如果 MCP 生效Claude 会调用 GitHub Server 的工具去拉数据返回真实的 Issue 列表。如果 Server 没连上Claude 会告诉你「没有可用的 GitHub 工具」。注意MCP Server 启动失败最常见的原因是命令路径不对或环境变量缺失。npx拉包第一次会慢耐心等几秒如果一直连不上先在终端手动跑一遍npx -y modelcontextprotocol/server-github看报什么错。4.4 两种模式的结果对比同一个「整理 Issue」任务Skills 模式输出的是分类规则和模板数据得靠你贴进去或者 Claude 从上下文里找MCP 模式能直接拉到实时 Issue 列表但分类逻辑得靠 Skill 或者你在 prompt 里说清楚。这就是为什么说它们是搭档MCP 负责把数据拿进来Skills 负责把数据处理好。单用任何一个都有一半的活要你自己补。5. 本篇常见错排查配置过程中容易踩的坑集中列一下。Key 相关最常见的是把 Key 写进 settings.json 后提交到了 Git。补救办法是立刻去控制台吊销旧 Key重新生成一个然后用环境变量注入。TaoToken 的 Key 管理在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 吊销和新建都在这里。地址相关ANTHROPIC_BASE_URL填https://taotoken.net/api就行不要在后面加/v1或/messages路径由 SDK 自己拼。填错会返回 404但报错信息不一定直白容易误判成 Key 问题。Skills 不生效检查三件事——目录是不是.claude/skills/、每个 Skill 是不是独立子目录、SKILL.md的 frontmatter 里有没有name和description。缺 description 的话Claude 不知道什么时候该加载它。MCP 连不上先看/mcp的状态输出。如果是failed在终端手动跑一遍 Server 启动命令看是包拉不下来还是环境变量没传进去。GitHub MCP 需要GITHUB_PERSONAL_ACCESS_TOKEN这个 Token 的权限范围要包含 repo 读权限。Token 爆上下文如果装了多个 MCP 后发现对话变慢、回答变短大概率是工具定义占满了上下文。解决办法是只保留当前任务需要的 MCP Server其余的在 settings.json 里注释掉。Skills 这边基本不会有这个问题因为它是按需加载。跨模型迁移Skills 是 Markdown换到别的模型也能用MCP 依赖特定协议支持换模型前先确认目标模型支不支持 MCP。如果你的 Agent 要跑在多模型上Skills 的可移植性优势会很明显。6. 选型建议与接入入口回到最初的问题Skills 和 MCP 怎么选。我的判断标准就一条——需要实时连外部系统上 MCP需要固化工作流和规则写 Skills。具体一点要调内部 API、要读数据库、要做双向通信、要处理复杂认证这些是 MCP 的活。要定义分类规则、要固化回复模板、要做流程编排、要跨模型复用这些是 Skills 的活。两者不冲突复杂 Agent 里 MCP 拉数据、Skills 定规则配合起来才完整。如果你还在验证阶段建议从 Skills 开始。写 Markdown 的成本极低改起来也快先把工作流跑通再按需引入 MCP。大多数场景下你缺的是「手册」不是「插头」。接入入口按你的下一步动作分流想先验证模型对话通不通去模型对话页 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentchatutm_campaignrewrite 直接用统一 Key 试 Claude 的响应。要长期跑编码和 Agent 任务看 Coding Plan https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 适合把 Claude Code 接进日常工程流。配置过程中卡在 Key 或接入上去接入文档 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 对照参数或者直接在 API Keys 页面 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 检查 Key 状态。最后补一个实操细节Skills 和 MCP 的配置可以共存于同一个 settings.json互不干扰。我习惯先把 Skills 目录建好跑通几个规则类任务再逐个加 MCP Server每加一个就用/mcp确认状态。这样出问题时能快速定位是新加的 Server 还是原有配置的锅。