Obsidian MCP Server
Integrates with the Obsidian Local REST API to read, create, and edit notes, perform file and directory operations within a vault, and execute advanced searches using Dataview DQL or JsonLogic.
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., "@Obsidian MCP ServerFind my notes about 'Project Mars' and summarize the main points."
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
A modern Model Context Protocol (MCP) server that integrates with the Obsidian Local REST API to read, create, and edit notes effectively within Obsidian.
Features
This MCP server provides the following tools:
Vault File Operations
Tool | Description |
| Get file content (raw markdown, JSON with metadata, or document map) |
| Create or completely replace a file |
| Append content to an existing or new file |
| Partially update a file (heading/block/frontmatter operations) |
| Delete a file from the vault |
Directory Operations
Tool | Description |
| List files and directories in the vault |
Search Operations
Tool | Description |
| Simple text search with context |
| Advanced search using Dataview DQL or JsonLogic |
Prerequisites
Obsidian with the Local REST API plugin installed and enabled
Node.js v18 or higher
API Key from Obsidian's Local REST API settings
Quick Start
npm install
npm run build
npm run setupThe interactive setup wizard will guide you through:
Entering your Obsidian API Key
Selecting transport mode (stdio for Claude Desktop, HTTP for Open WebUI)
Configuring optional settings
After setup, start the server:
# For Open WebUI (HTTP mode)
npm run start:http
# For Claude Desktop (stdio mode)
npm startInstallation
npm install
npm run buildConfiguration
Setup Wizard (Recommended)
Run the interactive setup wizard:
npm run setupThis creates a .env file with your configuration.
Manual Configuration
Alternatively, copy .env.example to .env and edit manually:
cp .env.example .envEnvironment Variables
Variable | Description | Default |
| Obsidian REST API URL |
|
| API Key | (required) |
|
|
|
| Port for HTTP mode |
|
| Enable debug logging |
|
Usage with MCP Clients
Claude Desktop (stdio mode)
Add to your Claude Desktop configuration (claude_desktop_config.json):
{
"mcpServers": {
"obsidian": {
"command": "node",
"args": ["/path/to/Obsidian_MCP/dist/index.js"],
"env": {
"OBSIDIAN_API_URL": "http://127.0.0.1:27123",
"OBSIDIAN_API_KEY": "your-api-key-here"
}
}
}
}Open WebUI (HTTP mode)
Start the server in HTTP mode:
npm run start:httpIn Open WebUI, go to Admin Settings → Tools → MCP Servers
Add a new MCP server:
Type: MCP Streamable HTTP
URL:
http://localhost:3000/mcpAuth: None (the server handles Obsidian auth internally)
Click Save
Startup Health Check
When the server starts, it automatically verifies the connection to Obsidian:
========================================
Obsidian MCP Server - Startup Check
========================================
API URL: http://127.0.0.1:27123
Debug Mode: disabled
Checking connection to Obsidian REST API...
✓ Connected to Obsidian REST API
✓ Authenticated successfully
Plugin Version: 3.4.2
Obsidian Version: 1.11.7If there are connection issues, troubleshooting steps are displayed.
Debug Mode
Enable debug logging for verbose output:
DEBUG=true npm startShows detailed logs for API requests, tool calls, and HTTP connections.
Troubleshooting
Open WebUI Connection Failed
Verify server is running:
curl http://localhost:3000/healthCheck configuration:
URL:
http://localhost:3000/mcpAuth: None (not Bearer)
Type: MCP Streamable HTTP
Test the endpoint: The
/mcpendpoint accepts POST requests with MCP protocol messages.
General Issues
Ensure Obsidian is running with Local REST API plugin enabled
Verify API key is correct
Try
DEBUG=true npm startfor detailed logsRe-run setup:
npm run setup
Tool Details
vault_get_file
Get file content with optional format:
markdown(default): Raw markdown contentjson: Parsed note with metadatadocument-map: Shows headings, blocks, frontmatter fields
vault_patch_file
Partial updates without rewriting entire file:
Operations:
append,prepend,replaceTargets: headings, block references, frontmatter fields
search_advanced
Dataview DQL:
TABLE FROM #tag WHERE field = valueJsonLogic:
{"in": ["myTag", {"var": "tags"}]}
Development
# Build
npm run build
# Development with auto-rebuild
npm run dev # stdio mode
npm run dev:http # HTTP mode
# Setup wizard
npm run setup
# Clean build artifacts
npm run cleanLicense
MIT
Available Tools
8 toolssearch_advancedA
Perform an advanced search using Dataview DQL or JsonLogic. Dataview is best for querying metadata and frontmatter (e.g., "TABLE FROM #tag"). JsonLogic is best for complex logical queries on note properties.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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. It mentions the query languages but does not describe key behavioral traits such as what the tool returns (e.g., results format, error handling), performance considerations (e.g., rate limits, timeouts), or authentication needs. The description adds some context about query types but lacks essential operational details for an advanced search tool.
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 concise and well-structured, consisting of two sentences that efficiently convey the tool's purpose and usage guidelines. Each sentence adds value: the first states the action, and the second provides context for the query languages. There is no wasted text or unnecessary elaboration.
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 an advanced search tool with no annotations and no output schema, the description is incomplete. It explains the query languages but omits critical information such as the return format (e.g., what results look like), error conditions, or examples of successful use. Without annotations or output schema, the description should provide more context to guide effective tool invocation.
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 0 parameters with 100% coverage, so there are no parameters to document. The description does not need to compensate for any schema gaps. It appropriately focuses on the tool's functionality without redundant parameter information, earning a baseline score of 4 for zero parameters.
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: 'Perform an advanced search using Dataview DQL or JsonLogic.' It specifies the verb ('Perform an advanced search') and the resources/techniques involved (Dataview DQL, JsonLogic). However, it does not explicitly differentiate this from its sibling 'search_simple' beyond the 'advanced' qualifier, which is implied but not directly compared.
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 clear context on when to use each query language: 'Dataview is best for querying metadata and frontmatter (e.g., "TABLE FROM #tag"). JsonLogic is best for complex logical queries on note properties.' This offers guidance on selecting between the two options within the tool. However, it does not mention when to use this tool versus the sibling 'search_simple' or other alternatives, nor does it specify exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_simpleA
Perform a simple text search across all files in the vault. Returns matching files with context around each match. Best for straightforward text searches.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 tool returns 'matching files with context around each match,' which adds useful behavioral context beyond the basic action. However, it doesn't cover aspects like performance, rate limits, or error handling, leaving gaps 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 two sentences, front-loaded with the core purpose and followed by a usage tip. Every sentence adds value: the first defines the action and scope, the second provides guidance. It's efficient with zero waste.
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 (a search operation with no parameters), no annotations, and no output schema, the description is somewhat complete but has gaps. It explains what the tool does and its return format ('matching files with context'), but doesn't detail output structure or potential limitations. It's adequate but could be more thorough.
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 0 parameters with 100% coverage, so no parameters need documentation. The description doesn't add parameter details, which is appropriate here. Baseline is 4 for zero parameters, as the schema fully covers the lack of inputs.
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: 'Perform a simple text search across all files in the vault.' It specifies the verb ('search'), resource ('files in the vault'), and scope ('all files'), though it doesn't explicitly differentiate from its sibling 'search_advanced' beyond calling it 'simple.' This makes it clear but not fully sibling-distinctive.
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 implied usage guidance: 'Best for straightforward text searches.' This suggests when to use this tool (for simple searches) but doesn't explicitly state when not to use it or name alternatives like 'search_advanced.' It offers some context but lacks explicit exclusions or comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_append_to_fileA
Append content to the end of an existing file. If the file doesn't exist, it will be created. Use this to add content without replacing existing content.
| 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. It discloses key behavioral traits: the tool appends content, creates the file if it doesn't exist, and doesn't replace existing content. However, it lacks details on permissions, rate limits, error handling, or response format, which are important for a mutation tool.
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 front-loaded with the core purpose in the first sentence, followed by conditional behavior and usage guidance. Every sentence adds value without redundancy, making it efficient and easy to parse for an AI agent.
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, no output schema, and a mutation tool with 0 parameters, the description covers the basic operation and usage well. However, it lacks details on return values, error cases, or side effects, which would enhance completeness for a tool that modifies files.
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 0 parameters with 100% coverage, so no parameters need documentation. The description adds context about the tool's behavior regarding file existence and content handling, which compensates for the lack of parameter details. Baseline is 4 for 0 parameters, as it provides useful operational context.
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 ('Append content to the end of an existing file') and the resource ('file'), distinguishing it from siblings like vault_create_file (creates new), vault_delete_file (removes), vault_patch_file (modifies), and vault_get_file (reads). The phrase 'without replacing existing content' further differentiates it from overwrite 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 explicitly states when to use this tool ('Use this to add content without replacing existing content') and provides a clear alternative scenario ('If the file doesn't exist, it will be created'), which distinguishes it from vault_create_file for new files. It also implies when not to use it (e.g., for overwriting or reading files).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_create_fileA
Create a new file in the vault or completely replace an existing file's content. Use this when you want to write the entire file content at once.
| 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. It discloses key behavioral traits: it can create new files or overwrite existing ones, and it writes content atomically. However, it doesn't cover aspects like error handling (e.g., if the vault is full), permissions required, or whether the operation is idempotent, leaving gaps in behavioral context.
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 two sentences with zero waste: the first states the purpose and scope, and the second provides usage guidance. It is front-loaded with the core action and efficiently conveys essential information 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 the tool's complexity (a write operation with no annotations and no output schema), the description is minimally adequate. It covers the basic action and usage context but lacks details on behavioral aspects like error conditions or return values. For a mutation tool without annotations, more completeness would be beneficial.
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 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately adds no parameter details, focusing on usage instead. This meets the baseline for zero parameters, as it doesn't introduce unnecessary complexity.
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 ('Create a new file' and 'completely replace an existing file's content') and resource ('in the vault'), making the purpose unambiguous. It distinguishes from sibling 'vault_append_to_file' by emphasizing 'entire file content at once' versus partial updates, though it doesn't explicitly name all siblings like 'vault_patch_file'.
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?
It provides clear context on when to use ('when you want to write the entire file content at once'), which implicitly distinguishes it from 'vault_append_to_file' for partial updates. However, it lacks explicit exclusions or comparisons to other siblings like 'vault_patch_file' or 'vault_get_file', and doesn't mention prerequisites like file existence or permissions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_delete_fileA
Delete a file from the Obsidian vault. This operation cannot be undone.
| 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 effectively communicates that this is a destructive operation ('Delete') and adds crucial context about irreversibility ('cannot be undone'), which is valuable beyond basic function. However, it lacks details on permissions, error handling, or what happens if the file doesn't exist.
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 two sentences that are front-loaded with the core action and followed by a critical warning. Every word earns its place, with no redundancy or unnecessary elaboration, making it highly efficient 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 destructive nature and lack of annotations or output schema, the description is somewhat complete but has gaps. It covers the irreversible action but omits details like expected outcomes, error conditions, or how it interacts with the vault system. For a deletion tool, more context on behavior would be beneficial.
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 0 parameters with 100% coverage, so the schema fully documents the lack of parameters. The description does not add parameter-specific information, which is appropriate here. Baseline is 4 for 0 parameters, as the description need not compensate for any 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 specific action ('Delete') and resource ('a file from the Obsidian vault'), distinguishing it from sibling tools like vault_create_file, vault_get_file, and vault_patch_file. It precisely communicates what the tool does without being vague or tautological.
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 clear context by stating 'This operation cannot be undone,' which implies when to use it cautiously. However, it does not explicitly mention when to use this tool versus alternatives like vault_patch_file for modifications or vault_get_file for reading, nor does it specify prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_get_fileA
Get the content of a file from the Obsidian vault. Can return raw markdown, parsed JSON with metadata (tags, frontmatter, stats), or a document map showing headings, blocks, and frontmatter fields.
| 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 describes the return formats (raw markdown, parsed JSON, document map) but lacks critical details such as error handling (e.g., if the file doesn't exist), authentication needs, rate limits, or whether it's a read-only operation. This leaves significant gaps for an agent to use it safely.
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, well-structured sentence that efficiently conveys the tool's purpose and return options without any redundant information. It is front-loaded with the core action and resource, making it easy to parse.
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 (a file retrieval tool with multiple return formats) and the absence of annotations and output schema, the description is partially complete. It explains what the tool does and the return formats, but it misses behavioral details like error handling or usage context, leaving room for improvement in guiding an agent effectively.
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 0 parameters with 100% coverage, so no parameter information is needed. The description adds value by explaining the return formats (raw markdown, parsed JSON, document map), which compensates for the lack of an output schema, justifying a score above 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 specific action ('Get the content of a file') and resource ('from the Obsidian vault'), distinguishing it from siblings like vault_list (listing files) or vault_create_file (creating files). It also specifies the types of content that can be returned, which adds precision.
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 search_advanced or search_simple for finding files, or vault_patch_file for modifying content. It mentions return formats but does not specify scenarios or prerequisites for choosing this tool over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_listA
List files and directories in the Obsidian vault. Returns a formatted list showing directories (ending with /) and files. Use this to explore the vault structure.
| 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. It discloses the return format ('formatted list showing directories (ending with /) and files'), which is helpful behavioral context. However, it doesn't mention potential limitations like pagination, sorting, filtering options, or error conditions that might occur.
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 perfectly concise with two sentences that each earn their place: the first states what the tool does and returns, the second provides usage guidance. No wasted words, and the most important information (the listing function) is front-loaded.
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 listing tool with no parameters and no output schema, the description provides adequate context about what it does and when to use it. However, without annotations or output schema, it could benefit from more detail about the return format (e.g., structure of the formatted list) or any behavioral constraints.
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 baseline is 4. The description appropriately doesn't waste space discussing parameters that don't exist, maintaining focus on the tool's purpose and behavior.
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 ('files and directories in the Obsidian vault'), and distinguishes it from siblings by specifying it's for exploring vault structure rather than searching or modifying files. It explicitly mentions what it returns ('formatted list showing directories (ending with /) and files').
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 clear context for when to use this tool ('to explore the vault structure'), which implicitly differentiates it from search tools (for finding content) and file manipulation tools. However, it doesn't explicitly state when NOT to use it or name specific alternatives among the siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_patch_fileA
Partially update a file by inserting content relative to a heading, block reference, or frontmatter field. Operations: append (after target), prepend (before target), or replace. Useful for updating specific sections without rewriting the entire file.
| 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 full burden but only mentions the 'useful for' benefit without disclosing critical behavioral traits. It doesn't address permissions needed, whether operations are atomic/reversible, error conditions, or what happens if targets don't exist. For a mutation tool with zero annotation coverage, this is a significant gap.
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 well-structured sentences with zero waste. The first sentence explains the core functionality with precise terminology, and the second sentence provides the practical use case. Every word earns its place.
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 this is a mutation tool with no annotations and no output schema, the description should do more to explain behavioral implications and expected outcomes. While it adequately explains the purpose and use case, it lacks information about permissions, error handling, and what constitutes success/failure for this partial update 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?
The input schema has 0 parameters with 100% coverage, so the baseline would be 3. However, the description adds meaningful context about the expected operations (append, prepend, replace) and targeting mechanisms (heading, block reference, frontmatter field), which provides valuable semantic understanding beyond the empty schema.
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 specific action ('Partially update a file') with precise operations (append, prepend, replace) and targeting mechanisms (heading, block reference, frontmatter field). It distinguishes from siblings like vault_append_to_file (which only appends) and vault_create_file (which creates new files).
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 clear context for when to use this tool ('updating specific sections without rewriting the entire file'), which implicitly suggests alternatives like vault_create_file for full rewrites. However, it doesn't explicitly state when NOT to use it or name specific sibling alternatives beyond what's implied.
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.
8 tool updates
v1.0.0- First observed
search_advanced - First observed
search_simple - First observed
vault_append_to_file - First observed
vault_create_file - First observed
vault_delete_file - First observed
vault_get_file - First observed
vault_list - First observed
vault_patch_file
TDQS
Scored across 8 tools
Every tool has a clearly distinct purpose with no ambiguity. The two search tools are well-differentiated (advanced vs. simple), and the file operation tools each handle specific actions (create, get, append, patch, delete, list) without overlap. Descriptions clearly indicate when to use each tool.
All tools follow a consistent verb_noun pattern with snake_case throughout. The 'vault_' prefix groups related file operations, while 'search_' prefixes distinguish query tools, creating a predictable and readable naming convention across all 8 tools.
8 tools is well-scoped for an Obsidian vault management server. This provides complete coverage for core operations (search, file CRUD, vault exploration) without being overwhelming. Each tool earns its place with clear utility for the domain.
The toolset provides complete coverage for Obsidian vault operations. It includes search capabilities (simple and advanced), full file lifecycle management (create, get, append, patch, delete), and vault exploration (list). No obvious gaps exist for the stated purpose of managing an Obsidian vault.
Related MCP Connectors
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…
Search and reason over your Obsidian-style Markdown vault, right from ChatGPT.
Search, read, and write your Apple Notes from ChatGPT/Claude via a local Mac agent + MCP relay.