MCP server giving Claude Code read/write access to Obsidian vaults
Project description
Obsidian MCP Server
An MCP (Model Context Protocol) server that gives Claude Code read/write access to your Obsidian vault.
Features
- Read & write notes - Create, edit, and append to markdown files
- Search - Full-text search across your vault
- Daily notes - Read or append to daily notes with configurable date format
- Browse - List files and folders in your vault
- Secure - Only accesses your configured vault directory
Installation
Via pip
pip install obsidian-mcp-server
Via pipx (recommended for CLI tools)
pipx install obsidian-mcp-server
From source
git clone https://github.com/bbdaniels/obsidian-mcp-server.git
cd obsidian-mcp-server
pip install -e .
Configure Claude Code
Add the MCP server to Claude Code:
claude mcp add obsidian -- python3 -m obsidian_mcp.server
Or if installed via pipx:
claude mcp add obsidian -- obsidian-mcp
Then restart Claude Code.
First-Time Setup
Once configured, tell Claude:
"Configure obsidian vault at /path/to/your/vault"
Claude will run obsidian_configure to set up the vault path. Your configuration is stored at ~/.config/obsidian-mcp/config.json.
Available Tools
| Tool | Description |
|---|---|
obsidian_configure |
Set vault path and daily notes settings |
obsidian_status |
Show current configuration and vault stats |
obsidian_read |
Read a note's contents |
obsidian_write |
Create or overwrite a note |
obsidian_append |
Append to a note (optionally under a heading) |
obsidian_search |
Search notes by content |
obsidian_list |
Browse vault structure |
obsidian_daily |
Read/append to daily notes |
Example Usage
Once configured, you can ask Claude things like:
- "Search my notes for authentication patterns"
- "Read my project architecture note"
- "Append today's session summary to my daily note"
- "Create a new note at Projects/my-project/decisions.md"
- "List all notes in my Work folder"
Configuration
Config is stored at ~/.config/obsidian-mcp/config.json:
{
"vault_path": "/path/to/your/vault",
"daily_notes_folder": "Daily Notes",
"daily_notes_format": "%Y-%m-%d"
}
Options
| Option | Default | Description |
|---|---|---|
vault_path |
(required) | Absolute path to your Obsidian vault |
daily_notes_folder |
Daily Notes |
Folder for daily notes |
daily_notes_format |
%Y-%m-%d |
Date format for daily note filenames |
Recommended Claude Instructions
Add this to your ~/.claude/CLAUDE.md to have Claude automatically take notes:
## Obsidian Note-Taking
Use the obsidian MCP tools to document work sessions and project progress.
### Daily Notes
At the end of significant work sessions, append a summary to today's daily note using `obsidian_daily`:
- What was accomplished
- Key decisions made
- Any blockers or open questions
### Project Notes
When working on a project, check if a corresponding folder exists in Obsidian (use `obsidian_list`). If so:
- Document important decisions, architecture choices, or design rationale
- Note any non-obvious implementation details worth remembering
- Track open questions or future improvements
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file obsidian_mcp_server-0.1.0.tar.gz.
File metadata
- Download URL: obsidian_mcp_server-0.1.0.tar.gz
- Upload date:
- Size: 6.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9f7493d49e8a9736ce94dde4c82c53d5cd5acf34744c47bbbcf95286cebe2bae
|
|
| MD5 |
2e4dcff301fb3e53c140ff1e31c1eea5
|
|
| BLAKE2b-256 |
26ed2ab1c29246ee0d418c383bbed358cc160f76a95631e29168b70e313910a1
|
Provenance
The following attestation bundles were made for obsidian_mcp_server-0.1.0.tar.gz:
Publisher:
publish.yml on bbdaniels/obsidian-mcp-server
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
obsidian_mcp_server-0.1.0.tar.gz -
Subject digest:
9f7493d49e8a9736ce94dde4c82c53d5cd5acf34744c47bbbcf95286cebe2bae - Sigstore transparency entry: 814013052
- Sigstore integration time:
-
Permalink:
bbdaniels/obsidian-mcp-server@f6d8cccb7d98cd32981d5856aed438d3bef7d1b2 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/bbdaniels
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@f6d8cccb7d98cd32981d5856aed438d3bef7d1b2 -
Trigger Event:
release
-
Statement type:
File details
Details for the file obsidian_mcp_server-0.1.0-py3-none-any.whl.
File metadata
- Download URL: obsidian_mcp_server-0.1.0-py3-none-any.whl
- Upload date:
- Size: 7.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
db250108c3448b2f3830d8726551850302790eaffa40f855c74c3b909ccf8aad
|
|
| MD5 |
3cd9ba7a9db07612e57248df66d2e110
|
|
| BLAKE2b-256 |
7fbd5b0ae86628c0ccece521c2efa9e5835b41a5f021e86bccb7e963ee649262
|
Provenance
The following attestation bundles were made for obsidian_mcp_server-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on bbdaniels/obsidian-mcp-server
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
obsidian_mcp_server-0.1.0-py3-none-any.whl -
Subject digest:
db250108c3448b2f3830d8726551850302790eaffa40f855c74c3b909ccf8aad - Sigstore transparency entry: 814013056
- Sigstore integration time:
-
Permalink:
bbdaniels/obsidian-mcp-server@f6d8cccb7d98cd32981d5856aed438d3bef7d1b2 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/bbdaniels
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@f6d8cccb7d98cd32981d5856aed438d3bef7d1b2 -
Trigger Event:
release
-
Statement type: