obsidian-mcp
Server Quality Checklist
Latest release: v0.1.0
- Disambiguation4/5
Most tools are clearly distinct: list_files lists all files, find_files searches by filename, find_in_all_file_content searches content, and get_file_content reads a specific file. The only potential confusion is between list_files and find_files, but their descriptions clarify the difference.
Naming Consistency4/5All tool names use snake_case and follow a verb_noun pattern (list_files, get_file_content, find_files). One name, find_in_all_file_content, is more verbose but still consistent in style.
Tool Count4/5Four tools is a reasonable count for a read-only Obsidian Vault server. The scope is narrow but sufficient for listing, retrieving, and searching files.
Completeness4/5The tool set covers the common read operations for a Vault: listing files, reading content, and searching by name or content. Missing write operations like create/update/delete, but for a read-only server the surface is functional.
Average 4.8/5 across 4 of 4 tools scored.
See the Tool Scores section below for per-tool breakdowns.
- No community issues in the last 6 months
- No commit activity data available
- No stable releases found
- No critical vulnerability alerts
- No high-severity vulnerability alerts
- No code scanning findings
- CI status not available
This repository is licensed under Apache 2.0.
This repository includes a README.md file.
No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.
Tip: use the "Try in Browser" feature on the server page to seed initial usage.
Add a glama.json file to provide metadata about your server.
If you are the author, simply .
If the server belongs to an organization, first add
glama.jsonto the root of your repository:{ "$schema": "https://glama.ai/mcp/schemas/server.json", "maintainers": [ "your-github-username" ] }Then . Browse examples.
Add related servers to improve discoverability.
How to sync the server with GitHub?
Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.
To manually sync the server, click the "Sync Server" button in the MCP server admin interface.
How is the quality score calculated?
The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).
Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.
Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).
Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.
Tool Scores
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the full burden and does well by disclosing that only text files are supported and binary files will return an encoding error. It also clarifies the return behavior (full text or error message), which is useful. The description does not mention any side effects or permissions, but for a read operation this is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with Args, Returns, and Note sections. It is slightly verbose (e.g., 'This parameter is REQUIRED' is redundant with the schema), but every part adds informative value, and it remains succinct overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has one parameter and an output schema, yet the description still explains the input format, provides examples, and notes limitations. It fully covers what the agent needs to invoke the tool correctly and interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no description for file_path (0% coverage), but the description more than compensates by explaining it must be a relative path from the vault root, giving examples, and emphasizing it is required. This adds significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads a file's content from the Obsidian Vault. It uses a specific verb ('Get') and resource ('file'), and the sibling tools (list_files, find_files, find_in_all_file_content) are distinct enough to avoid confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
It instructs users to use the exact path format returned by list_files() or find_files(), which gives clear context for how to obtain the required input. It does not explicitly say when to use this tool versus alternatives, but the purpose is so narrow that the guidance is adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does well: it discloses the output format (newline-separated list), the path relativity (relative to vault root), and the exclusion of system directories like .obsidian. It also provides a concrete example, giving clear behavioral expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: the first sentence states the core function, followed by return format details, a usage hint, an exclusion note, and an example. Every sentence contributes valuable information without unnecessary fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, zero-parameter read-only listing tool, the description is complete. It explains the return format, path convention, exclusions, and how to use the output with get_file_content(). The output schema further supports completeness, but the description alone would suffice.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline for this dimension is 4. The description appropriately adds no parameter details since there are none to explain, and the empty schema fully covers the parameter space.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'List all files in the Obsidian Vault and return their paths' which clearly identifies the specific verb, resource, and scope. It distinguishes from siblings like get_file_content and find_files by focusing on the full listing of files and their paths.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by indicating this is the exhaustive listing tool, and it provides a follow-up instruction to use paths with get_file_content(). However, it does not explicitly mention when to use this tool instead of find_files or find_in_all_file_content, so it lacks explicit exclusion or alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It discloses case-insensitive matching, return type (list of relative paths), the return message when no matches are found, and that it does not search file contents. This gives the agent a solid behavioral model, though it doesn't explicitly state that the operation is read-only (which is easily inferred from the search nature).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a well-structured docstring with clear Args, Returns, and Note sections. It front-loads the main purpose in the first sentence and each subsequent line adds essential detail. The examples are useful without being excessive.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, and the description covers all necessary context: purpose, query semantics, return format, no-match behavior, and an explicit alternative for content searches. Even though an output schema exists, the description already provides the relevant return details, making it complete for an agent to select and invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema only defines 'query' as a string with no explanation. The description compensates richly by explaining that it is case-insensitive, can be a partial filename, extension, or keyword, and provides concrete examples ('meeting', '.md', 'project-alpha'). This is far beyond the schema and gives the agent actionable guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Find files in the Obsidian Vault that match a query and return the file paths.' This specifies the verb (find), resource (files in the Obsidian Vault), and output (file paths). It also distinguishes from sibling tools by naming find_in_all_file_content() as the alternative for content searches.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Searches only file names/paths, not file contents. Use find_in_all_file_content() to search within file contents.' This provides a clear when-to-use/when-not-to-use rule and names the specific alternative tool, which is exactly what the dimension requires.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: case-insensitive search, returns newline-separated paths only (not excerpts), returns a message when no matches, searches all readable files, and skips binary files. This goes beyond a simple 'find' and sets correct expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear Args, Returns, and Note sections. The first sentence gives the core purpose, and all subsequent information is necessary and directly useful. No redundant or vague wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no annotations, the description covers all essential aspects: what it does, how to use the parameter, return format, edge cases (no matches, binary files), and integration with sibling tools. It is complete without being verbose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the schema only defines 'query' as a string with 0% coverage, the description compensates thoroughly: explains case-insensitivity, accepts words/phrases/partial text, and provides concrete examples. This adds significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool finds a query in the content of all files and returns file paths. It uses a specific verb (find), defines the resource (file contents), and distinguishes itself from sibling tools like find_files (filename search) and get_file_content (reading files).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'For filename searches, use find_files() instead', providing a clear alternative. It also advises using get_file_content() on returned paths, showing how to combine tools effectively.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GitHub Badge
Glama performs regular codebase and documentation scans to:
- Confirm that the MCP server is working as expected.
- Confirm that there are no obvious security issues.
- Evaluate tool definition quality.
Our badge communicates server capabilities, safety, and installation instructions.
Card Badge
Copy to your README.md:
Score Badge
Copy to your README.md:
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/MichaelAnckaert/obsidian-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server