
告别海外账号与网络限制稳定直连全球优质大模型限时半价接入中。 点击领取海量免费额度1. 先搞清楚我们要跑通什么MCP 文件查询 Skill 的本质是让模型通过一个标准协议去调用你本地的文件系统能力。你可以把它理解成给模型装了一双“手”模型负责理解你要什么Skill 负责真正去列目录、读文件然后把结果交回给模型继续推理。Cline 客户端在这里扮演的是“调度台”角色它负责把模型的 tool call 请求转发给 MCP Server再把执行结果塞回对话上下文。这次的目标很具体10 分钟内让 Skill 跑通两个 tool call——列目录和读文件并且确认模型能根据返回内容继续回答。适合已经用过 Cline、对 MCP 有基本概念但还没自己配过文件查询 Skill 的开发者。我实测下来最容易卡住的地方不是代码本身而是客户端配置里 API 地址和 Key 的填写位置。TaoToken 在这里出现两次一次是拿 Key一次是当默认供应商。先打开 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 注册并创建 Key再把 https://taotoken.net/api 填进 MCP 客户端配置。下面按操作顺序拆开讲。2. 操作步骤与核心代码2.1 准备 MCP Server 的最小实现文件查询 Skill 不需要复杂框架一个基于 stdio 的 Node.js 脚本就够。先建目录并初始化mkdir mcp-file-skill cd mcp-file-skill npm init -y npm install modelcontextprotocol/sdk然后写server.js暴露两个 toollist_directory和read_file。import { Server } from modelcontextprotocol/sdk/server/index.js; import { StdioServerTransport } from modelcontextprotocol/sdk/server/stdio.js; import { ListToolsRequestSchema, CallToolRequestSchema } from modelcontextprotocol/sdk/types.js; import fs from fs/promises; import path from path; const server new Server( { name: file-query-skill, version: 1.0.0 }, { capabilities: { tools: {} } } ); server.setRequestHandler(ListToolsRequestSchema, async () ({ tools: [ { name: list_directory, description: 列出指定目录下的文件和子目录, inputSchema: { type: object, properties: { dirPath: { type: string, description: 绝对路径 } }, required: [dirPath], }, }, { name: read_file, description: 读取指定文件的文本内容, inputSchema: { type: object, properties: { filePath: { type: string, description: 绝对路径 } }, required: [filePath], }, }, ], })); server.setRequestHandler(CallToolRequestSchema, async (request) { const { name, arguments: args } request.params; if (name list_directory) { const entries await fs.readdir(args.dirPath, { withFileTypes: true }); const result entries.map((e) ${e.isDirectory() ? [DIR] : [FILE]} ${e.name}).join(\n); return { content: [{ type: text, text: result || (空目录) }] }; } if (name read_file) { const content await fs.readFile(args.filePath, utf-8); return { content: [{ type: text, text: content }] }; } throw new Error(未知 tool: ${name}); }); const transport new StdioServerTransport(); await server.connect(transport);这段代码的关键点ListToolsRequestSchema负责告诉客户端“我有哪些工具”CallToolRequestSchema负责真正执行。两个 tool 的inputSchema都用绝对路径避免相对路径在客户端工作目录下解析出错。2.2 在 Cline 里配置 MCP 客户端Cline 的 MCP 配置通常放在mcp.json或客户端的 MCP Servers 设置里。核心是告诉 Cline这个 Server 怎么启动、用哪个 API 端点。{ mcpServers: { file-query-skill: { command: node, args: [/absolute/path/to/mcp-file-skill/server.js], env: { API_BASE: https://taotoken.net/api, API_KEY: 你的_TaoToken_Key } } } }注意args里的路径必须写成绝对路径。我踩过的坑是用了./server.jsCline 启动子进程时工作目录不在项目根直接报模块找不到。2.3 把 TaoToken 设为默认供应商在 Cline 的模型设置里把 Provider 切到 OpenAI CompatibleBase URL 填https://taotoken.net/apiAPI Key 填刚才创建的 Key。模型选择上文件查询这类任务对推理要求不高选一个响应快、支持 tool call 的模型即可。具体可用模型列表以官网为准你可以在 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 的文档区确认当前支持的模型名。配置完成后重启 Cline在 MCP 面板里应该能看到file-query-skill处于 connected 状态。3. TaoToken 接入与配置细节TaoToken 在这个流程里承担的是模型调用入口。Cline 本身不绑定模型它需要一个兼容 OpenAI 协议的端点来发请求。https://taotoken.net/api就是这个端点Key 则是身份凭证。创建 Key 的步骤打开 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 注册后进入控制台在 API Keys 页面创建一个新 Key。建议给这个 Key 起个能识别的名字比如cline-file-skill方便后续排查。填进 Cline 时有两个位置容易混淆一个是 MCP Server 的env一个是 Cline 自身的模型 Provider 设置。前者是给 Server 脚本用的如果你脚本里要调模型后者才是 Cline 发对话请求用的。这次我们的 Server 脚本不调模型所以env里的API_BASE和API_KEY其实可以省略真正起作用的是 Cline 的 Provider 配置。但保留着也没坏处方便以后扩展。如果你在 Cline 里找不到 OpenAI Compatible 选项检查客户端版本。较新的 Cline 在 Provider 下拉里直接有 “OpenAI Compatible” 或 “Custom OpenAI”。填完后点 Verify 或发一条测试消息能正常返回就说明接入成功。4. 验证 tool call 与失败分支4.1 两条 tool call 的调用记录配置好后在 Cline 对话框里输入列出 /Users/yourname/projects 目录下的文件模型应该会发起list_directory调用。Cline 界面会显示 tool call 的请求和返回。预期日志类似[Tool Call] list_directory dirPath: /Users/yourname/projects [Tool Result] [DIR] mcp-file-skill [FILE] README.md [FILE] package.json接着追问读一下 README.md 的内容模型发起read_file[Tool Call] read_file filePath: /Users/yourname/projects/README.md [Tool Result] # My Projects 这是测试文件。两条 tool call 都跑通后再问一个需要结合返回内容的问题根据刚才读到的 README 内容这个项目是做什么的如果模型能回答“这是一个测试文件内容是关于 My Projects 的”说明它正确接收了 tool 返回并继续推理。这一步是整个验证的核心——tool call 本身跑通不难难的是确认模型没有忽略返回内容。4.2 常见失败分支第一种MCP Server 启动失败。Cline 面板显示 disconnected。检查args路径是否为绝对路径以及node是否在 PATH 里。可以在终端手动跑node /absolute/path/server.js看是否报错。第二种tool call 发出但无返回。通常是 Server 脚本里CallToolRequestSchema的 handler 抛异常了。在脚本里加console.error输出到 stderrCline 的 MCP 日志里能看到。第三种模型不发起 tool call。说明模型没理解工具描述或者当前模型不支持 function calling。换一个明确支持 tool call 的模型并检查ListToolsRequestSchema返回的description是否清晰。第四种API 请求 401。Key 填错或过期。重新在 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 创建一个 Key确认复制时没有多余空格。5. 限制、成本与模型选择文件查询 Skill 的能力边界很明确它只能访问 Server 进程有权限访问的路径。如果你在 macOS 上跑某些系统目录会触发权限拒绝这是操作系统层面的限制不是 Skill 的问题。另外read_file目前是全文读取大文件会撑爆上下文实际使用时建议加一个大小限制或分页逻辑。成本方面tool call 本身不产生额外费用费用来自模型 token 消耗。每次 tool call 的请求和返回都会计入上下文所以频繁列大目录会快速增加 token。模型选择上文件查询这类任务不需要顶级推理模型选一个 tool call 支持好、价格适中的即可。具体费率和模型列表以官网为准你可以在控制台看到实时用量。如果你打算长期用这个 Skill建议把mcp.json纳入版本管理但 Key 不要提交。可以用环境变量引用或者在 Cline 的全局设置里统一配 KeyMCP 配置里只留端点地址。最后一步验证完成后你手里应该有三样东西一份可复用的mcp.json、两条 tool call 的日志记录、一次连续追问的截图或日志。这三样就是“跑通”的证据。 告别海外账号与网络限制稳定直连全球优质大模型限时半价接入中。 点击领取海量免费额度