1. 为什么 Obsidian 的 MCP 服务总是连不上
如果你正在用 Obsidian 做知识库,又想让它被 Claude Code、Cursor 这类支持 MCP 的客户端直接读写,那Local REST API with MCP这个插件几乎是绕不开的一环。它的作用说白了就是:在 Obsidian 本地起一个 HTTP 服务,把笔记的读写能力通过 REST 接口暴露出来,再包一层 MCP 协议,让 AI 客户端能像调用工具一样操作你的 vault。听起来很顺,但真正配的时候,十个人里有八个会卡在「mcp 服务连接失败」这一步。
我自己第一次配的时候,claude mcp list里 obsidian 那一行永远是 failed,日志里翻来覆去就是 connection refused 和 401。后来才理清,这类失败基本集中在三个地方:协议选错了(HTTPS 和 HTTP 混用)、端口对不上(27124 和 27123 是两个不同的服务)、鉴权头没带对(API Key 没塞进请求)。这三个点任意一个出问题,表现都是「连不上」,但排查方向完全不同。
这篇就围绕这三个高频坑,给你一份可以直接抄的config.toml骨架,再配一套从连通性测试到日志定位的排错清单。同时我会把 Key 的管理方式统一到 TaoToken 的通道上——不是因为它多神奇,而是统一 Key 之后,你换客户端、换模型时不用再到处翻配置,排错时变量也少一个。适合已经装好插件、但卡在连接验证这一步的人。
2. 先把 TaoToken 的 Key 通道准备好
在动 Obsidian 配置之前,建议先把 Key 这件事理顺。很多人连接失败,其实不是 Obsidian 的问题,而是客户端那边用的 Key 和请求地址不匹配。TaoToken 在这里的角色是一个统一的 API 通道:你申请一个 Key,就能在多个支持 MCP 的客户端里复用,不用每个工具单独配一套凭证。
具体操作是进控制台创建 API Key。地址是 https://taotoken.net/api-keys ,登录后新建一个 Key,复制出来先存好。这个 Key 后面会同时出现在两处:一处是 Obsidian 插件自己的 API Key(用于本地 REST 服务的鉴权),另一处是客户端 config 里调用模型时的凭证。注意这两者不是一回事,别搞混——插件那个是保护你本地 27123 端口的,TaoToken 这个是给模型请求用的。
如果你还没决定用哪个客户端来跑 MCP,可以先到模型对话页面确认通道是否正常:https://taotoken.net/models 。能正常对话,说明 Key 和网络通道没问题,接下来 Obsidian 连不上就纯粹是本地配置的事了。这个先后顺序很重要,先排除外部因素,再查本地,能省掉大量来回试的时间。
对于长期要用编码类客户端(比如 Claude Code)跑 MCP 的场景,可以考虑 Coding Plan,额度更稳:https://taotoken.net/coding-plan 。接入文档在 https://taotoken.net/doc ,里面有针对不同客户端的配置示例,遇到字段不确定时对着看。
3. 可复制的 config.toml 骨架
下面这份骨架是我实测能跑通的版本。核心思路是:Obsidian 插件开 HTTP(非加密)服务,端口用 27123,客户端 config 里指向这个地址,并把插件生成的 API Key 放进请求头。
先看 Obsidian 插件侧的设置。打开Local REST API with MCP的设置页,找到Enable Non-encrypted (HTTP) Server并打开。这一步是关键,因为默认只开 HTTPS 的 27124 端口,而很多客户端的 MCP 配置对自签证书处理不好,直接连 27124 会握手失败。开了 HTTP 之后,27123 端口才可用。
然后是客户端侧的config.toml骨架:
# MCP 客户端配置骨架(以支持 TOML 的客户端为例) [mcp_servers.obsidian] command = "npx" args = ["-y", "mcp-remote", "http://127.0.0.1:27123/mcp"] [mcp_servers.obsidian.env] # 这里填 Obsidian 插件设置页里生成的 API Key OBSIDIAN_API_KEY = "你的插件APIKey" # 模型通道走 TaoToken 统一 Key [api] base_url = "https://taotoken.net/api" api_key = "你的TaoTokenKey"几个字段要重点核对。http://127.0.0.1:27123/mcp里的协议必须是http,端口必须是27123,路径是/mcp。如果你从插件设置里复制的是https://127.0.0.1:27124/,那就要手动改成上面这样。OBSIDIAN_API_KEY对应的是插件设置页里那串 Key,不是 TaoToken 的 Key,两者别填反。
如果你的客户端用的是 JSON 配置(比如.claude.json),结构等价,把mcpServers下的 obsidian 节点按同样字段填即可:
{ "mcpServers": { "obsidian": { "command": "npx", "args": ["-y", "mcp-remote", "http://127.0.0.1:27123/mcp"], "env": { "OBSIDIAN_API_KEY": "你的插件APIKey" } } } }注意:
mcp-remote这个桥接工具的作用是把远程 HTTP 的 MCP 服务转成本地 stdio 形式,很多客户端只认 stdio。如果你的客户端原生支持 HTTP MCP,可以省掉这层,直接填 URL。
4. 逐步验证:从连通性到成功结果
配好之后别急着在客户端里点连接,按下面顺序一步步验,哪一步断了就停在哪查。
第一步,确认 Obsidian 服务真的起来了。在浏览器或终端里直接请求:
curl -i http://127.0.0.1:27123/正常应该返回 200 或 401。返回 401 说明服务活着,只是没带 Key,这是好事。如果返回Connection refused,说明插件没开 HTTP 服务,或者端口不是 27123,回插件设置里确认。
第二步,带上 Key 再请求一次:
curl -i -H "Authorization: Bearer 你的插件APIKey" http://127.0.0.1:27123/这次应该返回 200。如果还是 401,说明 Key 填错了,或者请求头格式不对。有些版本要求的是Authorization: Bearer xxx,有些是自定义头,以插件文档为准。
第三步,验证 MCP 端点本身:
curl -i -H "Authorization: Bearer 你的插件APIKey" http://127.0.0.1:27123/mcp第四步,回到客户端跑列表命令。以 Claude Code 为例:
claude mcp list看到 obsidian 那一行显示 connected 或 ✓,就说明整条链路通了。这时候你可以在对话里让它读一篇笔记试试,比如「读一下我 vault 里叫 test 的笔记」,能返回内容就彻底没问题了。
5. 连接失败排查清单
按出现频率从高到低排,遇到问题挨个对。
协议和端口不匹配是最常见的。插件默认给的是https://127.0.0.1:27124,但客户端配置里如果没处理自签证书就会失败。解决办法就是开 HTTP 服务,统一用http://127.0.0.1:27123。检查方法:curl两个端口分别试,哪个通就用哪个。
API Key 填错位置排第二。插件 Key 和 TaoToken Key 是两套东西。插件 Key 进OBSIDIAN_API_KEY,TaoToken Key 进模型通道的api_key。填反了的表现是:MCP 能连上但一调用就 401,或者模型请求直接失败。
服务没启动或端口被占。Obsidian 没开、插件没启用、或者 27123 被别的程序占了,都会 connection refused。用lsof -i :27123看端口占用情况。
日志定位。Obsidian 的插件日志在设置 → Local REST API with MCP → 查看日志,客户端侧的日志一般在~/.claude/logs或客户端自己的日志目录。连接失败时先看客户端日志里的具体报错,是 timeout、refused 还是 401,对应上面的排查方向。
mcp-remote 版本问题。npx -y mcp-remote每次会拉最新版,偶尔新版有兼容问题。可以锁定版本,比如mcp-remote@0.1.x,避免突然连不上。
提示:改完配置后,客户端一般需要重启才生效。Obsidian 插件改设置后也建议重载一次插件。
6. 把 Key 和配置固定下来
排障排到最后你会发现,真正让人头疼的不是某一次连接失败,而是配置散落在各处、Key 有好几套、换个客户端就要重配一遍。我的做法是把 TaoToken 的 Key 作为模型通道的唯一凭证,Obsidian 插件 Key 单独存一份,两者在 config 里各归各位。这样下次再遇到连接失败,变量只有「本地服务」和「客户端配置」两块,排查范围直接砍半。
如果你还想验证模型通道本身是否正常,可以到 https://taotoken.net/models 发一条消息试试;长期跑编码和 Agent 场景的话,Coding Plan 的额度更合适:https://taotoken.net/coding-plan 。所有接入相关的字段说明都在 https://taotoken.net/doc ,配置时对着抄不容易错。把这几处固定下来,Obsidian 的 MCP 服务基本就不会再莫名其妙掉线了。