ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

什么是 .claude-plugin?从 manifest.json 到 MCP 的插件机制拆解与 TaoToken 配置骨架

2026/9/29 6:44:16 拓冰建站 浏览量
什么是 .claude-plugin?从 manifest.json 到 MCP 的插件机制拆解与 TaoToken 配置骨架 1. 从一次插件不生效的排查说起你在 Claude Desktop 或某个 AI 编辑器里装了一个插件重启之后问它「帮我查一下项目里有哪些 TODO」结果它一脸无辜地回你「我无法访问本地文件」。打开项目根目录确实躺着一个.claude-plugin文件夹里面还有manifest.json看起来该有的都有但插件就是没被加载。这个场景我遇到过不止一次问题往往不在插件本身而在于你没搞清楚.claude-plugin到底是什么、manifest.json里哪些字段是必须的、以及 Claude 是通过什么路径把这些配置读进去的。.claude-plugin不是一个可执行程序也不是某个官方 SDK 的产物它更像是一份「接口说明书」告诉 Claude 这个项目里有哪些工具可以被调用、每个工具接受什么参数、以及调用时需要走哪个 MCP 服务端点。它和 MCPModel Context Protocol是配套关系——MCP 负责运行时的通信协议.claude-plugin负责声明式的配置描述。你可以把它理解成docker-compose.yml和 Docker 引擎的关系前者描述服务后者负责跑起来。这篇文章面向正在用 Claude、Cursor 或其他 AI 编辑器做开发的读者重点拆解.claude-plugin的目录结构、manifest.json的字段含义、插件被加载的完整链路并给出一套可以直接复制的配置骨架。同时我会演示如何通过 TaoToken 统一 Key 和 API 通道接入让你在验证插件是否生效时不用来回切换多个密钥。如果你之前只是「把文件夹丢进去就完事」这篇可以帮你把机制补全。2. TaoToken 前置统一 Key 与 API 通道在讲配置之前先把接入层说清楚。Claude 插件在调用 MCP 工具时很多场景需要访问外部模型或 API。如果你每个工具都单独配一套 Key管理成本会很高排查问题时也容易搞混是哪个 Key 失效了。TaoToken 的作用就是把这些调用收敛到一个统一的入口。你需要先拿到一个 API Key。登录 TaoToken 控制台在 API Keys 页面创建一个新 Key复制出来备用。这个 Key 会同时用于模型对话和 MCP 工具链中的模型调用。控制台地址是 https://taotoken.net/console 创建 Key 的页面在 https://taotoken.net/api-keys 。拿到 Key 之后API 的基础地址是https://taotoken.net/api注意这个地址不带任何查询参数直接作为base_url使用。如果你用的是 Anthropic 兼容的调用方式路径拼接规则和官方一致只是在 host 部分替换掉。下面是一个最小化的环境变量配置你可以放在.env或 shell 的 profile 里export TAOTOKEN_API_KEYsk-你的key export TAOTOKEN_BASE_URLhttps://taotoken.net/api注意不要把 Key 硬编码进manifest.json或提交到 Git 仓库。插件配置里只引用环境变量名实际值通过运行环境注入。如果你需要长期跑编码类任务或 Agent 工作流可以了解一下 Coding Plan它在调用额度和并发上有更适合持续编码场景的配置https://taotoken.net/coding-plan 。对于只是验证插件是否生效的场景按量调用就够了。3. 可复制配置manifest.json 与 settings.json 骨架3.1 目录结构长什么样一个典型的.claude-plugin目录结构如下.claude-plugin/ ├── manifest.json ├── tools/ │ ├── get_weather.json │ └── search_notes.json └── permissions.jsonmanifest.json是入口tools/目录下每个 JSON 描述一个可被 Claude 调用的工具permissions.json可选用来限制文件系统访问范围。Claude 在启动时会扫描项目根目录下的.claude-plugin/manifest.json读取其中的tools字段然后按声明的端点去连接对应的 MCP 服务。3.2 manifest.json 字段逐个说下面是一份可以直接复制修改的manifest.json{ name: local-dev-tools, version: 0.1.0, description: 本地开发辅助工具集包含天气查询与笔记检索, protocol: mcp, transport: { type: http, endpoint: https://taotoken.net/api/mcp, headers: { Authorization: Bearer ${TAOTOKEN_API_KEY} } }, tools: [ { name: get_weather, description: 查询指定城市的当前天气, inputSchema: { type: object, properties: { city: { type: string, description: 城市名称例如 杭州 } }, required: [city] } }, { name: search_notes, description: 在本地笔记目录中检索关键词, inputSchema: { type: object, properties: { keyword: { type: string, description: 要检索的关键词 }, limit: { type: integer, description: 返回条数上限, default: 5 } }, required: [keyword] } } ], permissions: { filesystem: { read: [./notes], write: [] } } }几个关键字段的含义protocol固定为mcp表示这个插件走 Model Context Protocol。transport.type可以是http或stdio前者适合远程服务后者适合本地进程。transport.endpoint是 MCP 服务的实际地址这里指向 TaoToken 的 MCP 入口。headers里的${TAOTOKEN_API_KEY}会在运行时被环境变量替换这样你就不用在配置文件里写明文。tools数组里每一项的inputSchema遵循 JSON Schema 规范Claude 会根据这个 schema 来决定调用时传什么参数。permissions.filesystem.read限定插件只能读./notes目录写权限留空表示不允许写入。这个权限声明不是摆设Claude 在加载时会校验越界的调用会被拒绝。3.3 settings.json 里要配什么除了.claude-plugin目录你还需要在编辑器的settings.json里告诉它去哪里找插件。以常见的 AI 编辑器配置为例{ claude.plugins.enabled: true, claude.plugins.paths: [./.claude-plugin], claude.mcp.servers: { taotoken-mcp: { url: https://taotoken.net/api/mcp, headers: { Authorization: Bearer ${TAOTOKEN_API_KEY} } } }, claude.api.baseUrl: https://taotoken.net/api, claude.api.key: ${TAOTOKEN_API_KEY} }claude.plugins.paths指向插件目录claude.mcp.servers注册 MCP 服务端点。claude.api.baseUrl和claude.api.key是模型调用的通道配置指向 TaoToken。这样插件工具调用和模型对话走的是同一个 Key排查问题时只需要看一个地方。4. 验证请求插件到底有没有生效配置写完之后怎么确认插件真的被加载了分三步走。第一步检查 MCP 服务连通性。用 curl 直接打一下端点curl -X POST https://taotoken.net/api/mcp \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -H Content-Type: application/json \ -d {jsonrpc:2.0,method:tools/list,id:1}如果返回里包含get_weather和search_notes两个工具名说明 MCP 服务端已经识别到了你的工具声明。如果返回 401检查 Key 是否正确注入如果返回 404检查 endpoint 路径是否写错。第二步在 Claude 对话里触发工具调用。直接问杭州今天天气怎么样正常情况下Claude 会先输出一段「我来调用 get_weather 工具」然后返回结构化结果。如果它只是用训练数据里的天气信息糊弄你说明工具没有被加载回到manifest.json检查tools字段的 JSON 格式是否合法。第三步看日志。大多数 AI 编辑器在输出面板里会有 MCP 连接日志搜索mcp或plugin关键字能看到加载了哪些工具、连接是否成功。这一步能帮你区分是「配置没读到」还是「读到了但连接失败」。如果你想单独验证模型通道是否正常可以用模型对话页面发一条测试消息https://taotoken.net/model-chat 。这个页面走的是同一套 Key能快速排除是 Key 的问题还是插件配置的问题。5. 本篇常见错排查5.1 manifest.json 解析失败最常见的报错是Failed to parse manifest.json。九成情况是 JSON 里多了尾逗号或者用了单引号。JSON 标准不支持尾逗号和单引号用编辑器自带的 JSON 校验功能过一遍。另一个坑是inputSchema里required写成了字符串而不是数组正确写法是required: [city]。5.2 工具被列出但调用超时tools/list能返回工具名但实际调用时超时通常是transport.endpoint指向了一个不可达的地址或者headers里的认证信息没生效。检查环境变量是否在编辑器启动前就已经 export有些编辑器不会继承 shell 的 profile需要在编辑器设置里显式配置环境变量。5.3 权限被拒绝如果日志里出现permission denied或path outside allowed scope检查permissions.filesystem.read里的路径是否相对于项目根目录。用./notes而不是绝对路径跨平台兼容性更好。写操作默认关闭如果工具需要写文件必须在write数组里显式声明目录。5.4 Key 混用导致 401插件配置里用了 Key A编辑器模型通道用了 Key B其中一个失效时很难定位。统一用同一个 TaoToken Key通过环境变量注入能省掉大量排查时间。如果你在多个项目里共用配置建议每个项目用独立的 Key方便在控制台按项目查看调用量。5.5 插件目录位置放错.claude-plugin必须放在项目根目录和.git同级。放在子目录里编辑器扫描不到。如果你在 monorepo 里工作每个子项目需要各自的.claude-plugin或者在编辑器设置里把claude.plugins.paths配成多个路径。6. 接入文档与后续动作配置骨架跑通之后下一步是把工具定义替换成你实际需要的功能。manifest.json里的tools数组可以按需增删每个工具的inputSchema决定了 Claude 调用时能传什么参数。建议先从一两个工具开始验证链路确认端到端通了再批量添加。完整的接入参数和字段说明可以参考接入文档https://taotoken.net/doc 。如果你在配置过程中遇到报错优先检查三件事JSON 格式是否合法、环境变量是否注入、endpoint 是否可达。这三步能覆盖八成以上的加载失败问题。插件机制本身不复杂复杂的是配置项之间的依赖关系。把.claude-plugin当成一份声明式的接口清单把 MCP 当成运行时通道把 TaoToken 当成统一的认证和路由层三者各司其职排查问题时就能快速定位到是哪一层出了状况。