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 "Install 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 Serversearch 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"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
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.