Obsidian MCP Server
Provides direct file system access to Obsidian vaults with auto-discovery, full-text search with regex support, note operations (read, write, append, prepend), and vault management capabilities
Click on "Install 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., "@Obsidian MCP Serversearch my vault for notes about project planning"
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.
Obsidian MCP Server
Direct file system access to Obsidian vaults through Model Context Protocol (MCP).
Features
Direct vault access - No plugins or REST API required
Auto-discovery - Finds vaults from Obsidian config and common locations
Full-text search - Search across all notes with regex support
Note operations - Read, write, append, prepend to notes
Vault management - List vaults, get statistics, browse files
Windows optimized - Handles Windows paths correctly
Related MCP server: Obsidian MCP Server
Installation
Make sure the project is built:
cd C:\repos\obsidian-mcp
npm install
npm run buildAdd to Claude Desktop configuration:
Edit %APPDATA%\Claude\claude_desktop_config.json:
{
"mcpServers": {
"obsidian-mcp": {
"command": "node",
"args": ["C:\\repos\\obsidian-mcp\\dist\\index.js"],
"env": {
"OBSIDIAN_VAULT": "C:\\Users\\YourName\\Documents\\YourVault"
}
}
}
}Restart Claude Desktop
Available Tools
Vault Management
list_vaults- Discover available Obsidian vaultsget_vault_info- Get statistics about a vault
Note Operations
read_note- Read a note with frontmatter and metadatawrite_note- Create or update a note (overwrite/append/prepend)list_notes- List all notes in vault or folder
Search
search_vault- Full-text search with regex and case-sensitive options
Usage Examples
// List available vaults
list_vaults()
// Read a note
read_note(vault_path: "C:\\Users\\Name\\Vault", note_path: "Daily Notes/2024-01-17")
// Write a note
write_note(
vault_path: "C:\\Users\\Name\\Vault",
note_path: "New Note",
content: "# My New Note\n\nContent here",
mode: "overwrite"
)
// Search vault
search_vault(
vault_path: "C:\\Users\\Name\\Vault",
query: "project",
options: { case_sensitive: false }
)Vault Discovery
The server automatically discovers vaults from:
Obsidian's configuration (
%APPDATA%\obsidian\obsidian.json)Common locations:
%USERPROFILE%\Documents\Obsidian%USERPROFILE%\OneDrive\Documents\Obsidian
Environment variable
OBSIDIAN_VAULT
Development
# Install dependencies
npm install
# Build
npm run build
# Run in development
npm run dev
# Type checking
npm run typecheckTroubleshooting
No vaults found: Make sure you have at least one Obsidian vault with
.obsidianfolder or.mdfilesPermission errors: Run Claude Desktop as the same user who owns the vault files
Path not found: Use full absolute paths for vault_path
Future Features
Graph navigation (trace links N levels deep)
Template execution
Smart search with fuzzy matching
Active file tracking
Partial file updates (patch operations)
Frontmatter management
Available Tools
6 toolsget_vault_infoC
Get information about a specific vault
| Name | Required | Description | Default |
|---|---|---|---|
| vault_path | Yes | Path to the Obsidian vault |
TDQS
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 states the tool retrieves information, implying a read-only operation, but doesn't specify what 'information' includes (e.g., metadata, settings, statistics), whether it requires authentication, or any rate limits. This leaves significant gaps in understanding the tool's behavior beyond basic retrieval.
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, efficient sentence with zero waste. It's appropriately sized for a simple tool, front-loaded with the core purpose, and doesn't include unnecessary details, making it highly concise and well-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 the complexity of a tool that retrieves information without an output schema, the description is incomplete. It doesn't explain what 'information' entails (e.g., JSON structure, key fields), leaving the agent uncertain about return values. With no annotations and low behavioral transparency, this gap makes the description inadequate for effective tool 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?
The input schema has 100% description coverage, with 'vault_path' clearly documented as 'Path to the Obsidian vault'. The description adds no additional meaning beyond this, such as format examples or constraints, so it meets the baseline of 3 where the schema does the heavy lifting without extra value from the description.
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 'Get information about a specific vault' clearly states the action (get) and resource (vault), but it's vague about what information is retrieved. It distinguishes from siblings like 'list_vaults' (which lists multiple vaults) and 'list_notes' (which lists notes), but doesn't specify what details are included versus excluded, such as metadata or configuration.
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 is provided on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an existing vault), exclusions (e.g., not for modifying vaults), or comparisons to siblings like 'list_vaults' (for overviews) or 'search_vault' (for content within vaults), leaving usage context unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_notesC
List all notes in a vault or folder
| Name | Required | Description | Default |
|---|---|---|---|
| vault_path | Yes | Path to the Obsidian vault | |
| folder_path | No | Optional folder path within vault |
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 states the action ('List all notes') but lacks behavioral details: no mention of pagination, sorting, format of returned notes, error conditions (e.g., invalid paths), or performance implications. For a read operation with zero annotation coverage, this is a significant gap in transparency.
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, efficient sentence with zero waste. It is front-loaded with the core purpose and appropriately sized for a simple list operation. Every word earns its place without redundancy.
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 no annotations and no output schema, the description is incomplete. It doesn't explain what 'List' returns (e.g., note names, metadata, paths), handle edge cases, or provide usage context. For a tool with 2 parameters and no structured output documentation, more detail is needed to guide effective 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 description coverage is 100%, so the schema already documents both parameters ('vault_path' and 'folder_path') with clear descriptions. The description adds no additional parameter semantics beyond what the schema provides, such as path format examples or interaction between parameters. Baseline 3 is appropriate when schema does the heavy lifting.
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 ('List') and resource ('notes'), specifying the scope ('in a vault or folder'). It distinguishes from siblings like 'read_note' (single note) and 'search_vault' (filtered search), but doesn't explicitly differentiate from 'list_vaults' (different resource). The purpose is specific and unambiguous.
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 versus alternatives is provided. It doesn't mention when to prefer 'search_vault' for filtered results, or clarify the relationship with 'list_vaults' (which lists vaults, not notes). The description implies usage context but offers no explicit alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_vaultsB
List available Obsidian vaults
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 states the tool lists vaults but doesn't describe return format (e.g., list of names, paths, metadata), pagination, error conditions, or any side effects. For a tool with zero annotation coverage, this is a significant gap in transparency.
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, efficient sentence that front-loads the core purpose without unnecessary words. Every part of the sentence ('List available Obsidian vaults') directly contributes to understanding the tool's function, making it optimally concise and well-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 the tool's simplicity (0 parameters, no output schema), the description is minimal but adequate for basic understanding. However, with no annotations and no output schema, it lacks details on behavioral aspects like return format or error handling. For a list operation, this leaves gaps in contextual completeness.
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?
The tool has 0 parameters with 100% schema description coverage, so the schema fully documents the absence of inputs. The description doesn't add parameter details beyond this, which is appropriate. Baseline 4 is correct for zero-parameter tools, as there's no need to compensate for schema gaps.
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 action ('List') and resource ('available Obsidian vaults'), making the purpose immediately understandable. It distinguishes from siblings like 'get_vault_info' (detailed info) and 'search_vault' (search within vaults), though it doesn't explicitly mention this differentiation. The description avoids tautology by not just restating the tool name.
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 explicit guidance is provided on when to use this tool versus alternatives like 'get_vault_info' or 'search_vault'. The description implies usage for listing vaults but doesn't specify scenarios, prerequisites, or exclusions. This leaves the agent to infer context from sibling tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_noteC
Read a note from the vault
| Name | Required | Description | Default |
|---|---|---|---|
| vault_path | Yes | Path to the Obsidian vault | |
| note_path | Yes | Path to the note relative to vault root (with or without .md extension) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the basic action without disclosing behavioral traits. It doesn't mention error handling (e.g., if the note doesn't exist), permissions, rate limits, or what the output format might be (e.g., plain text, metadata). This leaves significant gaps for an agent to understand how the tool behaves beyond its name.
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, efficient sentence that front-loads the core purpose without any wasted words. It's appropriately sized for a simple read operation, making it easy to parse and understand quickly.
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 lack of annotations and output schema, the description is incomplete for a tool that reads notes. It doesn't explain what is returned (e.g., note content, formatting, errors), which is critical context for an agent to use this tool effectively alongside siblings like 'write_note'. The simplicity of the tool doesn't excuse this gap in behavioral disclosure.
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?
The description adds no parameter semantics beyond what the input schema provides, as schema description coverage is 100% with clear documentation for both parameters. The baseline score of 3 reflects adequate coverage by the schema alone, with the description not compensating or adding extra meaning.
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 action ('Read') and resource ('a note from the vault'), making the tool's purpose immediately understandable. It doesn't explicitly differentiate from siblings like 'get_vault_info' or 'list_notes', but the verb 'Read' implies retrieving content of a specific note rather than metadata or listings.
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 is provided on when to use this tool versus alternatives like 'list_notes' or 'search_vault'. The description assumes the user already knows which note to read, but it doesn't explain prerequisites or contextual cues for selection among sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_vaultC
Search for text across all notes in vault
| Name | Required | Description | Default |
|---|---|---|---|
| vault_path | Yes | Path to the Obsidian vault | |
| query | Yes | Search query | |
| options | No |
TDQS
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 states the action ('search') but lacks details on permissions, rate limits, output format, or whether it's read-only or has side effects. For a search tool with zero annotation coverage, this is a significant gap in transparency.
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, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded and wastes no space, making it easy for an agent to parse quickly.
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 tool's complexity (3 parameters, nested objects, no output schema) and lack of annotations, the description is incomplete. It doesn't address behavioral aspects, parameter usage, or output expectations, leaving gaps that could hinder correct tool invocation by an AI 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 description coverage is 67%, with 'vault_path' and 'query' well-described in the schema, but 'options' object lacks descriptions for its properties. The description adds no parameter semantics beyond the schema, not explaining what 'vault_path' entails or how 'query' is interpreted. Baseline 3 is appropriate as the schema covers most parameters adequately.
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's purpose with a specific verb ('search') and resource ('text across all notes in vault'), making it easy to understand what it does. However, it doesn't explicitly distinguish itself from potential sibling tools like 'list_notes' or 'get_vault_info', which might also involve vault operations but with different functions.
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. It doesn't mention scenarios where this tool is preferred over siblings like 'list_notes' (which might list notes without searching) or 'read_note' (which reads specific notes), leaving the agent without context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_noteC
Create or update a note in the vault
| Name | Required | Description | Default |
|---|---|---|---|
| vault_path | Yes | Path to the Obsidian vault | |
| note_path | Yes | Path to the note relative to vault root | |
| content | Yes | Content of the note | |
| mode | No | How to handle existing content | overwrite |
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 of behavioral disclosure. While 'create or update' implies mutation, it lacks details on permissions, error handling (e.g., if vault_path is invalid), or side effects (e.g., overwriting existing notes). This is inadequate for a mutation tool with zero annotation coverage.
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, efficient sentence with no wasted words, front-loading the core action ('create or update a note'). It's appropriately sized for the tool's complexity, earning full marks for conciseness.
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 tool's mutation nature, lack of annotations, and absence of an output schema, the description is incomplete. It doesn't cover behavioral aspects like success/error responses or operational constraints, leaving gaps that could hinder an AI agent's effective 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 description coverage is 100%, so the schema fully documents all parameters. The description adds no additional meaning beyond what's in the schema (e.g., it doesn't clarify 'vault_path' format or 'content' expectations), resulting in the baseline score for high schema coverage.
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 ('create or update') and resource ('a note in the vault'), making the purpose understandable. However, it doesn't explicitly distinguish this tool from sibling tools like 'read_note' or 'list_notes' beyond the obvious action difference, which prevents a perfect score.
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. It doesn't mention prerequisites (e.g., vault must exist), exclusions, or compare it to siblings like 'read_note' for retrieval or 'list_notes' for browsing, leaving usage context unclear.
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
- First observed
get_vault_info - First observed
list_notes - First observed
list_vaults - First observed
read_note - First observed
search_vault - First observed
write_note
TDQS
Scored across 6 tools
Every tool has a clearly distinct purpose with no ambiguity. get_vault_info retrieves vault metadata, list_notes enumerates notes, list_vaults shows available vaults, read_note accesses note content, search_vault performs text searches, and write_note handles creation/updates. The boundaries are well-defined and non-overlapping.
All tools follow a consistent verb_noun pattern using snake_case. The verbs (get, list, read, search, write) are appropriately chosen for their actions, and the nouns (vault_info, notes, vaults, note, vault) clearly indicate the target resources. There are no deviations in naming conventions.
With 6 tools, this server is well-scoped for managing Obsidian vaults and notes. Each tool earns its place by covering essential operations: discovery (list_vaults, list_notes), reading (read_note, get_vault_info), writing (write_note), and searching (search_vault). The count is neither too sparse nor bloated.
The tool surface provides strong coverage for core note-taking workflows, including CRUD operations (create/update via write_note, read via read_note, list via list_notes) and search functionality. A minor gap is the lack of a delete_note tool, which agents might need to work around, but the essentials are well-covered for the domain.
Maintenance
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
Search and reason over your Obsidian-style Markdown vault, right from ChatGPT.
Search your Obsidian vault to quickly find notes by title or keyword, summarize related content, a…
Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analy…
Open-source Obsidian for MDX - edit local docs with agent assistance
14,698
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables 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
- AlicenseAqualityDmaintenanceEnables AI assistants to interact with local Obsidian vaults through direct filesystem access for reading, creating, and managing notes. It features high-performance SQLite indexing for fast searches, regex support, and tools for organizing tags and links without requiring additional plugins.271MIT
- AlicenseCqualityDmaintenanceEnables 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.5104MIT
- FlicenseNot gradedqualityBmaintenanceProvides secure, direct file system access to Obsidian vault files, enabling search, read, write, and discovery of notes without requiring the Obsidian app.23-