Skip to main content
Glama

obsidian-mcp

An MCP (Model Context Protocol) server that lets AI coding agents (Claude Code, Codex CLI, etc.) read, write, search, and organize notes in an Obsidian vault. It works directly on the filesystem, so Obsidian doesn't need to be running — Obsidian picks up external changes automatically.

Community project — not affiliated with Obsidian.

Setup

git clone https://github.com/Mochiduki-0715/obsidian-mcp.git
cd obsidian-mcp
npm install
npm run build

Configuration is done through environment variables:

Variable

Description

Default

OBSIDIAN_VAULT_PATH

Absolute path to your vault folder

(required)

OBSIDIAN_DAILY_DIR

Folder for daily notes, relative to the vault root

Daily

OBSIDIAN_TEMPLATE_DIR

Folder for templates, relative to the vault root

Templates

Related MCP server: Obsidian MCP Server

Registering with agents

Claude Code

claude mcp add --scope user obsidian \
  --env OBSIDIAN_VAULT_PATH=$HOME/path/to/your/vault \
  -- node /path/to/obsidian-mcp/dist/index.js

Codex CLI

Add to ~/.codex/config.toml:

[mcp_servers.obsidian]
command = "node"
args = ["/path/to/obsidian-mcp/dist/index.js"]

[mcp_servers.obsidian.env]
OBSIDIAN_VAULT_PATH = "/path/to/your/vault"

Tools

Tool

Description

list_notes

List notes, newest first; optionally restricted to a subfolder

read_note

Read a note, returning parsed frontmatter and the markdown body

create_note

Create a note (pass overwrite: true to replace an existing one)

append_note

Append text; with heading, insert at the end of that section

edit_note

Edit by exact string replacement (old_text / new_text)

update_frontmatter

Update YAML frontmatter by key: merge set values, delete remove keys, body untouched

search_notes

Case-insensitive full-text search, with optional tag, frontmatter, and regex filters

move_note

Move/rename a note and rewrite [[wikilinks]] across the vault

delete_note

Move a note to the vault's .trash/ folder (safe delete); warns if the note is still linked from elsewhere

backlinks

List notes that link to a given note, with file/line/link-type

daily_note

Get or create the daily note for today or a given date

get_outline

Get a note's heading outline (level/text/line) and line count, skipping code fences

create_from_template

Create a note from a template in OBSIDIAN_TEMPLATE_DIR, substituting {{date}}, {{title}}, and custom {{variables}}

Testing

npm test

Runs the TypeScript build followed by Node's built-in test runner (node --test) against the compiled dist/*.test.js files.

Safety

  • Every path is resolved inside the vault root; .. escapes are rejected

  • Deleting moves notes to Obsidian's standard .trash/ folder instead of removing them

  • create_note never silently overwrites an existing note (an explicit flag is required)

License

MIT

Available Tools

6 tools
append_noteA

Append text to a note. With 'heading', the text is inserted at the end of that heading's section (the section is created if missing).

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesVault-relative note path
textYesMarkdown text to append
headingNoInsert under this heading instead of at the end of the file
create_if_missingNoCreate the note if it does not exist (default false)

TDQS

A3.9/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 full burden. It discloses that with 'heading', the section is created if missing, but does not explain default behavior for missing notes (relies on create_if_missing parameter), error cases, or idempotency. Some behavioral traits are disclosed but gaps remain.

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 sentences with no fluff. The first sentence clearly states the core action, and the second adds a necessary behavioral nuance. Every word earns its place.

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?

Given 4 parameters and no output schema, the description covers core behavior but omits details about return values, error conditions (invalid path, missing heading), and default behavior when create_if_missing is false. Adequate but leaves gaps for a first-time user.

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

Parameters4/5

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

Schema description coverage is 100%, baseline 3. The description adds value by explaining the heading insertion behavior in prose, including that the section is created if missing, which is more detailed than the schema description for 'heading'. This extra context earns a higher score.

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 'Append text to a note', a specific verb-resource pair. This distinguishes it from siblings like create_note or edit_note, which have different actions. The additional detail about heading sections further clarifies its unique functionality.

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 appending text, but does not explicitly state when to use this tool versus alternatives like edit_note or create_note. No guidance on when not to use or conditions like note existence.

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

create_noteA

Create a new markdown note (parent folders are created automatically). Fails if the note exists unless overwrite is true.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesVault-relative note path
contentYesFull markdown content, including optional YAML frontmatter
overwriteNoReplace the note if it already exists (default false)

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description encodes key behaviors: automatic parent folder creation and failure on existing note unless overwrite is true. This provides sufficient transparency for a simple file creation tool, though authorization or rate limits are not discussed.

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?

The description is two sentences, front-loading the purpose and adding critical behavior details without any wasted words.

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 and complete schema coverage, the description covers the key creation behavior. It does not specify return value, but for a create operation this is often implied.

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

Parameters4/5

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

Schema coverage is 100%, and the description adds value by explaining that parent folders are created automatically (path) and that the operation fails if the note exists unless overwrite is true (overwrite). This goes beyond the schema descriptions.

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 creates a new markdown note. It distinguishes from siblings like edit_note and append_note by emphasizing creation of a new note with automatic folder creation and existence check.

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 description provides clear context on when to use (creating a new note) and the behavior when a note already exists. It does not explicitly mention alternatives, but sibling tool names are available for reference.

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

edit_noteA

Edit a note by exact string replacement. Fails if old_text is not found, or is ambiguous without replace_all.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesVault-relative note path
new_textYesReplacement text
old_textYesExact text to replace
replace_allNoReplace every occurrence (default false)

TDQS

A4.4/5.0
Behavior4/5

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

Discloses failure conditions and replacement behavior. Without annotations, description carries full burden; it adequately warns about ambiguity and strict matching.

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 sentences, front-loaded with verb and method, no redundant words. Every sentence serves a purpose.

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?

Despite no output schema or annotations, description covers key behavioral aspects (failure, replacement). Could mention if operation is reversible or return value, but adequate for simple edit.

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

Parameters4/5

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

Schema covers all parameters with descriptions, but description adds context on failure conditions and exact replacement semantics, beyond what schema provides.

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?

Description specifies exact string replacement, clearly distinguishing from sibling tools like update_frontmatter (metadata) and append_note (appending). Verb+resource+method are specific.

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?

Indicates failure conditions (old_text not found, ambiguous without replace_all), guiding when to use the replace_all parameter. No explicit exclusion of siblings, but context is clear.

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

list_notesA

List markdown notes in the Obsidian vault, sorted by last modified (newest first). Optionally restrict to a subfolder.

ParametersJSON Schema
NameRequiredDescriptionDefault
folderNoVault-relative subfolder to list, e.g. 'Daily'. Omit for the whole vault.

TDQS

A4.4/5.0
Behavior4/5

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

Discloses sorting order and optional subfolder filtering. No annotations provided, but description adequately conveys read-only listing behavior. No mention of performance or rate limits, but acceptable for a simple list tool.

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?

Single sentence, front-loaded with key action and parameters, no filler.

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 tool's simplicity (one optional param, no output schema), the description covers listing purpose and constraints. Could mention return format, but not critical.

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

Parameters4/5

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

Schema coverage is 100% with description. Description adds sorting info and the 'optionally restrict' nuance, providing value beyond the schema.

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?

Description states 'List markdown notes' with sorting and optional subfolder restriction. Clearly differentiates from siblings like create_note, read_note, etc.

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?

Clear context: use to get a list of notes, optionally filtered by subfolder. Lacks explicit when-not-to-use or alternatives, but context is sufficient.

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

read_noteA

Read a note from the vault. Returns the parsed frontmatter and the markdown body.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesVault-relative note path, e.g. 'Projects/idea' or 'Projects/idea.md'

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It correctly describes the return value (frontmatter and markdown body) and implies read-only behavior via the verb 'Read'. However, it does not explicitly state that the tool has no side effects or that it will error if the path does not exist.

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?

The description is concise with two sentences. The first sentence states the action, and the second specifies the return content. No extraneous information, well-structured.

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?

The description adequately covers the tool's purpose and output for a simple read operation. It lacks details about error conditions (e.g., missing note) and authentication requirements, but these are not critical given the simplicity and the presence of a well-documented parameter.

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?

The input schema already provides a complete description of the single parameter 'path' (including an example). The tool description does not add additional meaning beyond what the schema offers, so a baseline score of 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 the action ('Read a note') and the resource ('from the vault') and specifies the output (parsed frontmatter and markdown body). It distinguishes from sibling tools like update_frontmatter, list_notes, create_note, append_note, and edit_note, which all involve modification or listing.

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 description provides clear context for when to use this tool (to read a note's content) but does not explicitly state when not to use it or mention alternative tools. This is acceptable but lacks explicit exclusions.

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

update_frontmatterA

Update a note's YAML frontmatter by key: merge set values (added or overwritten) and delete remove keys. The note body is left untouched.

ParametersJSON Schema
NameRequiredDescriptionDefault
setNoKeys to add or overwrite, merged into existing frontmatter
pathYesVault-relative note path
removeNoKeys to delete from frontmatter

TDQS

A4/5.0
Behavior3/5

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

No annotations present; description discloses that note body is left untouched. However, it does not mention error handling, permission requirements, or atomicity.

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?

Single clear sentence with immediate verb and resource. No extraneous text. Key actions (merge set, delete remove) are front-loaded.

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?

Tool has only 3 parameters and no output schema. Description covers the core behavior (updating frontmatter without touching body). Minor gaps: no mention of return value or error cases.

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

Parameters4/5

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

Schema coverage is 100%. Description adds 'merged into existing frontmatter' for set and 'Keys to delete' for remove, providing context beyond schema property descriptions.

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?

Description uses specific verb 'Update' and resource 'YAML frontmatter', clearly distinguishing from sibling tools that modify note body or create/read notes.

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?

No explicit when-to-use or when-not-to-use guidance. Sibling tools are listed but not referenced. Implicitly, it's for frontmatter modifications only.

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

TDQS

A4.2/5.0
Disambiguation5/5

Each tool targets a distinct action: listing, reading, creating, appending, editing, and updating frontmatter. No two tools overlap in purpose.

Naming Consistency5/5

All tool names follow a consistent verb_noun snake_case pattern (e.g., list_notes, create_note, update_frontmatter).

Tool Count5/5

With 6 tools, the set is well-scoped for managing notes in a vault, covering essential operations without being overwhelming.

Completeness3/5

The set covers create, read, and update operations, but notably lacks a delete tool, which is a significant gap for full lifecycle management.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to interact with Obsidian vaults through direct filesystem access, supporting note management, lightning-fast search with SQLite indexing, image analysis, tag/link management, and bulk operations.
    MIT
  • A
    license
    C
    quality
    D
    maintenance
    Enables AI assistants to search, read, create, and modify Markdown notes in local Obsidian vaults directly through filesystem operations. Supports tag-based discovery and frontmatter parsing without requiring Obsidian to be open, facilitating integration with VS Code Copilot via stdio transport.
    5
    14
    4
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides AI agents with direct filesystem access to an Obsidian vault for note management, task orchestration, context persistence, and git synchronization.
    82
    1
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Mochiduki-0715/obsidian-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server