Skip to main content
Glama
NeveuGregor

mcp-obsidian

by NeveuGregor
README.md
# mcp-obsidian

*🇬🇧 English · [🇫🇷 Français](README.fr.md)*

A **filesystem-based** [MCP](https://modelcontextprotocol.io) server for an
[Obsidian](https://obsidian.md) vault. It reads and writes your vault's
Markdown files **directly on disk** — no Obsidian plugin, no Local REST API, no
running Obsidian instance required. Point it at a folder and your LLM can browse
and edit notes.

## Why filesystem-based

Most Obsidian MCP servers talk to the *Local REST API* community plugin, which
means Obsidian must be running with the plugin enabled. `mcp-obsidian` skips all
that and operates on the vault directory itself — works headless, in CI, or on a
synced folder.

## Tools

| Tool | Description |
|------|-------------|
| `obsidian_read` | Read a note (with optional truncation) |
| `obsidian_search` | Keyword search across notes, with truncated context per hit; optional subfolder scope |
| `obsidian_write` | Create or overwrite a note (creates parent folders) |
| `obsidian_append` | Append content to a note |
| `obsidian_patch_frontmatter` | Patch a note's YAML frontmatter |
| `obsidian_list` | List `.md` files and subfolders of a directory |

All paths are **relative to the vault root** (e.g. `wiki/cyber/sql-injection.md`).

### Scope

This server is **transport only**. It has no notion of a "claim", no conflict
detection and no merge policy — `obsidian_write` is a plain overwrite, last write
wins. Contradiction handling, note conventions and the human-in-the-loop review
step live one layer up, in
[claude-obsidian-system](https://github.com/NeveuGregor/claude-obsidian-system).

## Install

```bash
git clone https://github.com/NeveuGregor/mcp-obsidian.git
cd mcp-obsidian
npm install
npm run build      # compiles TypeScript to dist/
```

## Configuration

The vault path is provided via the `OBSIDIAN_VAULT` environment variable
(absolute path). The server exits with an error if it is not set.

Register it with Claude (CLI or Desktop), e.g. in your MCP config:

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

## Requirements

- Node.js 18+
- An Obsidian vault (just a folder of Markdown files)

## Related

This server is the *MCP layer* of a broader knowledge architecture —
**[claude-obsidian-system](https://github.com/NeveuGregor/claude-obsidian-system)** —
which documents how the vault itself is designed (LLM-Wiki + Zettelkasten +
Evergreen) and wired to Claude Code skills and memory.

## License

[CeCILL-B](LICENSE) (BSD-compatible, French law) — © 2026 Neveu Grégor.

TDQS

A3.7/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a distinct operation: append, list, patch frontmatter, read, search, write. There is no ambiguity between them, as descriptions clearly differentiate appending from overwriting and frontmatter-specific editing.

Naming Consistency5/5

All tool names follow a consistent `obsidian_<verb>` pattern, with one compound verb (`patch_frontmatter`). The naming is predictable and uniform, aiding agent selection.

Tool Count5/5

With 6 tools, the server is well-scoped for an Obsidian vault interface. The count is neither too small nor too large, covering essential operations without redundancy.

Completeness4/5

The toolset covers core CRUD operations (read, write, append, list, search) and frontmatter editing. A minor gap is the lack of a delete tool, but the set is largely complete for typical note management.

Maintenance

ActivitySlowing
ResponsivenessNo issues