obsidian-mcp
README.md
# Obsidian MCP
An MCP (Model Context Protocol) server that gives AI assistants (Claude, Cursor, etc.) access to your Obsidian vault. Navigate folders, read notes, create, edit, move, rename and delete them — all from your AI chat.
## Requirements
- Python 3.10+
- [uv](https://docs.astral.sh/uv/) (recommended) or pip
- An Obsidian vault on your local machine
## Installation
```bash
# Clone the repo
git clone https://github.com/your-username/obsidian-mcp
cd obsidian-mcp
# Copy the env template and set your vault path
cp .env.example .env
```
Edit `.env` and set your vault path:
```
OBSIDIAN_VAULT_PATH="/Users/you/Documents/MyVault"
```
To find your vault path in Obsidian: **Settings → About → Vault path**.
## Running the server
### Development (with MCP Inspector UI)
```bash
uv run mcp dev server.py
```
This opens the MCP Inspector in your browser where you can test all tools interactively.
### Production
```bash
uv run server.py
```
## Connecting to Cursor
Add this to your `.cursor/mcp.json` (or Cursor global MCP settings):
```json
{
"mcpServers": {
"obsidian": {
"command": "python",
"args": ["/absolute/path/to/obsidian-mcp/server.py"],
"env": {
"OBSIDIAN_VAULT_PATH": "/path/to/your/vault"
}
}
}
}
```
Replace `/absolute/path/to/obsidian-mcp/server.py` with the actual path to `server.py` on your machine, and `/path/to/your/vault` with your vault path (find it in Obsidian: **Settings → About → Vault path**).
## Connecting to Claude Desktop
Add this to your `claude_desktop_config.json`:
```json
{
"mcpServers": {
"obsidian": {
"command": "uv",
"args": ["run", "/absolute/path/to/obsidian-mcp/server.py"],
"env": {
"OBSIDIAN_VAULT_PATH": "/path/to/your/vault"
}
}
}
}
```
## Available Tools
| Tool | Description |
|------|-------------|
| `list_folder(folder_path)` | List subfolders and notes inside a vault folder. Leave empty for vault root. |
| `read_note(note_path)` | Read the full content of a note (path relative to vault root). |
| `create_note(note_path, content)` | Create a new note. Creates intermediate folders if needed. |
| `update_note(note_path, content)` | Replace the full content of an existing note. |
| `delete_note(note_path)` | Delete a note from the vault. |
| `rename_note(note_path, new_name)` | Rename a note keeping it in the same folder. |
| `move_note(note_path, destination_path)` | Move a note to a different folder. Can also rename as part of the move. Creates destination folders if needed. |
| `delete_folder(folder_path, recursive)` | Delete a folder. Use `recursive=True` to delete folders that contain files. |
All paths are relative to the vault root, e.g. `"Projects/App/roadmap.md"`.
## License
MIT
This server cannot be deployed
Maintenance
ActivitySlowing
ResponsivenessNo issues