
Obsidian still does not ship a first-party MCP server, but its Local REST API community plugin now includes a built-in Streamable HTTP MCP endpoint. That means Claude Code, Cursor, and other compatible clients can connect directly to the plugin — a separate community bridge server is no longer the default. The endpoint is local and API-key protected; Obsidian must remain open.
This guide covers the current direct route, the filesystem alternative, the security and Canvas limits that matter, and when a first-party, whiteboard-aware server like AFFiNE's built-in MCP is the better fit.
As of August 2026, Obsidian does not ship a first-party MCP server. The company provides an official CLI for automation, while MCP access remains community-maintained. That distinction matters: you are responsible for reviewing the plugin, its declared tools, and every client that receives content from your vault.
The most direct current route has one server layer:
https://127.0.0.1:27124/mcp/.Authorization: Bearer <your-api-key> header. Claude Desktop supports remote custom connectors, but those connections originate in Anthropic's cloud and require a publicly reachable server. Because this plugin exposes 127.0.0.1, its README instead uses Claude Desktop's separate local MCP configuration with the mcp-remote HTTP-to-stdio bridge.Because the plugin runs inside the desktop app, it can use live vault metadata, the active file, tags, and the command palette. The endpoint stops when Obsidian closes.
The plugin's current built-in endpoint makes a separate third-party Obsidian MCP server unnecessary for clients with Streamable HTTP support:
https://127.0.0.1:27124/mcp/ endpoint uses a self-signed certificate. Trust that certificate in the OS or client. If that is impossible, the plugin can expose http://127.0.0.1:27123/mcp/, but only enable unencrypted HTTP on a machine and network you control.claude mcp add --transport http obsidian https://127.0.0.1:27124/mcp/ \
--header "Authorization: Bearer <your-api-key>"
Cursor can use the same URL and header in its MCP JSON. Claude Desktop's account-level remote connector cannot reach this 127.0.0.1 URL because that connection is cloud-brokered. For this local endpoint, use the plugin's documented mcp-remote entry in claude_desktop_config.json.
The built-in server declares read, write, move, copy, delete, search, tag, active-file, and command-execution tools. Review that live list before connecting, leave confirmation prompts enabled for mutations, and rotate the API key if it is exposed. A localhost endpoint protects network reachability; it does not stop a cloud-hosted AI client from receiving note content that a tool returns, so also review the client's data policy.

Because an Obsidian vault is a folder of Markdown files, you can skip Obsidian entirely and point a generic filesystem MCP server at the vault directory. This works even when the app is closed, and for plain reading it is the simplest possible setup.
The trade-off: the filesystem route sees files, not a vault. Anything Obsidian computes — backlinks, tags resolved across folders, plugin-generated content — is invisible, and write operations bypass Obsidian's own safeguards. Use it for read-mostly access on a machine where the app is not always open; use the REST route when you want vault-aware behavior.
Obsidian MCP servers do three things genuinely well: local-first search over local notes, instant reuse of a vault you already keep, and clean composition with other servers.
The Obsidian MCP route has five structural limits: the app must be running, Canvas is exposed as raw JSON rather than board-aware retrieval, whole-vault analysis hits context limits, capabilities vary by connector, and access means one vault on one machine.
.canvas file or match text inside it, but the built-in tools do not provide semantic, spatial, or frame-aware Canvas search. The client receives JSON rather than a meaningful map of the board.
The Obsidian route optimizes for local Markdown on one machine. AFFiNE starts from a different premise: docs and whiteboards live in one workspace, and the MCP server is part of the product rather than a community add-on.
| Obsidian (community servers) | AFFiNE MCP | |
|---|---|---|
| Server | Community Local REST API plugin with a built-in MCP endpoint; external bridges remain optional | First-party, built into the app |
| Availability | Desktop app must be running | Hosted endpoint (Cloud or your self-hosted instance) |
| Whiteboards | Raw Canvas JSON; no semantic or spatial board retrieval | Search indexes canvas text, returns element and frame locators |
| Credentials | Plugin API key, managed by you | Per-client credentials with expiry and revocation, read-only by default |
| Team access | Single machine, single vault | Workspace-scoped with your permissions |
| Cost | Free community plugin | Free on Cloud and self-hosted with AI features enabled |
Comparison reflects publicly documented capabilities as of August 2026.
The honest split: stay on the Obsidian route if your notes are personal, local, and text-only — it is a good route, and it keeps everything on your disk, including with a self-hosted AFFiNE as a parallel option for team content. Move to a first-party server when the desktop-must-be-running constraint bites, when your team needs shared access, or when the knowledge worth searching includes diagrams and sticky-note clusters rather than prose alone.
No — as of August 2026, Obsidian ships an official CLI but no first-party MCP server. The community Local REST API plugin now includes its own MCP endpoint, so a separate bridge server is no longer necessary for clients that support Streamable HTTP.
Install and enable the Local REST API community plugin, copy its API key, and connect Claude Code directly to https://127.0.0.1:27124/mcp/ with the API key in an Authorization Bearer header. Trust the plugin's self-signed certificate, keep Obsidian running, and test with a search question about your own notes. Claude Desktop's cloud-brokered remote connector cannot reach this localhost URL, so use the plugin's documented local mcp-remote configuration.
Not on the REST API route — the plugin only answers while the desktop app runs. The alternative is pointing a filesystem MCP server at the vault folder, which works with the app closed but sees plain files without backlinks, tags, or any vault-aware behavior.
Only as raw JSON. A connector may read a .canvas file or match its text, but the current plugin does not expose board-aware semantic or spatial retrieval. If visual boards are where your decisions live, AFFiNE's MCP search indexes whiteboard text and returns element and frame locators instead of an undifferentiated JSON document.
Sync is fine; mobile is not. An MCP server reads the vault copy on the machine where it runs, so whether that copy syncs through Obsidian Sync, iCloud, or git changes nothing. But the plugin endpoint is desktop-bound in practice, so there is no realistic route to serving MCP from the phone app; notes that must stay reachable away from the desk are the hosted-endpoint case in the comparison above.
Start with the Local REST API plugin's built-in MCP endpoint if your client supports Streamable HTTP and you want vault-aware behavior while Obsidian runs. Use a filesystem server for read-mostly access when the app must stay closed; consider an external bridge only for a client compatibility gap. In every case, check recent maintenance, the live tool list, and which write, delete, or command tools require approval.
Treat it like installing any community plugin with file access: check maintenance activity, inspect the live tool list, keep confirmation prompts on for write, delete, move, and command execution, and rotate exposed API keys. Also review the AI client's data policy, because note content returned from a localhost tool may still be sent to a cloud model. Our MCP security best practices guide covers the full checklist.
If your vault is where your thinking lives, connect it — the local-first trade-offs are real but knowable. And if part of that thinking happens on boards rather than in prose, give your assistant the workspace that can search both.