深入理解 MCP 协议、Agent 架构、Skill 与 CLI 工具的区别与联系,
让你对 AI 工具链的运作原理了然于胸。
在 AI 工具链中,有三种不同的能力接入方式:
| 类型 | 是什么 | 例子 |
|---|---|---|
| MCP Server | 独立进程,通过标准协议暴露 tools / resources,IDE 帮 Agent 去调 | MCP_DOCKER、fl-studio-mcp |
| Agent Skill | 一份 SKILL.md 工作流说明,Agent 读文档后在终端/编辑器里执行 | website-to-hyperframes |
| CLI 工具 | 普通命令行,Agent 用 Shell 跑 | npx hyperframes capture、uvicorn |
Agent 不会直接执行 Docker 或访问数据库,而是:
IDE 启动 MCP Server → Server 注册 tools → Agent 按名调用 tool → 结果返回对话。
Cursor 读取全局配置文件:
C:\Users\<USERNAME>\.cursor\mcp.json示例内容:
{
"mcpServers": {
"MCP_DOCKER": {
"command": "docker",
"args": ["mcp", "gateway", "run"],
"env": {
"LOCALAPPDATA": "C:\\Users\\ADMIN\\AppData\\Local",
"ProgramData": "C:\\ProgramData",
"ProgramFiles": "C:\\Program Files"
}
}
}
}含义:Cursor 打开/需要 MCP 时,执行 docker mcp gateway run,该 Docker MCP Gateway 再挂载一批 Docker 相关 MCP 工具。
有的项目会在仓库里放:
.cursor/mcp.json — 仅当前项目额外 MCPIDE 会在工作区生成/同步描述:
.cursor/projects/<项目>/mcps/<server>/tools/<tool-name>.jsonAgent 规则:调用前必须先读 schema,知道参数名、类型、是否必填。
部分 MCP 还提供 resources(文件、文档片段等),通过 FetchMcpResource 读取,同样要先看 resource 描述符。
{
"mcpServers": {
"example": {
"command": "npx",
"args": ["-y", "@some/mcp-server"],
"env": {
"API_KEY": "xxx"
}
}
}
}{
"mcpServers": {
"remote": {
"url": "http://localhost:8080/sse"
}
}
}| 维度 | MCP | Skill |
|---|---|---|
| 触发 | Agent 调具名 tool | 用户 @skill、规则匹配、或 Agent 读 SKILL.md |
| 执行体 | MCP Server 进程 | Agent 自己:读文件、跑终端、写代码 |
| 配置 | mcp.json | ~/.cursor/skills/、.cursor/skills/、~/.agents/skills/ |
| 协议 | MCP JSON-RPC | 无协议,纯 Markdown 指令 |
路径:~/.agents/skills/website-to-hyperframes/SKILL.md
当你发 /website-to-hyperframes 时,IDE 把 skill 内容注入对话;Agent 再执行:
npx hyperframes capture <URL> -o capture
npx hyperframes lint / validate / snapshot
npm run dev # Studio 预览
npm run render # MP4| IDE / 产品 | MCP 支持 |
|---|---|
| Cursor | 原生,~/.cursor/mcp.json,Agent 集成最好 |
| VS Code + Copilot | 逐步支持 MCP(扩展/Insiders),配置类似 |
| Claude Desktop | claude_desktop_config.json 里 mcpServers |
| Windsurf / Cline 等 | 各有 MCP 配置路径,概念相同 |
| 现象 | 可能原因 | 处理 |
|---|---|---|
| The MCP server errored | Docker 未启动、gateway 失败 | 开 Docker Desktop,重连 MCP |
| Agent 说没有某 MCP tool | Server 未连接 / 无 tools 目录 | Settings → MCP 看状态 |
| /skill-name 无反应 | Ask 模式 / 未挂 skill | 切 Agent 模式,@ skill |
| 调 MCP 参数报错 | 未读 tool schema | 先读 mcps/.../tools/*.json |
| Skill 和 MCP 混淆 | 概念混用 | Skill=文档工作流;MCP=独立服务 |
IDE 通过 mcp.json 启动 MCP Server 子进程,把 tools 的 JSON Schema 暴露给 Agent;
Agent 用 CallMcpTool 间接调用。
Skill 和 CLI 不走 MCP,而是 Agent 读说明后在终端执行命令。