Skip to main content
Glama
quinny1187

Obsidian MCP Server

by quinny1187
README.md
# Obsidian MCP Server

Direct file system access to Obsidian vaults through Model Context Protocol (MCP).

## Features

- **Direct vault access** - No plugins or REST API required
- **Auto-discovery** - Finds vaults from Obsidian config and common locations
- **Full-text search** - Search across all notes with regex support
- **Note operations** - Read, write, append, prepend to notes
- **Vault management** - List vaults, get statistics, browse files
- **Windows optimized** - Handles Windows paths correctly

## Installation

1. Make sure the project is built:
```bash
cd C:\repos\obsidian-mcp
npm install
npm run build
```

2. Add to Claude Desktop configuration:

Edit `%APPDATA%\Claude\claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "obsidian-mcp": {
      "command": "node",
      "args": ["C:\\repos\\obsidian-mcp\\dist\\index.js"],
      "env": {
        "OBSIDIAN_VAULT": "C:\\Users\\YourName\\Documents\\YourVault"
      }
    }
  }
}
```

3. Restart Claude Desktop

## Available Tools

### Vault Management
- `list_vaults` - Discover available Obsidian vaults
- `get_vault_info` - Get statistics about a vault

### Note Operations
- `read_note` - Read a note with frontmatter and metadata
- `write_note` - Create or update a note (overwrite/append/prepend)
- `list_notes` - List all notes in vault or folder

### Search
- `search_vault` - Full-text search with regex and case-sensitive options

## Usage Examples

```typescript
// List available vaults
list_vaults()

// Read a note
read_note(vault_path: "C:\\Users\\Name\\Vault", note_path: "Daily Notes/2024-01-17")

// Write a note
write_note(
  vault_path: "C:\\Users\\Name\\Vault",
  note_path: "New Note",
  content: "# My New Note\n\nContent here",
  mode: "overwrite"
)

// Search vault
search_vault(
  vault_path: "C:\\Users\\Name\\Vault",
  query: "project",
  options: { case_sensitive: false }
)
```

## Vault Discovery

The server automatically discovers vaults from:
1. Obsidian's configuration (`%APPDATA%\obsidian\obsidian.json`)
2. Common locations:
   - `%USERPROFILE%\Documents\Obsidian`
   - `%USERPROFILE%\OneDrive\Documents\Obsidian`
3. Environment variable `OBSIDIAN_VAULT`

## Development

```bash
# Install dependencies
npm install

# Build
npm run build

# Run in development
npm run dev

# Type checking
npm run typecheck
```

## Troubleshooting

- **No vaults found**: Make sure you have at least one Obsidian vault with `.obsidian` folder or `.md` files
- **Permission errors**: Run Claude Desktop as the same user who owns the vault files
- **Path not found**: Use full absolute paths for vault_path

## Future Features

- Graph navigation (trace links N levels deep)
- Template execution
- Smart search with fuzzy matching
- Active file tracking
- Partial file updates (patch operations)
- Frontmatter management

TDQS

B3.4/5.0

Scored across 6 tools

Disambiguation5/5

Every tool has a clearly distinct purpose with no ambiguity. get_vault_info retrieves vault metadata, list_notes enumerates notes, list_vaults shows available vaults, read_note accesses note content, search_vault performs text searches, and write_note handles creation/updates. The boundaries are well-defined and non-overlapping.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern using snake_case. The verbs (get, list, read, search, write) are appropriately chosen for their actions, and the nouns (vault_info, notes, vaults, note, vault) clearly indicate the target resources. There are no deviations in naming conventions.

Tool Count5/5

With 6 tools, this server is well-scoped for managing Obsidian vaults and notes. Each tool earns its place by covering essential operations: discovery (list_vaults, list_notes), reading (read_note, get_vault_info), writing (write_note), and searching (search_vault). The count is neither too sparse nor bloated.

Completeness4/5

The tool surface provides strong coverage for core note-taking workflows, including CRUD operations (create/update via write_note, read via read_note, list via list_notes) and search functionality. A minor gap is the lack of a delete_note tool, which agents might need to work around, but the essentials are well-covered for the domain.

Maintenance

ActivityInactive
ResponsivenessNo issues