Skip to main content
Glama
NeveuGregor

mcp-obsidian

by NeveuGregor

mcp-obsidian

🇬🇧 English · 🇫🇷 Français

A filesystem-based MCP server for an Obsidian 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.

Related MCP server: obsidian-local-mcp

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.

Install

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:

{
  "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)

This server is the MCP layer of a broader knowledge architecture — 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 (BSD-compatible, French law) — © 2026 Neveu Grégor.

Available Tools

6 tools
obsidian_appendA

Ajoute du contenu à la fin d'une note existante

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesChemin relatif depuis la racine du vault
contentYesContenu markdown à ajouter

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description is minimal. It implies the note must exist but does not disclose error handling, side effects, or confirmation of success. Adequate for a simple append but lacks depth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, concise sentence in French with no unnecessary words. Every part contributes to understanding the tool's function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool, the description is mostly complete. It covers the core function and resource. However, it could mention error conditions (e.g., note not found) or return value, but this is not critical for basic use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear descriptions for both parameters (path and content). The tool description adds no additional meaning beyond what the schema provides, yielding a baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Ajoute du contenu à la fin d'une note existante' clearly states the action (append) and resource (existing note). It distinguishes from sibling tools like obsidian_write (overwrite) and obsidian_patch_frontmatter (metadata modification).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives. For example, it does not mention that obsidian_write should be used for creating new notes or overwriting, nor does it specify prerequisites like the note must exist.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

obsidian_listB

Liste les fichiers .md et sous-dossiers d'un répertoire du vault

ParametersJSON Schema
NameRequiredDescriptionDefault
dirNoChemin relatif depuis la racine du vault. Vide = racine du vault
recursiveNoLister récursivement les sous-dossiers (défaut: false)

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries full burden. It only states the tool lists files and folders but does not disclose what is returned (e.g., full paths, sizes), whether it is read-only, or any performance implications. Basic behavioral traits are missing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence in French that is clear and free of extraneous information. Every word is necessary and sufficient for conveying the primary function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with full schema coverage and no output schema, the description is minimally complete. However, it does not explain the output format or how results are returned, which could leave an agent uncertain about consuming the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the description adds default values (e.g., recursive defaults to false) which are also in the schema. No additional meaning beyond the schema is provided, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists .md files and subfolders from a vault directory, using a specific verb and resource. It distinguishes from siblings like obsidian_read or obsidian_write which serve different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidelines are provided about when to use this tool versus alternatives. There is no mention of prerequisites, when to choose recursive vs non-recursive, or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

obsidian_patch_frontmatterA

Modifie des champs du frontmatter YAML sans réécrire le corps de la note

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesChemin relatif depuis la racine du vault
fieldsYesChamps à modifier. Valeurs acceptées : string, number, ou array de strings

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that the note body is not rewritten, which is key, but does not mention permissions, error handling, or what happens if no frontmatter exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence of 12 words, front-loaded with the verb 'Modifie'. Every word is necessary and no extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with two well-documented parameters and no output schema, the description covers the core functionality. It could mention prerequisites (e.g., file must exist and have frontmatter) but is largely sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Both parameters have clear descriptions in the schema (100% coverage). The tool description adds no further semantic value beyond restating that it modifies fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool modifies YAML frontmatter fields without rewriting the note body. This distinguishes it from siblings like obsidian_write or obsidian_append.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'sans réécrire le corps de la note' implicitly tells when to use this tool (when only frontmatter changes are needed) but does not explicitly mention when not to use it or name alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

obsidian_readB

Lit une note du vault Obsidian avec troncation optionnelle

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesChemin relatif depuis la racine du vault (ex: wiki/cyber/sql-injection.md)
max_charsNoLimite de caractères retournés (défaut: 8000)

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It adds minimal behavioral context beyond the schema (e.g., optional truncation is already in the schema). It does not disclose other traits such as existence checks, error handling, authentication needs, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that front-loads the core purpose. It is efficient, though it could be slightly more descriptive without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema is provided, so the description should explain what the tool returns (e.g., the note content). It only mentions reading with optional truncation, leaving the return value unspecified, which is a significant gap for a read operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with both parameters already described in the schema. The description does not add any additional meaning beyond what the schema provides, so it meets the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'reads' and the resource 'note from Obsidian vault', and it includes the optional truncation feature. It clearly differentiates from sibling tools which are write, append, list, search, and patch operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for reading notes but does not explicitly state when to use this tool over alternatives, nor does it mention prerequisites or when not to use it. Given the tool's name and purpose, usage is implied but not explicitly guided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

obsidian_writeA

Écrit ou écrase une note du vault. Crée les dossiers parents si nécessaire

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesChemin relatif depuis la racine du vault
contentYesContenu markdown complet de la note

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses destructive behavior (overwrite) and automatic parent directory creation. This is good transparency, though it could mention error handling or limitations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, each adding value. No redundant or extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple write tool with two parameters and no output schema, the description covers the main action and a key side effect (directory creation). It could mention error cases or content limits, but is largely complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds no extra meaning beyond the schema—it does not describe parameter format, constraints, or example values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb (write/overwrite) and resource (note in vault), and adds behavior like creating parent directories. It clearly distinguishes from sibling tools like obsidian_append by indicating full overwrite.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for writing or overwriting a note, but does not explicitly state when to use it over alternatives like obsidian_append or obsidian_patch_frontmatter. No exclusions or context provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updatesv1.0.0
    • First observedobsidian_append
    • First observedobsidian_list
    • First observedobsidian_patch_frontmatter
    • First observedobsidian_read
    • First observedobsidian_search
    • First observedobsidian_write

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

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A local MCP server that wraps the Obsidian CLI to give AI assistants direct access to read, edit, and manage notes within an Obsidian vault. It enables advanced operations such as frontmatter property management, context-aware searching, and the execution of internal Obsidian commands.
    2
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server that provides read and write access to an Obsidian vault by interacting directly with markdown files on disk. Supports searching, listing, reading, creating, editing, and appending notes without requiring any Obsidian plugins.
    2,547 npm
    ISC