Skip to main content
Glama
vasylm1

md-reader-mcp

by vasylm1

md-reader-mcp

A Model Context Protocol server that gives an AI client (Claude Desktop, Claude Code, …) structured access to your Markdown notes on a NAS — read, search, write, tags, backlinks, and rendering — through the local API of the Markdown Reader & Editor desktop app.

The app is the hub: connections (SMB / SFTP / FTP / WebDAV, e.g. a ZimaOS box) are configured there, passwords live in your OS keychain, and this server is a thin bridge over the app's 127.0.0.1 API.

Setup

  1. Markdown Reader ▸ Preferences ▸ Local API — turn it On. It shows a URL (http://127.0.0.1:41100 by default) and a bearer token.

  2. Add this server to your MCP client. For Claude Desktop (claude_desktop_config.json):

    {
      "mcpServers": {
        "md-reader": {
          "command": "npx",
          "args": ["-y", "md-reader-mcp"],
          "env": {
            "MDR_API_URL": "http://127.0.0.1:41100",
            "MDR_API_TOKEN": "paste-the-token-from-preferences"
          }
        }
      }
    }

    For Claude Code: claude mcp add md-reader -e MDR_API_TOKEN=… -- npx -y md-reader-mcp

  3. Keep Markdown Reader running while you use the tools.

Related MCP server: ai-brain

Tools

Tool

What it does

list_connections

the servers configured in the app

add_connection

add a NAS / server (name, protocol, host, credentials…)

remove_connection / test_connection

manage a connection

list_notes

the Markdown tree under a folder

read_note

content + front matter + tags (+ render: true for HTML)

write_note

create or overwrite a note

search_notes

full-text search

backlinks

notes that link to a given note

list_tags

every #tag / front-matter tag with counts

render_markdown

render arbitrary Markdown with the app's engine

Notes

  • The API is 127.0.0.1-only and token-gated. This server never sees your passwords — only the token, which you can regenerate in Preferences.

  • write_note overwrites. Run your MCP client so it confirms tool calls if you want a checkpoint before writes.

License

MIT © Vasyl Madei

Available Tools

11 tools
add_connectionAdd a server connectionA

Add a NAS / server connection to Markdown Reader. The password is stored in the OS keychain by the app.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostYes
nameYesA label for this connection
portNo
shareNoSMB share name
domainNoSMB domain, if any
secureNoUse TLS for WebDAV
basePathNoFolder to treat as the root
passwordNo
protocolYes
usernameNo

TDQS

A3.6/5.0
Behavior3/5

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

It discloses that the password is stored in the OS keychain, which is a security-related behavior. However, it does not mention other potential behaviors such as overwriting an existing connection or validation steps.

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 a single sentence that is concise and front-loaded with the primary action. It contains no filler or redundant information.

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 provides enough context for a basic add operation, but it could benefit from mentioning whether it overwrites existing connections or if it validates the connection. Overall it is adequate for its scope.

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 description does not add any parameter-specific details. The schema provides descriptions for only 5 of 10 parameters (50%), and the description contributes no additional meaning beyond that.

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 (add) and the resource (NAS/server connection). It is distinguished from sibling tools like remove_connection and test_connection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool or provide alternatives. It implies adding a connection but lacks explicit guidance on when to choose it over other connection-related tools.

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

list_connectionsList server connectionsA

List the NAS / server connections configured in Markdown Reader (no passwords).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/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 the full burden. It discloses that passwords are not returned, which is a useful safety note, but it doesn't disclose other behavioral traits like whether it returns empty lists or what fields are included. For a trivial tool, this is acceptable but not rich.

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?

A single sentence with no redundancy, front-loaded with the verb and scope, and the caveat about passwords is concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter list tool with no output schema, the description is complete: it states the subject (NAS/server connections) and the key caveat (no passwords). The sibling tools provide context, so nothing essential is missing.

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?

The tool has zero parameters, so the schema is empty and the description clarifies the subject of the list. Since there are no parameters to document, baseline 4 applies.

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?

States a specific verb (list) and resource (NAS/server connections configured in Markdown Reader), and explicitly notes that passwords are excluded, distinguishing it from related tools like add/remove/test connections.

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 implies usage for viewing existing connections, and the sibling tools (add, remove, test) make the context clear. However, it doesn't explicitly state when not to use it, so it falls short of a 5.

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

list_notesList notesA

List the Markdown files (as a tree) under a folder on a connection.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoFolder, default the root
connectionYesThe connection id (from list_connections)

TDQS

A4/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 the full burden. It discloses that the result is a tree of Markdown files, but does not mention read-only behavior, pagination, sorting, error cases, or any side effects. Basic but minimal.

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?

One concise sentence with no redundant words. The description is tightly scoped and immediately understandable.

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?

For a simple listing tool with no output schema, the description provides enough context (Markdown files, tree structure, folder scope) to understand what will happen. It could mention output format or sorting, but it is not needed for basic usage.

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?

Both parameters are described in the schema with 100% coverage. 'path' is explained as a folder with a default root, and 'connection' references list_connections. The descriptions add useful context beyond just the names.

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?

Clearly states the verb 'List' and the specific resource 'Markdown files' with a scoped location ('under a folder on a connection'). This distinguishes it from sibling tools like read_note, write_note, and search_notes, so the purpose is unmistakable.

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?

Usage is implied but not explicit. The description does not contrast with search_notes (e.g., 'use this to browse, use search_notes to find by content'), so the when-to-use guidance is only inferred from the tool name and sibling context.

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

list_tagsList tagsB

Every #tag and front-matter tag across a connection, with counts and file lists.

ParametersJSON Schema
NameRequiredDescriptionDefault
connectionYesThe connection id (from list_connections)

TDQS

B3.4/5.0
Behavior2/5

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

No behavioral traits are disclosed, such as read-only nature, side effects, or permissions. With no annotations provided, the description carries the burden and remains silent on these aspects.

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 a single, concise sentence with the key purpose front-loaded. Every word contributes to the meaning without unnecessary detail.

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?

For a simple list operation, the description is fairly complete, mentioning output characteristics (counts and file lists). It does not specify an output format, but no output schema exists, so this is acceptable.

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?

Schema coverage is 100% for the connection parameter, so the baseline is 3. The description adds minimal context by mentioning 'across a connection' but does not significantly enhance the parameter meaning.

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 lists tags with counts and file lists, using a specific verb and resource. It is distinct from sibling tools like list_notes or search_notes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool versus alternatives. It is implied that it is for tag listing, but no direct comparison or condition is provided.

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

read_noteRead a noteA

Read a Markdown note. Returns its content, front matter, tags, and optionally HTML.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to the note within the connection, e.g. /notes/todo.md
renderNoAlso return rendered HTML
connectionYesThe connection id (from list_connections)

TDQS

A4.2/5.0
Behavior4/5

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

The word 'Read' clearly indicates a non‑destructive operation, and the description lists what is returned. No annotations exist, but the read intent covers the primary behavioral aspect for a read‑only 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?

A single sentence that delivers all necessary information without redundancy; the purpose is front‑loaded and every phrase contributes meaning.

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?

For a simple read operation with no output schema, listing the returned data (content, front matter, tags, optional HTML) is adequate. It does not cover error cases, but that is not critical for a read‑only tool in this context.

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 three parameters (path, render, connection). The description adds value by explaining the 'render' parameter's optional HTML output, while 'path' and 'connection' are sufficiently clear from their 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?

Clearly states the verb 'Read', the resource 'Markdown note', and specifies the returned data (content, front matter, tags, optional HTML), making the purpose unambiguous and distinct from write or search operations.

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 use when reading a note, but does not explicitly contrast with sibling tools like render_markdown or search_notes, leaving the choice between alternatives somewhat inferential.

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

remove_connectionRemove a server connectionA

Delete a connection (and its stored password) from Markdown Reader.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe connection id (from list_connections)

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It transparently discloses that the stored password is also deleted, which is a meaningful side effect. However, it does not mention irreversibility or any other potential consequences.

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 a single, concise sentence that includes all essential information without any redundancy or extraneous detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple deletion tool with one parameter and no return value schema, the description fully covers what the tool does and what input is needed. No additional context is necessary for an agent to invoke it correctly.

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?

The parameter description provides useful context by indicating that the id comes from list_connections, which helps the agent source the correct value. Since schema coverage is 100% and the description adds beyond a bare 'id', a score above baseline is warranted.

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 ('Delete') and the resource ('a connection'), and explicitly mentions that the stored password is also removed. This fully distinguishes the tool from siblings like add_connection or test_connection.

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 through the verb 'Delete' but does not provide explicit guidance on when to use this tool versus alternatives or any cautionary notes. No mention of when-not to use.

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

render_markdownRender MarkdownA

Render arbitrary Markdown to HTML using Markdown Reader’s engine (GitHub alerts, KaTeX, tags, task lists). Also returns front matter and tags.

ParametersJSON Schema
NameRequiredDescriptionDefault
markdownYes

TDQS

A4.3/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 clearly states the output includes HTML, front matter, and tags, and that it handles arbitrary Markdown. It also mentions the engine's capabilities. It does not describe error handling or side effects, but for a pure rendering tool this is adequate. No contradictions 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 a single sentence with a parenthetical listing features, and it front-loads the primary action. Every word adds value—no filler, no repetition. It is appropriately sized for the tool's simplicity.

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?

For a simple one-parameter tool with no output schema, the description is nearly complete. It states the input, the operation, and the return contents (HTML, front matter, tags). It does not mention potential limitations like size limits or error behavior, but given the tool's simplicity and the distinct nature of siblings, nothing essential is missing.

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

Parameters5/5

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

Schema coverage is 0%, so the description must compensate. It names the single parameter implicitly ('arbitrary Markdown') and makes it clear that the 'markdown' field is the input to render. This adds meaning beyond the schema's bare 'string' type, fully clarifying what the parameter represents.

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 verb 'Render' and the resource 'arbitrary Markdown to HTML'. It names the engine and specific features (GitHub alerts, KaTeX, tags, task lists), and distinguishes itself from sibling tools which all operate on notes/connections rather than rendering. An agent can immediately tell this is a conversion utility, not a CRUD operation.

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 alternatives are mentioned. The description implies it should be used when you need to convert Markdown to HTML, but it doesn't state exclusions or situations where another tool would be preferred. Since all siblings are note/connection operations, the purpose itself provides clear differentiation, but the guidance is not explicitly stated.

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

search_notesSearch notesB

Full-text search across the Markdown files on a connection.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
connectionYesThe connection id (from list_connections)

TDQS

B3.2/5.0
Behavior2/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 only states that the tool performs full-text search, but it does not reveal what the result looks like (e.g., matching note IDs, snippets, relevance scores), whether results are paginated, or any performance implications. The read-only nature is implied but never stated.

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 a single, concise sentence that front-loads the tool's core purpose without any extraneous words. It is efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (2 required params, no nested objects), but with no output schema and no annotations, the description should explain the return format. It does not mention what the results contain, how they are ordered, or any limits. This leaves an agent unsure about how to interpret the response, making the definition incomplete.

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 schema describes 'connection' but leaves 'query' undocumented. The description adds meaning by indicating that the search is full-text, which clarifies that 'query' is a free-text search term. However, it does not specify syntax, case sensitivity, or wildcard support, so it only partially compensates for the 50% schema coverage gap.

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 states a specific verb ('full-text search'), a clear resource ('Markdown files'), and a scope ('on a connection'). It clearly distinguishes itself from sibling tools like list_notes and read_note by focusing on content-based search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit guidance on when to use this tool versus alternatives, nor does it mention any exclusions or prerequisites. While the purpose is obvious from the name, the description does not proactively route the agent to or away from any sibling tools.

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

test_connectionTest a server connectionB

Check that a configured connection can reach its server.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe connection id (from list_connections)

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden of behavioral disclosure. The description states the purpose but does not mention return format, side effects, whether the operation is read-only, or what happens on failure. An agent has no idea what to expect as a response, which is a significant gap for a tool with no output schema.

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 a single, concise sentence that front-loads the purpose without any fluff. It is appropriately sized for the tool's simplicity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite the tool's low complexity, the description is incomplete: it does not disclose the success/failure behavior, return value, or whether the operation is read-only. With no output schema and no annotations, this leaves the agent without critical information needed to correctly invoke and interpret the tool.

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?

Schema coverage is 100%—the single 'id' parameter is fully described as 'The connection id (from list_connections)'. The tool description adds no additional parameter meaning beyond the schema, so it meets the baseline for high schema coverage without enhancing it.

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 (check), the object (configured connection), and the specific outcome (can reach its server). It is distinct from siblings like list_connections and add_connection, which are about listing and adding connections, not testing connectivity.

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 the tool is for verifying connectivity but does not explicitly state when to use it versus alternatives, nor does it provide conditions or exclusions. Since no other testing tool exists among siblings, the intended usage is somewhat self-evident but still lacks explicit guidance.

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

write_noteWrite a noteB

Create or overwrite a Markdown note with the given content.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to the note within the connection, e.g. /notes/todo.md
contentYes
connectionYesThe connection id (from list_connections)

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It indicates a write operation but does not mention permissions, side effects, error behavior, or return values. This is minimal and leaves significant ambiguity 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads the action and resource. No filler or redundancy.

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?

For a simple write tool with three parameters, the description and schema cover the essential intent but lack details on expected output, error handling, and content specifics. This leaves some gaps for an agent to fully understand the call.

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?

Schema coverage is 67% (path and connection have descriptions; content does not). The description adds the 'Markdown' context for content, but does not elaborate on content format or connection requirements beyond what the schema provides. It adds some value but does not fully compensate for the missing content description.

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 states a specific verb 'Create or overwrite' on a 'Markdown note' with content, which clearly distinguishes it from siblings like read_note or list_notes. The resource and action are unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives. It does not mention when to use write_note instead of read_note or list_notes, leaving the agent to infer from sibling names alone.

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.

  1. 11 tool updatesv0.1.0
    • First observedadd_connection
    • First observedbacklinks
    • First observedlist_connections
    • First observedlist_notes
    • First observedlist_tags
    • First observedread_note
    • First observedremove_connection
    • First observedrender_markdown
    • First observedsearch_notes
    • First observedtest_connection
    • First observedwrite_note

TDQS

A3.8/5.0

Scored across 11 tools

Disambiguation4/5

Most tools have clear, distinct purposes. Minor overlap exists between read_note and render_markdown (both can return note content/HTML), but overall the query, write, and connection-management tools are clearly separated.

Naming Consistency4/5

Names mostly follow a consistent verb_noun pattern (list_notes, read_note, write_note, add_connection). The exception is 'backlinks', which is a noun rather than a verb_noun, making it slightly inconsistent.

Tool Count5/5

11 tools is well-scoped for a note-taking server with connection management. Each tool serves a distinct, practical function without unnecessary bloat.

Completeness4/5

Core note workflows (read, write, search, list, render, tags, backlinks) and connection lifecycle (add, remove, list, test) are covered. Missing explicit delete/rename note operations, though overwriting via write_note mitigates this gap.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI assistants to search, read, create, update, and remove personal markdown notes stored locally, providing persistent memory across sessions.
    95 npm
    2
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Provides controlled, read-only or write-enabled access to a private local Yaps Markdown vault, enabling AI clients to search, read, and manage notes securely.
    -