Skip to main content
Glama
justice8096

Obsidian MCP Server

by justice8096
README.md
# Obsidian MCP Server

An [MCP](https://modelcontextprotocol.io) server that lets Claude (and other MCP
clients) read, write, search, and manage an [Obsidian](https://obsidian.md)
vault as a native tool. Local filesystem access only, no cloud sync.

## Tools

| Tool | Description | Read-only |
|------|-------------|-----------|
| `obsidian_read_note` | Read a note's full markdown content | yes |
| `obsidian_write_note` | Create or overwrite a note (refuses overwrite unless asked) | no |
| `obsidian_append_to_note` | Append markdown to a note, creating it if missing | no |
| `obsidian_list_notes` | List notes in the vault or a folder | yes |
| `obsidian_search_vault` | Case-insensitive full-text search with line context | yes |
| `obsidian_read_frontmatter` | Parse a note's YAML frontmatter as structured data | yes |
| `obsidian_resolve_wikilinks` | Extract and resolve `[[wikilinks]]` to vault files | yes |

All paths are relative to the vault root. The `.md` extension is optional.
Paths are validated to stay inside the vault (no directory traversal).

## Setup

```bash
npm install
npm run build
```

The vault location is set with the `OBSIDIAN_VAULT_PATH` environment variable.
If unset, it defaults to `~/Obsidian`.

## Configure in an MCP client

Add to your client's MCP config (example for a stdio client):

```json
{
  "mcpServers": {
    "obsidian": {
      "command": "node",
      "args": ["/path/to/obsidian-mcp-server/dist/index.js"],
      "env": {
        "OBSIDIAN_VAULT_PATH": "/path/to/your/vault"
      }
    }
  }
}
```

## Develop

```bash
npm run dev        # run from source with tsx
npm run typecheck  # type-check without emitting
npm run inspect    # launch the MCP Inspector against the server
```

## Roadmap

- Semantic/vector search (embed notes, query by meaning)
- Dataview query passthrough
- Template-aware note creation
- Backlink graph traversal

## License

MIT

TDQS

A4.2/5.0

Scored across 7 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: reading, writing, appending, listing, searching, reading frontmatter, and resolving wikilinks. No overlap or ambiguity between tools.

Naming Consistency5/5

All tools follow the consistent pattern 'obsidian_verb_noun' in snake_case, e.g., obsidian_read_note, obsidian_write_note. Naming is predictable and uniform.

Tool Count4/5

7 tools is a reasonable count for a note-taking vault server. It covers essential operations, though a delete note tool is missing, which slightly reduces appropriateness.

Completeness4/5

The set covers reading, writing, appending, listing, searching, frontmatter parsing, and wikilink resolution. Missing delete note functionality is a minor gap but core workflows are achievable.

Maintenance

ActivityInactive
ResponsivenessNo issues