Obsidian MCP Server
Provides access to an Obsidian vault via the official CLI, allowing AI agents to read, create, and search notes, manage tasks and tags, modify file properties, and interact with plugins and workspaces.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Obsidian MCP Server search my vault for notes about project ideas and summarize them"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Obsidian MCP Server
MCP server that gives LLM agents access to your Obsidian vault through the official Obsidian CLI. Read, create, search notes, manage tasks, tags, properties, plugins and more — all via the Model Context Protocol.
Important: This server requires the Obsidian desktop app running on your machine. The CLI is a bridge to the app's internal API — it does not work without a running Obsidian instance.
Prerequisites
1. Obsidian 1.12+
You need Obsidian version 1.12 or later (with the latest installer — 1.12.4+).
Download: https://obsidian.md/download
2. Enable CLI in Obsidian
Open Obsidian
Go to Settings → General
Enable Command line interface
Follow the prompt to register the CLI
Restart your terminal for PATH changes to take effect
Verify it works:
obsidian --versionWindows users: You also need the
Obsidian.comterminal redirector file, available to Catalyst members on the Obsidian Discord.
3. Python 3.11+ and uv
Install uv if you don't have it:
# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"Related MCP server: Obsidian CLI MCP Server
Installation
Clone the repository and install dependencies:
git clone https://github.com/Storks/obsidian-mcp.git
cd obsidian-mcp
uv syncVerify everything is set up:
uv run obsidian-mcpThe server communicates via stdio, so you won't see any output — it's waiting for MCP messages. Press Ctrl+C to stop.
Connecting to LLM agents
The server uses stdio transport. Every MCP client needs to know how to start the process: run uv with the project directory and the obsidian-mcp command.
Below are configuration examples for popular tools. Replace /path/to/obsidian-mcp with the actual path where you cloned the repository.
Claude Code
Add via CLI:
claude mcp add obsidian-mcp -- uv run --directory /path/to/obsidian-mcp obsidian-mcpOr add manually to .mcp.json in your project root (or ~/.claude.json for global access):
{
"mcpServers": {
"obsidian-mcp": {
"type": "stdio",
"command": "uv",
"args": ["run", "--directory", "/path/to/obsidian-mcp", "obsidian-mcp"]
}
}
}Restricting available tools
The server exposes 54 tools — you may not need all of them. Claude Code lets you allow or deny specific tools via .claude/settings.json (project-level) or ~/.claude/settings.json (global). Tools follow the naming pattern mcp__obsidian-mcp__<tool_name>.
Example: read-only mode — deny any tool that can modify the vault:
{
"permissions": {
"deny": [
"mcp__obsidian-mcp__obsidian_create",
"mcp__obsidian-mcp__obsidian_append",
"mcp__obsidian-mcp__obsidian_prepend",
"mcp__obsidian-mcp__obsidian_delete",
"mcp__obsidian-mcp__obsidian_move",
"mcp__obsidian-mcp__obsidian_rename",
"mcp__obsidian-mcp__obsidian_property_set",
"mcp__obsidian-mcp__obsidian_property_remove",
"mcp__obsidian-mcp__obsidian_task",
"mcp__obsidian-mcp__obsidian_bookmark",
"mcp__obsidian-mcp__obsidian_base_create",
"mcp__obsidian-mcp__obsidian_plugin_enable",
"mcp__obsidian-mcp__obsidian_plugin_disable",
"mcp__obsidian-mcp__obsidian_plugin_install",
"mcp__obsidian-mcp__obsidian_plugin_reload",
"mcp__obsidian-mcp__obsidian_workspace_save",
"mcp__obsidian-mcp__obsidian_workspace_load"
]
}
}Example: allow only specific tools — useful when you want a minimal set:
{
"permissions": {
"allow": [
"mcp__obsidian-mcp__obsidian_read",
"mcp__obsidian-mcp__obsidian_search",
"mcp__obsidian-mcp__obsidian_search_context",
"mcp__obsidian-mcp__obsidian_files",
"mcp__obsidian-mcp__obsidian_tags",
"mcp__obsidian-mcp__obsidian_outline"
]
}
}Any tool not listed in allow will require manual confirmation before each use.
OpenCode
Add to opencode.json in your project root (or ~/.config/opencode/opencode.json for global access):
{
"mcp": {
"obsidian-mcp": {
"type": "local",
"command": ["uv", "run", "--directory", "/path/to/obsidian-mcp", "obsidian-mcp"],
"enabled": true
}
}
}Codex (OpenAI)
Add via CLI:
codex mcp add obsidian-mcp -- uv run --directory /path/to/obsidian-mcp obsidian-mcpOr add manually to ~/.codex/config.toml:
[mcp_servers.obsidian-mcp]
command = "uv"
args = ["run", "--directory", "/path/to/obsidian-mcp", "obsidian-mcp"]Configuration
Environment variables (all optional):
Variable | Default | Description |
|
| Path to the Obsidian CLI binary |
|
| Command timeout in seconds |
| — | Default vault name (if not specified per-call) |
Example with environment variables in .mcp.json:
{
"mcpServers": {
"obsidian-mcp": {
"type": "stdio",
"command": "uv",
"args": ["run", "--directory", "/path/to/obsidian-mcp", "obsidian-mcp"],
"env": {
"OBSIDIAN_VAULT": "My Notes",
"OBSIDIAN_TIMEOUT": "60"
}
}
}
}Available tools (54)
Every tool accepts an optional vault parameter to target a specific vault.
Files (12)
Tool | Description |
| Create or overwrite a file |
| Read file contents |
| Append content to a file |
| Prepend content after frontmatter |
| Delete a file |
| Move or rename a file |
| Rename a file |
| Open a file in Obsidian |
| Show file info |
| List files in the vault |
| Show folder info |
| List folders in the vault |
Search (2)
Tool | Description |
| Search vault for text |
| Search with matching line context |
Daily Notes (5)
Tool | Description |
| Open today's daily note |
| Get daily note file path |
| Read daily note contents |
| Append content to daily note |
| Prepend content to daily note |
Tasks (2)
Tool | Description |
| List tasks in the vault |
| Show or update a task |
Tags (2)
Tool | Description |
| List tags in the vault |
| Get tag info |
Properties (4)
Tool | Description |
| List properties in the vault |
| Set a property on a file |
| Remove a property from a file |
| Read a property value |
Links (5)
Tool | Description |
| List backlinks to a file |
| List outgoing links from a file |
| List unresolved links |
| List files with no incoming links |
| List files with no outgoing links |
Outline (1)
Tool | Description |
| Show headings for a file |
Templates (1)
Tool | Description |
| List available templates |
Bookmarks (2)
Tool | Description |
| List bookmarks |
| Add a bookmark |
Vault (1)
Tool | Description |
| Show vault info |
Word Count (1)
Tool | Description |
| Count words and characters |
Plugins (7)
Tool | Description |
| List installed plugins |
| List enabled plugins |
| Get plugin info |
| Enable a plugin |
| Disable a plugin |
| Install a community plugin |
| Reload a plugin |
Workspace (4)
Tool | Description |
| Show workspace tree |
| List saved workspaces |
| Save current layout |
| Load a saved workspace |
Bases (3)
Tool | Description |
| List .base files in the vault |
| Create a new item in a base |
| Query a base and return results |
History (2)
Tool | Description |
| Compare file versions |
| List file versions |
Development
# Install dev dependencies
uv sync
# Run tests
uv run pytest tests/ -vLicense
MIT
Available Tools
54 toolsobsidian_appendC
Append content to a file (default: active file)
Inputs: content (required), vault, file, path, +1 more.
obsidian_backlinksB
List backlinks to a file (default: active file).
Inputs: vault, file, path, counts, +1 more.
obsidian_base_createC
Create a new item in a base.
Inputs: vault, file, path, view, +4 more.
obsidian_base_queryD
Query a base and return results.
Inputs: vault, file, path, view, +1 more.
obsidian_basesC
List all .base files in the vault.
Inputs: vault.
obsidian_bookmarkD
Add a bookmark.
Inputs: vault, file, subpath, folder, +3 more.
obsidian_bookmarksD
List bookmarks.
Inputs: vault, total, verbose.
obsidian_createC
Create or overwrite a file
Inputs: vault, name, path, content, +4 more.
obsidian_dailyD
Open daily note.
Inputs: vault, paneType.
obsidian_daily_appendC
Append content to daily note.
Inputs: content (required), vault, paneType, inline, +1 more.
obsidian_daily_pathB
Get daily note path.
Inputs: vault.
obsidian_daily_prependC
Prepend content to daily note.
Inputs: content (required), vault, paneType, inline, +1 more.
obsidian_daily_readC
Read daily note contents.
Inputs: vault.
obsidian_deadendsB
List files with no outgoing links.
Inputs: vault, total.
obsidian_deleteC
Delete a file (default: active file, trash by default)
Inputs: vault, file, path, permanent.
obsidian_diffD
List or compare versions from file recovery and Sync.
Inputs: vault, file, path, from_, +2 more.
obsidian_file_infoC
Show file info (default: active file)
Inputs: vault, file, path.
obsidian_filesC
List files in the vault
Inputs: vault, folder, ext, total.
obsidian_folder_infoD
Show folder info
Inputs: path (required), vault, info.
obsidian_foldersC
List folders in the vault
Inputs: vault, folder, total.
obsidian_historyC
List versions from file recovery.
Inputs: vault, file, path.
obsidian_linksB
List outgoing links from a file (default: active file).
Inputs: vault, file, path, total.
obsidian_moveC
Move or rename a file (default: active file)
Inputs: to (required), vault, file, path.
obsidian_openD
Open a file
Inputs: vault, file, path, newtab.
obsidian_orphansB
List files with no incoming links.
Inputs: vault, total.
obsidian_outlineC
Show headings for the current file.
Inputs: vault, file, path, format, +1 more.
obsidian_plugin_disableC
Disable a plugin.
Inputs: id (required), vault, filter.
obsidian_plugin_enableD
Enable a plugin.
Inputs: id (required), vault, filter.
obsidian_plugin_infoD
Get plugin info.
Inputs: id (required), vault.
obsidian_plugin_installC
Install a community plugin.
Inputs: id (required), vault, enable.
obsidian_plugin_reloadC
Reload a plugin (for developers).
Inputs: id (required), vault.
obsidian_pluginsC
List installed plugins.
Inputs: vault, filter, versions.
obsidian_plugins_enabledC
List enabled plugins.
Inputs: vault, filter, versions.
obsidian_prependC
Prepend content after frontmatter (default: active file)
Inputs: content (required), vault, file, path, +1 more.
obsidian_propertiesC
List properties in the vault.
Inputs: vault, file, path, name, +5 more.
obsidian_property_readC
Read a property value from a file (default: active file).
Inputs: name (required), vault, file, path.
obsidian_property_removeB
Remove a property from a file (default: active file).
Inputs: name (required), vault, file, path.
obsidian_property_setC
Set a property on a file (default: active file).
Inputs: name (required), value (required), vault, type, +2 more.
obsidian_readB
Read file contents (default: active file)
Inputs: vault, file, path.
obsidian_renameC
Rename a file (default: active file)
Inputs: name (required), vault, file, path.
obsidian_searchC
Search vault for text. Returns matching file paths.
Inputs: query (required), vault, path, limit, +3 more.
obsidian_search_contextC
Search with matching line context. Returns grep-style path:line: text output.
Inputs: query (required), vault, path, limit, +2 more.
obsidian_tagD
Get tag info.
Inputs: name (required), vault, total, verbose.
obsidian_tagsC
List tags in the vault.
Inputs: vault, file, path, sort, +3 more.
obsidian_taskD
Show or update a task.
Inputs: vault, ref, file, path, +6 more.
obsidian_tasksC
List tasks in the vault.
Inputs: vault, file, path, status, +6 more.
obsidian_templatesD
List templates.
Inputs: vault, total.
obsidian_unresolvedC
List unresolved links in vault.
Inputs: vault, total, counts, verbose.
obsidian_vaultD
Show vault info.
Inputs: vault, info.
obsidian_wordcountC
Count words and characters (default: active file).
Inputs: vault, file, path, words, +1 more.
obsidian_workspaceC
Show workspace tree.
Inputs: vault, ids.
obsidian_workspace_loadD
Load a saved workspace.
Inputs: name (required), vault.
obsidian_workspacesC
List saved workspaces.
Inputs: vault, total.
obsidian_workspace_saveC
Save current layout as workspace.
Inputs: vault, name.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 54 tools
The tools cover distinct Obsidian operations like file management, plugins, properties, and search, but there is notable overlap in some areas. For example, obsidian_create and obsidian_append/prepend both modify files, and obsidian_rename and obsidian_move both handle file renaming, which could cause confusion. However, descriptions help clarify specific use cases.
All tool names follow a consistent 'obsidian_' prefix with snake_case and clear verb_noun patterns, such as obsidian_create, obsidian_read, and obsidian_plugins_list. This uniformity makes the set predictable and easy to navigate, with no deviations in naming conventions.
With 54 tools, the count is excessive for an Obsidian server, leading to a bloated and potentially overwhelming interface. While Obsidian is feature-rich, many tools could be consolidated or omitted without losing functionality, making the set feel heavy and less user-friendly.
The tool set provides comprehensive coverage of Obsidian's core features, including file CRUD operations, plugin management, property handling, search, and workspace controls. There are no obvious gaps; agents can perform full lifecycle tasks from creation to deletion and advanced functions like version history and tagging.
Maintenance
Related MCP Connectors
Search your Obsidian vault to quickly find notes by title or keyword, summarize related content, a…
Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analy…
Search and reason over your Obsidian-style Markdown vault, right from ChatGPT.
Use your Mac, Windows or Linux computer from ChatGPT, Claude or Codex: files, commands, documents.
Related MCP Servers
- AlicenseBqualityDmaintenanceWraps the Obsidian CLI to allow LLM agents to read/write notes, search, manage frontmatter, navigate links, and run plugins on a running Obsidian instance.342MIT
- AlicenseAqualityDmaintenanceProvides AI agents with Obsidian vault operations via the official CLI, including reading, writing, searching notes, and managing files, with security and concurrency protections.7MIT
- AlicenseAqualityDmaintenanceEnables interaction with Obsidian vaults through the official Obsidian CLI, allowing note management, search, and vault operations without plugins or API keys.21MIT
- AlicenseAqualityFmaintenanceEnables AI assistants to perform over 80 Obsidian vault operations locally via the Obsidian CLI, with a single tool and no network dependencies.2MIT