mcp-obsidian
The mcp-obsidian server lets you read, write, and manage Markdown notes in an Obsidian vault directly on disk — no Obsidian app or plugin required.
Read notes (
obsidian_read): Retrieve a note's content with optional truncation to limit response size.Search notes (
obsidian_search): Perform case-insensitive keyword searches across notes, with options to restrict to a subfolder, set a result limit, and return context snippets around matches.Write/create notes (
obsidian_write): Create a new note or completely overwrite an existing one, automatically creating any necessary parent folders.Append to notes (
obsidian_append): Add Markdown content to the end of an existing note without altering the rest.Patch frontmatter (
obsidian_patch_frontmatter): Modify specific YAML frontmatter fields (strings, numbers, or arrays) in a note without touching the note body.List files and folders (
obsidian_list): List all.mdfiles and subfolders in a given directory, with an option for recursive listing of nested subdirectories.
Provides filesystem-based access to an Obsidian vault, enabling reading, writing, searching, and managing Markdown notes directly on disk.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-obsidianfind notes about project planning in my vault"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 |
| Read a note (with optional truncation) |
| Keyword search across notes, with truncated context per hit; optional subfolder scope |
| Create or overwrite a note (creates parent folders) |
| Append content to a note |
| Patch a note's YAML frontmatter |
| List |
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)
Related
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 toolsobsidian_appendA
Ajoute du contenu à la fin d'une note existante
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Chemin relatif depuis la racine du vault | |
| content | Yes | Contenu markdown à ajouter |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| dir | No | Chemin relatif depuis la racine du vault. Vide = racine du vault | |
| recursive | No | Lister récursivement les sous-dossiers (défaut: false) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Chemin relatif depuis la racine du vault | |
| fields | Yes | Champs à modifier. Valeurs acceptées : string, number, ou array de strings |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Chemin relatif depuis la racine du vault (ex: wiki/cyber/sql-injection.md) | |
| max_chars | No | Limite de caractères retournés (défaut: 8000) |
TDQS
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.
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.
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.
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.
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.
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_searchC
Recherche un mot-clé dans les notes du vault, avec contexte tronqué par résultat
| Name | Required | Description | Default |
|---|---|---|---|
| dir | No | Restreindre la recherche à un sous-dossier (ex: wiki/cyber). Défaut: tout le vault | |
| query | Yes | Mot-clé à chercher (insensible à la casse) | |
| max_results | No | Nombre max de résultats (défaut: 20) | |
| context_chars | No | Chars de contexte autour du match par résultat (défaut: 200) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, placing full burden on the description. It mentions truncated context, but omits other important behaviors such as read-only nature, case-insensitivity (already in schema), result ordering, or handling of large vaults.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the action. It is efficient and without fluff, though it could be slightly more structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters and no output schema or annotations, the description is too minimal. It lacks details on return format, search scope (content vs metadata), error handling, and usage examples, leaving significant gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for all 4 parameters. The tool description adds no additional value beyond what the schema provides, maintaining a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches for a keyword in vault notes and truncates context per result, distinguishing it from sibling tools like read, list, and write. However, it does not specify whether it searches note content only or also metadata.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like obsidian_read or obsidian_list, nor 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_writeA
Écrit ou écrase une note du vault. Crée les dossiers parents si nécessaire
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Chemin relatif depuis la racine du vault | |
| content | Yes | Contenu markdown complet de la note |
TDQS
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.
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.
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.
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.
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.
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.
6 tool updates
v1.0.0- First observed
obsidian_append - First observed
obsidian_list - First observed
obsidian_patch_frontmatter - First observed
obsidian_read - First observed
obsidian_search - First observed
obsidian_write
TDQS
Scored across 6 tools
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.
All tool names follow a consistent `obsidian_<verb>` pattern, with one compound verb (`patch_frontmatter`). The naming is predictable and uniform, aiding agent selection.
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.
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
Related MCP Connectors
Markdown-based note-taking with a hosted MCP server. Your notes serve you and your AI.
Serve a folder of Markdown notes as an MCP server: hybrid search, reading, and sourced answers.
Token-efficient MCP memory for Markdown vaults. Tiered search, GraphRAG, AI memories.
Agent-native MCP server over the public saagarpatel.dev corpus. Read-only, stateless.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceA local MCP server that enables AI applications like Claude Desktop to securely access and work with Obsidian vaults, providing capabilities for reading notes, executing templates, and performing semantic searches.833MIT
- FlicenseNot gradedqualityDmaintenanceA 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-
- AlicenseNot gradedqualityDmaintenanceMCP 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 npmISC
- FlicenseNot gradedqualityCmaintenanceAn MCP server that provides full read/write access to an Obsidian vault, enabling searching, task management, wiki-link graph analysis, and attachment organization from an MCP client like Claude Code.-