Blog Helper MCP Server
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., "@Blog Helper MCP Serversearch my notes for 'path traversal'"
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.
Blog Helper MCP Server (FastMCP + uv)
Un serveur MCP (Model Context Protocol) d'exemple en Python utilisant FastMCP et géré avec uv.
Ce serveur expose des notes Markdown locales via des Tools et une Resource, avec protection contre les attaques de traversée de chemin (Path Traversal).
📖 Tutoriel Débutant
Pour apprendre à construire ce serveur pas à pas, consultez le guide complet : 👉 Lire le Tutoriel Débutant (tutorial/TUTORIAL.md)
Related MCP server: agent-notes-mcp
🚀 Démarrage rapide
1. Prérequis
uv installé (
curl -LsSf https://astral.sh/uv/install.sh | sh)Python >= 3.10
2. Installation
uv sync3. Exécuter les tests du client MCP
uv run python client_test.py4. Lancer le serveur
uv run python server.py🛠️ Outils & Ressources exposés
Type | Nom / URI | Description |
Tool |
| Liste les fichiers Markdown disponibles dans |
Tool |
| Lit le contenu d'une note spécifique de manière sécurisée |
Tool |
| Recherche les notes contenant un mot-clé |
Resource |
| Expose une note comme ressource de contexte |
🔗 Intégration dans Claude Desktop / Claude Code / Antigravity
Exemple de configuration claude_desktop_config.json ou mcp_config.json :
{
"mcpServers": {
"blog-helper": {
"command": "uv",
"args": [
"--directory",
"/chemin/absolu/vers/blog-helper-mcp",
"run",
"server.py"
]
}
}
}Available Tools
3 toolslist_notesA
Liste l'ensemble des notes Markdown disponibles.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It clearly indicates a read-only listing operation with no destructive intent, but it does not mention output format, ordering, or whether full content or only metadata is returned. The presence of an output schema partially mitigates this 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?
The description is a single, front-loaded sentence with no redundant words. Every part contributes to understanding the tool's basic purpose, and there is no filler or repeated information from the schema.
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 parameterless listing tool, the description is largely sufficient: it states the object, scope, and format. It could additionally clarify how it differs from read_note and search_notes, but given the simplicity and the existence of an output schema, the missing guidance is a minor gap.
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 description needs to explain none. The schema coverage is effectively 100%, and the description adds no unnecessary parameter information. Baseline 4 is appropriate given the absence of 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 uses a clear verb ('Liste') and a specific resource ('notes Markdown disponibles'), and indicates the scope ('l'ensemble'). It is distinguishable from siblings read_note and search_notes by its all-notes scope, though it does not explicitly contrast with them.
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 when-to-use or when-not-to-use guidance is provided. The description implies it is for retrieving all notes, but it never mentions alternatives like read_note for a single note or search_notes for filtered results, so an agent must infer the appropriate choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_noteA
Lit et renvoie le contenu complet d'une note Markdown par son nom de fichier.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the behavioral burden. It states that the operation reads and returns full content, which implies a non-mutating read, but it does not disclose behavior for missing files, filename formats, or potential truncation. It provides basic transparency but not deep 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 a single, front-loaded sentence with no filler. Every element contributes to understanding the tool's purpose and the meaning of its key parameter.
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, has only one required parameter, and includes an output schema, so the description does not need to explain return values. The main missing element is guidance on what happens when the note does not exist or how filenames are resolved, but overall the description is adequate for correct 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 schema only names the parameter 'name' with no description, so the description's phrase 'par son nom de fichier' adds crucial meaning by clarifying that the parameter is a filename. It does not specify whether a full path or extension is required, but for a single-parameter tool this is reasonably sufficient.
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 uses a specific verb 'Lit et renvoie' (reads and returns) with a clear resource: the full content of a Markdown note identified by filename. This distinguishes it from sibling tools like list_notes and search_notes, which would not return file content.
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 clearly implies usage when the caller already knows the note's filename, which is the key selection criterion. It does not explicitly mention list_notes or search_notes as alternatives for discovering filenames, but the context is clear enough for an agent to decide when to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_notesA
Renvoie la liste des noms de notes dont le contenu contient le terme recherché.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the core behavior: returns only note names for notes whose content contains the term. It does not specify matching semantics such as case sensitivity, partial vs. exact matching, or whether titles are excluded from the search.
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, front-loaded sentence with no filler or repetition. Every word contributes to understanding the tool's behavior.
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 search tool with an output schema present, the description is nearly complete: it identifies the input and the returned object (list of note names). It loses a point only because match semantics are not clarified.
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 provides only a string named 'query' with no description. The tool description adds meaning by clarifying that the query is the term searched within note content. However, it does not explain expected format, empty-string handling, or search nuances.
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 (Renvoie), a concrete resource (list of note names), and the selection criterion (note content contains the searched term). This clearly distinguishes it from list_notes and read_note even without naming them.
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 when to use the tool: when you need to find notes by content matching a term. However, it does not explicitly mention alternatives or exclusion cases such as 'use list_notes to get all notes' or 'use read_note to fetch a full note.'
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.
3 tool updates
v0.1.0- First observed
list_notes - First observed
read_note - First observed
search_notes
TDQS
Scored across 3 tools
Each tool serves a distinct purpose: listing, reading, and searching notes. There is no overlap or ambiguity in their functions.
All tools follow the verb_noun pattern, but list_notes and search_notes use plural nouns while read_note uses singular, causing minor inconsistency.
Three tools is on the low end, but for a simple read-only blog notes server, it is borderline acceptable. More tools might be expected for full blog management.
The server only covers reading and searching operations. It lacks create, update, and delete capabilities, which are significant gaps for a blog helper.
Maintenance
Related MCP Connectors
Serve a folder of Markdown notes as an MCP server: hybrid search, reading, and sourced answers.
Markdown-based note-taking with a hosted MCP server. Your notes serve you and your AI.
Search, read, and safely update Markdown notes in your connected Phasoric knowledge vaults.
Read and write your Caliu notes from any MCP client: search, create, tag, remind, attach files.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceAn MCP server that gives AI agents read and write access to a folder of Markdown notes, supporting full-text search, reading, listing, and writing notes. It is deliberately small, with no dependencies beyond the MCP SDK, and includes proper path traversal protection.MIT
- AlicenseNot gradedqualityCmaintenanceLets MCP clients search, read, create, append, replace, move, and batch-update local Markdown notes safely, with conflict detection via SHA-256 and optional managed update blocks, without requiring a vector database.MIT
- FlicenseNot gradedqualityBmaintenanceEnables managing local Markdown notes by creating, viewing, listing, and searching notes and their contents through MCP tools.-
- AlicenseAqualityCmaintenanceEnables managing local Markdown notes and tasks through MCP tools to create, list, read, mark as done, and delete them.5MIT