The WebSocket registry carries the shared file tools plus IDE-specific ones; the HTTP registry carries the shared set. That is why both clients can be attached at the same time without a standard MCP client seeing diagnostics it cannot use. Note the deliberate choice on protocol version: the plugin uses the older HTTP-with-SSE transport because most clients do not yet support Streamable HTTP.
An Obsidian plugin that runs an MCP server inside the app, over two transports: WebSocket for Claude Code and HTTP/SSE for Claude Desktop.
- File operations shared by both transports — view, str_replace, create and insert
- Workspace context — get_current_file and get_workspace_files, so the assistant knows what you are looking at
- obsidian_api for reaching Obsidian's own API
- IDE-specific tools over the Claude Code WebSocket, including getDiagnostics
- Auto-discovery: Claude Code finds the vault through the /ide command, no config needed
- Both clients connected simultaneously, each seeing the tools appropriate to it
- A configurable port so several vaults can run the plugin at once
Obsidian with the plugin installed and enabled. Claude Code needs nothing else — run claude, use /ide, pick Obsidian. Claude Desktop needs Node.js and the mcp-remote bridge, because it does not speak HTTP transports directly: point it at http://localhost:22360/sse. Port 22360 is the default and is changeable in plugin settings; each vault needs its own.
