1. 为什么 DeepChat 接 MCP 总卡在 settings 这一步
DeepChat 是一个本地运行的桌面客户端,支持通过 MCP(Model Context Protocol)把外部工具、知识库、数据库挂到对话模型上。MCP 你可以理解成大模型的“外接大脑”:模型本身只会推理和生成文本,但通过 MCP 协议,它可以调用检索、查库、跑代码这些真实动作。适合谁?第一次接触 DeepChat 和 MCP、想把本地客户端接到统一模型网关上的开发者,尤其是被 settings 文件里一堆字段名绕晕的人。
我见过最多的卡点不是模型能力,而是配置入口找错、鉴权字段填错位置。DeepChat 的 MCP 配置通常落在用户目录下的 settings 文件里,字段名和 UI 里的叫法不完全一致,比如 UI 写“基础 URL”,文件里可能是baseUrl或url;UI 写“密钥”,文件里可能是apiKey或token。一旦字段名对不上,客户端启动后 MCP 工具列表就是空的,日志里也不会给你特别明确的提示。
另一个高频问题是鉴权。很多人以为 MCP 服务不需要 Key,或者把 Key 填到了模型那一层而不是 MCP 服务那一层。实际上 MCP 服务作为独立进程或远程端点,需要自己的鉴权凭证。这篇就按“先拿到统一 Key,再写 settings,再启动验证工具列表”的顺序走一遍,每一步都给可复制片段。你跟着做,最后应该能在 DeepChat 里看到 MCP 工具被成功加载,并且发一条请求能触发工具调用。
核心检索词先明确:DeepChat 配置 MCP、settings 文件怎么写、MCP 鉴权字段填哪里、启动后怎么验证工具列表。下面从原问题场景开始拆。
2. TaoToken 前置准备:统一 Key 与 MCP 服务地址怎么拿
在写 settings 之前,先把两样东西准备好:一个可用的统一 API Key,以及 MCP 服务要指向的 Base URL。TaoToken 在这里的角色是统一模型网关,你不需要为每个模型或每个工具单独申请一套凭证,一个 Key 就能覆盖对话模型和 MCP 相关的调用入口。官网入口是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 根地址是 https://taotoken.net/api (这个不加 UTM)。
拿 Key 的路径:进入控制台后找到 API Keys 页面,新建一个 Key。建议命名带上用途,比如deepchat-mcp-local,方便后面排查是哪个客户端在用。Key 只显示一次,复制后先放到本地临时文件或密码管理器里,不要直接贴在聊天窗口。控制台入口:https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite 。API Keys 页面:https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite 。
模型 ID 也要提前确认。DeepChat 里模型字段和 MCP 字段是分开的,但都走同一个 Base URL。你可以在模型对话页面先确认哪些模型 ID 可用:https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=models&utm_campaign=rewrite 。如果你后面要跑长期编码或 Agent 类任务,可以看 Coding Plan:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite 。
这里有个容易混的点:MCP 服务本身可能是一个本地进程(比如 SSE 服务监听在http://localhost:8080/sse),也可能是一个远程端点。无论哪种,DeepChat 的 settings 里都需要写清楚三件套:Base URL、Key、Model ID。Base URL 指向 TaoToken 的 API 根地址,Key 用刚才创建的那一个,Model ID 用你在模型列表里确认过的。MCP 服务自己的地址是另一层,写在 MCP 服务器配置块里,不要和模型 Base URL 混在一起。
如果你用的是 Claude Code 这类工具做润色或接入,配置逻辑类似,但字段名不同。Claude Code 的接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite ,里面有 Base URL、Key、Model ID 的填写位置说明。DeepChat 没有官方文档页的话,就按下面 settings 片段来。
3. 可复制 settings 配置:JSON 片段与字段对照
DeepChat 的 settings 文件位置因系统而异。Windows 通常在%APPDATA%\DeepChat\settings.json,macOS 在~/Library/Application Support/DeepChat/settings.json,Linux 在~/.config/DeepChat/settings.json。如果你找不到,可以在 DeepChat 设置里点“打开配置目录”,或者用搜索命令定位:
# macOS / Linux find ~ -name "settings.json" -path "*DeepChat*" 2>/dev/null # Windows PowerShell Get-ChildItem -Path $env:APPDATA -Recurse -Filter settings.json | Where-Object { $_.FullName -like "*DeepChat*" }找到后先备份一份,再改。下面是一个完整的 JSON 片段,包含模型层和 MCP 层。注意字段名要和你的 DeepChat 版本对齐,如果版本不同,以 UI 里显示的字段为准,但结构可以参考:
{ "models": { "default": { "baseUrl": "https://taotoken.net/api", "apiKey": "sk-你的TaoTokenKey", "modelId": "你的模型ID", "provider": "openai-compatible" } }, "mcp": { "servers": [ { "name": "local-tools", "type": "sse", "url": "http://localhost:8080/sse", "apiKey": "sk-你的TaoTokenKey", "modelId": "你的模型ID", "timeout": 30000, "enabled": true } ] } }字段对照表:
| 字段 | 填什么 | 注意 |
|---|---|---|
models.default.baseUrl | https://taotoken.net/api | 不要加尾部斜杠 |
models.default.apiKey | TaoToken 控制台创建的 Key | 只显示一次,先保存 |
models.default.modelId | 模型列表里确认的 ID | 大小写敏感 |
mcp.servers[].type | sse或stdio | 本地进程常用 sse |
mcp.servers[].url | MCP 服务监听地址 | 端口要和启动参数一致 |
mcp.servers[].apiKey | 同一个 TaoToken Key | 不要留空 |
mcp.servers[].timeout | 毫秒,复杂查询调大 | 30000 起步 |
如果你用的是 TOML 格式的客户端(比如某些 Codex 配置),结构类似但写法不同:
[models.default] base_url = "https://taotoken.net/api" api_key = "sk-你的TaoTokenKey" model_id = "你的模型ID" [[mcp.servers]] name = "local-tools" type = "sse" url = "http://localhost:8080/sse" api_key = "sk-你的TaoTokenKey" model_id = "你的模型ID" timeout = 30000 enabled = true改完保存,重启 DeepChat。如果 UI 里有“重新加载配置”按钮,也可以先点那个。注意:不要同时开多个客户端用同一个 Key 跑高频请求,容易触发限流,排查时分不清是配置问题还是限流问题。
4. 启动与验证:MCP 工具列表是否加载成功
配置写完后,启动 MCP 服务进程。假设你用的是本地 SSE 服务,启动命令类似:
./your-mcp-server --port 8080 --api-key=sk-你的TaoTokenKey --model-id=你的模型ID启动后先看进程日志,确认监听地址是http://localhost:8080/sse。然后用 curl 探一下端点是否活着:
curl -N http://localhost:8080/sse如果返回事件流或保持连接,说明服务在跑。接着打开 DeepChat,进入设置里的 MCP 面板,看工具列表。成功加载时,你会看到类似local-tools的服务器名称,展开后有具体工具项,比如search、query、fetch等。如果列表为空,先看 DeepChat 日志里有没有MCP server connected或tool list loaded字样。
再发一条会触发工具调用的请求。比如你挂的是知识库检索工具,就问:“根据文档,报销流程是什么?”观察回答里有没有引用标记或工具调用记录。如果模型直接编答案而不调工具,说明工具没被注册到对话链路里,回到 settings 检查mcp.servers是否在顶层、enabled是否为 true。
验证模型本身是否通的请求:
curl https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer sk-你的TaoTokenKey" \ -H "Content-Type: application/json" \ -d '{ "model": "你的模型ID", "messages": [{"role": "user", "content": "只回复 ok"}] }'返回里有choices字段且内容为ok,说明 Key 和 Base URL 没问题。这一步能帮你把“模型不通”和“MCP 不通”分开。如果模型通了但 MCP 工具列表空,问题就在 MCP 配置块或 MCP 服务进程本身。
5. 常见报错排查:401、local proxy failed、reading choices、OAuth
401 Unauthorized:最常见。先确认 Key 有没有多余空格,再确认baseUrl是不是https://taotoken.net/api而不是别的路径。如果 Key 是在别的平台创建的,这里用不了。检查请求头是不是Authorization: Bearer sk-...,少Bearer也会 401。
local proxy failed:通常是本地 MCP 服务没启动,或者端口被占用。用lsof -i :8080(macOS/Linux)或netstat -ano | findstr 8080(Windows)看端口。如果服务启动时报address already in use,换端口,同时改 settings 里的url。
reading choices 报错:说明请求发出去了但响应结构不对。可能是modelId填错,或者 Base URL 指向了一个不返回 OpenAI 兼容格式的端点。回到模型列表确认 ID,再用上面的 curl 命令单独测模型。
OAuth 相关报错:如果你用的 MCP 服务要求 OAuth,而 settings 里只填了apiKey,就会卡在鉴权。这种情况要么在 MCP 服务侧关掉 OAuth,要么在 settings 里补oauth块。DeepChat 不同版本对 OAuth 支持不一样,建议先用不需要 OAuth 的本地 SSE 服务跑通流程。
工具列表加载了但调用失败:看 MCP 服务日志里的入参。常见是modelId没传或传错,导致服务端不知道用哪个模型做检索增强。把modelId在模型层和 MCP 层都写一致。
CC Switch / Cline MCP / Codex auth.json 场景:如果你同时用这些工具,记住三件套必须写全:Base URL、Key、Model ID。CC Switch 里对应base_url、api_key、model;Cline MCP 里对应baseUrl、apiKey、modelId;Codex 的auth.json里对应base_url、api_key、model。缺一个都会导致鉴权失败或模型找不到。
排障时优先看日志,不要反复改配置。每次只改一个字段,重启,观察变化。这样能快速定位是哪个字段的问题。
6. 接入文档与后续操作入口
配置跑通后,建议把 Key 和 settings 备份到安全位置,不要提交到 Git。如果你要换模型或加新的 MCP 服务,只需要在mcp.servers数组里追加一项,apiKey和modelId可以复用同一个 TaoToken Key 和模型 ID。
接入文档和字段说明看这里:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite 。验证模型是否可用,直接去模型对话页面发一条消息:https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=models&utm_campaign=rewrite 。如果你要长期跑编码或 Agent 任务,Coding Plan 入口:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite 。Claude Code 接入参考:https://taotoken.net/claudecode?utm_source=taotoken_aicg_blog_end&utm_content=claudecode&utm_campaign=rewrite 。
最后一步实操:把 settings 里的timeout从 30000 改成 60000,重启,再发一条复杂查询,观察工具调用是否更稳定。这个改动对知识库检索类 MCP 服务尤其明显。