md-reader-mcp
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., "@md-reader-mcpsearch my notes for 'budget' and list the results"
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.
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
Markdown Reader ▸ Preferences ▸ Local API — turn it On. It shows a URL (
http://127.0.0.1:41100by default) and a bearer token.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-mcpKeep Markdown Reader running while you use the tools.
Related MCP server: ai-brain
Tools
Tool | What it does |
| the servers configured in the app |
| add a NAS / server (name, protocol, host, credentials…) |
| manage a connection |
| the Markdown tree under a folder |
| content + front matter + tags (+ |
| create or overwrite a note |
| full-text search |
| notes that link to a given note |
| every |
| 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_noteoverwrites. Run your MCP client so it confirms tool calls if you want a checkpoint before writes.
License
MIT © Vasyl Madei
Available Tools
11 toolsadd_connectionAdd a server connectionA
Add a NAS / server connection to Markdown Reader. The password is stored in the OS keychain by the app.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | ||
| name | Yes | A label for this connection | |
| port | No | ||
| share | No | SMB share name | |
| domain | No | SMB domain, if any | |
| secure | No | Use TLS for WebDAV | |
| basePath | No | Folder to treat as the root | |
| password | No | ||
| protocol | Yes | ||
| username | No |
TDQS
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.
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.
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.
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.
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.
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.
backlinksBacklinksA
List the notes that link to a given note (Markdown links or [[wikilinks]]).
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the note within the connection, e.g. /notes/todo.md | |
| connection | Yes | The connection id (from list_connections) |
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 implies a read-only operation but does not explicitly state safety, permissions, or edge cases such as whether the search is scoped to the current connection or if it returns an empty list. It is adequate 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the purpose and includes the key detail about link types. Every word earns its place with no 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?
For a simple listing tool, the description explains what it does but omits output format details (e.g., whether it returns paths, titles, or IDs) since there is no output schema. It also doesn't mention any limitations or prerequisites. Given the simplicity, it is minimally adequate but leaves some gaps for an agent to infer.
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 schema descriptions for both parameters (path and connection) are detailed and self-explanatory (e.g., path includes an example). The tool description adds no additional meaning beyond the schema, so the baseline of 3 applies given the 100% 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 action ('List the notes that link to a given note') and specifies the link types (Markdown links or [[wikilinks]]), which distinguishes it from sibling tools like list_notes and search_notes. The verb and resource are 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?
The description provides no guidance on when to use this tool versus alternatives like search_notes or list_notes. There are no explicit exclusions or context cues, leaving the agent to infer appropriate usage.
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).
| 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 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Folder, default the root | |
| connection | Yes | The connection id (from list_connections) |
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 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| connection | Yes | The connection id (from list_connections) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the note within the connection, e.g. /notes/todo.md | |
| render | No | Also return rendered HTML | |
| connection | Yes | The connection id (from list_connections) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The connection id (from list_connections) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| markdown | Yes |
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 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| connection | Yes | The connection id (from list_connections) |
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 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The connection id (from list_connections) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the note within the connection, e.g. /notes/todo.md | |
| content | Yes | ||
| connection | Yes | The connection id (from list_connections) |
TDQS
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.
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.
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.
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.
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.
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.
11 tool updates
v0.1.0- First observed
add_connection - First observed
backlinks - First observed
list_connections - First observed
list_notes - First observed
list_tags - First observed
read_note - First observed
remove_connection - First observed
render_markdown - First observed
search_notes - First observed
test_connection - First observed
write_note
TDQS
Scored across 11 tools
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.
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.
11 tools is well-scoped for a note-taking server with connection management. Each tool serves a distinct, practical function without unnecessary bloat.
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
Related MCP Connectors
Markdown-based note-taking with a hosted MCP server. Your notes serve you and your AI.
Personal context for every AI: search, read, and write back to your private Markdown library of articles, threads, PDFs, notes, and captured ChatGPT/Claude/Gemini/Grok conversations. OAuth 2.1 paste-and-authorize or revocable tiered Agent keys (read_only / edit / full). Every agent edit is versioned and revertible.
Markdown workspace for AI agents: read, write, organize, and share markdown documents.
One memory, every AI. A shared, user-owned markdown memory your AI clients read and write over MCP.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to search, read, and analyze Obsidian notes via the Local REST API.19 npm18ISC
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants like Claude and Codex to read, write, search, and traverse Markdown notes stored in a self-hosted knowledge base.4 npmMIT
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to search, read, create, update, and remove personal markdown notes stored locally, providing persistent memory across sessions.95 npm2MIT
- FlicenseNot gradedqualityBmaintenanceProvides controlled, read-only or write-enabled access to a private local Yaps Markdown vault, enabling AI clients to search, read, and manage notes securely.-