MCP server that connects Claude Desktop to Obsidian via the Local REST API plugin.
mcp-obsidian is a Node.js/TypeScript MCP server that exposes your Obsidian vault to Claude Desktop over stdio.
It talks to the Obsidian Local REST API plugin and provides tools for searching, reading, writing, and managing notes, plus running Obsidian commands.
Based on src/index.ts, this server currently exposes:
search_notes- search notes using Obsidian query syntaxget_note- read full markdown content by vault-relative pathcreate_note- create a new note (overwriteoptional)update_note- replace full content of an existing noteappend_note- append or prepend content to a notedelete_note- delete a notelist_directory- list files/folders under a vault directoryopen_note- open a note in the Obsidian applist_commands- list available Obsidian command IDsexecute_command- execute an Obsidian command by IDget_active_note- get content of the active note in Obsidian
- Node.js 18+ (Node 20+ recommended)
- Obsidian desktop app
- Obsidian plugin: Local REST API installed and enabled
- API key from the Local REST API plugin settings
Required:
OBSIDIAN_BASE_URL(example:https://127.0.0.1:27124)OBSIDIAN_API_KEY(token/license key from plugin settings)
Optional (only if you use self-signed TLS cert from local plugin):
NODE_TLS_REJECT_UNAUTHORIZED=0
Security note: disable TLS verification only for local trusted use.
npm install
npm run buildBuild output will be generated in dist/.
Use claude_desktop_config.example.json as reference.
Example:
{
"mcpServers": {
"obsidian": {
"command": "node",
"args": ["/absolute/path/to/mcp_obsidian/dist/index.js"],
"env": {
"OBSIDIAN_BASE_URL": "https://127.0.0.1:27124",
"OBSIDIAN_API_KEY": "YOUR_LOCAL_REST_API_KEY_HERE",
"NODE_TLS_REJECT_UNAUTHORIZED": "0"
}
}
}
}Adjust args to the absolute path on your machine.
After Claude Desktop loads this MCP server, you can call tools like:
- Search notes:
- tool:
search_notes - args:
{"query":"tag:#project","context_length":120}
- tool:
- Read note:
- tool:
get_note - args:
{"path":"Projects/Plan.md"}
- tool:
- Create note:
- tool:
create_note - args:
{"path":"Journal/2026-08-17.md","content":"# Daily Log\\n- ...","overwrite":false}
- tool:
- Append note:
- tool:
append_note - args:
{"path":"Inbox.md","content":"\\n- New item","mode":"append"}
- tool:
- Run command:
- tool:
execute_command - args:
{"command_id":"app:go-home"}
- tool:
.
├── src/
│ ├── index.ts # MCP server entrypoint, tool schema + handlers
│ └── obsidianApi.ts # Obsidian Local REST API client wrapper
├── claude_desktop_config.example.json
├── package.json
└── tsconfig.json
This project depends on the Local REST API plugin endpoints (/vault, /search/simple, /commands, /active, /open).
If the plugin is not installed/enabled or API key/base URL is wrong, MCP tools will fail.