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