ARTICLE DETAIL

资讯详情

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

去 Google 面试,面试官让 Agent 自己找工具,问我 MCP 和 Skills 有啥区别,我说都一样,他直接沉默了......

去 Google 面试,面试官让 Agent 自己找工具,问我 MCP 和 Skills 有啥区别,我说都一样,他直接沉默了...... 1. 面试官沉默的那三秒我意识到自己答错了层次去 Google 面试被问到 MCP 和 Skills 有什么区别我脱口而出“都差不多吧都是给 Agent 加能力的”面试官沉默了三秒然后说了一句让我记到现在的话“如果你在项目里把它们混着用Agent 出问题的时候你根本不知道该改工具还是改方法。”这句话点破了一个很多人包括当时的我都会踩的坑把 MCP 和 Skills 都塞进“Agent 能力增强”这个大筐里觉得反正都是让 Agent 变强区别不大。但真到了工程落地这两者的定位完全不同混用会直接导致排障时无从下手。MCP 全称 Model Context Protocol是一套标准化的工具调用协议。它解决的是 Agent能不能做某件事——能不能查数据库、能不能调外部 API、能不能读写文件系统。它关心的是外部能力怎么暴露、怎么连接、怎么调用、结果怎么回传。你可以把它理解成给 Agent 装了一排标准插口插上什么就能用什么。Skills 则是一套任务说明书通常是 Markdown 文档告诉 Agent 遇到某类任务时应该怎么拆步骤、按什么顺序做、有哪些坑不能踩、哪些规范必须遵守。它不直接提供外部能力而是在上下文里指导 Agent 怎么行动。它解决的是 Agent会不会做、做得好不好。打个比方MCP 是给厨师配齐锅碗瓢盆和灶台Skills 是给厨师一本菜谱。光有厨具没有菜谱厨师可能把红烧肉做成水煮肉光有菜谱没有厨具再好的流程也只能纸上谈兵。面试里能把“能做”和“会做”这两层讲清楚基本就不会跑偏。这篇就按面试复盘的思路把 MCP 和 Skills 的边界拆开再给出一套可复制的 MCP 客户端配置骨架和 Skills 定义示例最后在 TaoToken 统一 Key/API 通道下跑一遍 Agent 工具发现与调用的验证流程。适合正在做 Agent 工具调用、被 MCP 和 Skills 概念绕晕、或者准备面试的开发者。2. 先把 TaoToken 通道准备好再谈工具发现在验证 Agent 工具发现和调用之前需要一个统一的模型调用入口。TaoToken 提供 OpenAI 兼容的 API 通道把模型对话、Coding Plan、API Keys 管理放在同一个控制台里省得在多个平台之间来回切 Key。官网入口在这里https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentAPI 基础地址是https://taotoken.net/api你需要先拿到一个 API Key然后才能让 Agent 通过这个通道去调用模型、触发工具发现逻辑。具体操作路径打开控制台 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite 在 API Keys 页面创建一个新 Key。创建时建议按用途命名比如agent-mcp-test方便后面区分是哪个项目在用。如果你打算长期跑编码类 Agent 或者做多轮工具调用可以看一下 Coding Plan https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 它更适合高频调用场景。只是想先验证模型对话和工具发现用普通 API Key 就够了。拿到 Key 之后把它写进环境变量别硬编码在代码里export TAOTOKEN_API_KEYsk-你的key export TAOTOKEN_BASE_URLhttps://taotoken.net/api这一步做完模型通道就通了。接下来才是 MCP 客户端配置和 Skills 定义的部分。3. 可复制的 MCP 客户端配置骨架MCP 的核心是客户端-服务端架构客户端负责发起调用服务端负责暴露工具。下面给一个最小可用的 MCP 客户端配置骨架用 JSON 描述你可以直接改成自己项目里的路径和参数。{ mcpServers: { filesystem: { command: npx, args: [ -y, modelcontextprotocol/server-filesystem, /Users/yourname/projects ] }, fetch: { command: npx, args: [ -y, modelcontextprotocol/server-fetch ] } } }这段配置做了两件事注册一个文件系统 MCP Server让 Agent 能读写指定目录注册一个 fetch MCP Server让 Agent 能发起网络请求。command和args是启动服务端的命令MCP 客户端会把它当成子进程拉起来通过 stdio 通信。如果你用的是远程 MCP Server配置会变成 Streamable HTTP 形式{ mcpServers: { remote-tools: { url: https://your-mcp-server.example.com/mcp, transport: streamable-http } } }本地场景用 stdio 更轻远程场景用 Streamable HTTP 承载 JSON-RPC 消息。JSON-RPC 消息里会有method、params、id这些字段描述“调用哪个工具、传什么参数、等哪个结果”。HTTP 只是传输通道真正决定调用语义的是 JSON-RPC 那层。配置写好后Agent 启动时会去读这份配置把每个 MCP Server 暴露的工具注册进自己的工具列表。这时候 Agent 就具备了“能做”这些事的能力但它还不知道什么时候该做、按什么顺序做——那部分交给 Skills。4. Skills 定义示例让 Agent 知道怎么做事Skills 通常是一个 Markdown 文件放在项目仓库里按需加载。下面给一个“创建 MCP Server”的 Skill 示例你可以直接拿去改。# Skill: 创建 MCP Server ## 适用场景 用户要求创建一个新的 MCP Server或为现有项目添加 MCP 工具。 ## 执行流程 1. 确认 Server 名称和暴露的工具列表 2. 创建项目目录结构 - src/index.ts入口 - src/tools/工具实现 - package.json - tsconfig.json 3. 在 src/index.ts 中初始化 Server注册 Transport 4. 在 src/tools/ 下逐个实现工具每个工具包含 name、description、inputSchema 5. 配置 stdio 或 Streamable HTTP Transport 6. 跑一遍最小可用测试启动 Server调用一个工具确认返回结果 ## 注意事项 - 工具 description 要写清楚Agent 靠它判断什么时候调用 - inputSchema 用 JSON Schema 描述参数必填项要标 required - 不要在工具实现里硬编码密钥从环境变量读 - 测试时先用 stdio 本地跑通再考虑远程部署 ## 依赖检查 执行前确认以下 MCP 工具可用 - filesystem创建文件 - terminal安装依赖、跑测试 - git查看 diff 如果缺少某个工具先提示用户安装不要假装完成。这个 Skill 不提供任何外部能力它只告诉 Agent 做这件事的标准流程。真正执行时Agent 会通过 filesystem MCP 创建文件通过 terminal 工具安装依赖通过 git 工具查看变更。Skill 决定怎么做MCP 提供做事的手。把 Skill 文件放进项目仓库走 Git 版本控制。团队多人协作时按 ownership 分工前端维护前端相关 Skill后端维护接口和数据库相关 Skill避免大家都改同一个文件。个人偏好放全局 Skill团队共识放项目级 Skill。5. 在 TaoToken 通道下验证工具发现与调用配置和 Skill 都准备好之后跑一遍验证流程确认 Agent 能发现工具、能调用工具、能按 Skill 流程执行。第一步用 curl 确认 TaoToken 通道正常curl https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -H Content-Type: application/json \ -d { model: gpt-4o-mini, messages: [ {role: user, content: 列出你当前可用的工具名称} ] }如果返回里包含工具列表或模型对工具的描述说明通道通了。如果返回 401检查 Key 是否写对如果返回 404检查 base URL 是否漏了/v1。第二步让 Agent 执行一个需要工具发现的任务。比如输入“帮我在 projects 目录下创建一个 test-mcp 文件夹然后告诉我用了哪些工具。”一个配置正确的 Agent 应该先识别出这是文件操作任务加载对应的 Skill如果有然后通过 filesystem MCP 调用创建目录的工具最后返回结果并说明调用了哪个工具。第三步检查工具调用日志。MCP 客户端通常会打印 JSON-RPC 消息你能看到类似这样的内容{ jsonrpc: 2.0, id: 1, method: tools/call, params: { name: create_directory, arguments: { path: /Users/yourname/projects/test-mcp } } }看到这条消息说明 Agent 成功发现了工具并发起了调用。如果 Agent 说“我完成了”但日志里没有tools/call那它可能在假装完成这时候要检查 Skill 里有没有写依赖检查逻辑。第四步验证 Skills 是否生效。故意让 Agent 做一个需要多步骤的任务比如“创建一个 MCP Server 并跑通测试”。观察它是否按 Skill 里定义的流程走先建目录结构再写代码再配 Transport最后跑测试。如果它跳步或者顺序乱了说明 Skill 没被正确加载检查 Skill 文件的路径和触发条件。6. 本篇常见错排查错误一Agent 说调用了工具但日志里没有 JSON-RPC 消息。这通常是 MCP Server 没启动成功。检查command和args是否能手动跑通比如在终端直接执行npx -y modelcontextprotocol/server-filesystem /path看有没有报错。如果手动能跑通但 Agent 里不行检查 MCP 客户端配置的路径是否正确。错误二工具列表为空Agent 说没有可用工具。先确认 MCP 客户端有没有读取配置文件。有些客户端需要显式指定配置文件路径有些会从默认位置读。再确认 Server 启动后有没有正确注册工具可以在 Server 代码里加日志看tools/list请求返回了什么。错误三Skill 没生效Agent 还是按自己的方式做。检查 Skill 文件的触发条件。有些 Agent 系统靠关键词匹配加载 Skill有些靠语义相似度。如果 Skill 标题和用户输入差太远可能匹配不上。另外确认 Skill 文件放在正确的目录下项目级 Skill 和全局 Skill 的加载优先级可能不同。错误四TaoToken 通道返回 429。这是频率限制。如果你在跑高频工具调用测试建议切到 Coding Plan https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 它的配额更适合连续调用场景。临时方案是在请求之间加 sleep或者减少并发。错误五MCP 工具调用超时。本地 stdio 场景下检查 Server 进程有没有卡住。远程 Streamable HTTP 场景下检查网络连通性和 Server 端日志。如果工具本身执行时间长考虑在 Skill 里写明超时预期让 Agent 知道这个步骤需要等待。错误六多个 Skill 冲突Agent 行为不一致。Skills 本质是 Markdown 文件冲突时跟代码冲突一样走 Git merge。更重要的是提前定好 ownership避免多人改同一个文件。个人习惯和团队规范分开存放全局 Skill 放个人偏好项目级 Skill 放团队共识。7. 把 MCP 和 Skills 放回 Agent 工程链路里看面试官最后追问了一个问题“Google 推 ARD 之后MCP 和 Skills 的关系会变吗”我的回答是不会变只是多了一层“发现”。ARD 让 Agent 更容易知道外面有哪些能力可以用MCP 负责把这些外部能力标准化接进来Skills 负责告诉 Agent 在具体任务里怎么用这些能力。三者放在一起才是一条完整的 Agent 工程链路目录负责发现插口负责连接手册负责执行。回到实际项目判断什么时候用 MCP、什么时候用 Skills可以套一个简单规则想让 Agent 做一件原来做不了的事比如读数据库、发邮件、操作浏览器、查内部系统上 MCP想让 Agent 把一件事做得更稳比如按团队规范写代码、按固定流程做 Code Review、按公司模板写日报上 Skills。多数真实场景里两者会一起出现用 Skills 定义流程用 MCP 调用工具。如果你正在搭自己的 Agent 工具链建议先把 TaoToken 的 API Key 配好跑通模型通道再按这篇的 MCP 配置骨架和 Skill 示例搭一个最小可用版本。验证的时候重点看两件事工具调用日志里有没有tools/call消息Agent 执行多步骤任务时有没有按 Skill 流程走。这两点确认了MCP 和 Skills 的分工就算落地了。模型对话入口https://taotoken.net/model-chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel-chatutm_campaignrewrite接入文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewriteAPI Keys 管理https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewriteClaude Code 接入https://taotoken.net/claude-code-anthropic?utm_sourcetaotoken_aicg_blog_endutm_contentclaude-code-anthropicutm_campaignrewrite
返回列表