This MCP server provides structured, semantic editing of Markdown files by understanding document hierarchy rather than treating files as plain text.
Document Navigation & Discovery:
Parse Markdown files into hierarchical JSON trees showing structure (headings, paragraphs, lists)
Search for text semantically and get element paths (e.g., "Section > paragraph 2")
Read specific elements by their semantic path
View elements with immediate neighbors for context
Search through 15 available tools using natural language queries
Semantic Content Editing:
Replace content of specific blocks without affecting the rest of the document
Insert new elements (headings, paragraphs, lists, code blocks, blockquotes) at precise locations
Move structural blocks and their children to reorganize hierarchy
Delete specific elements by semantic path
Undo last N operations to revert changes
Metadata Management:
Update or add YAML Frontmatter for tools like Obsidian and Jekyll
File System Operations:
List, create, and delete files and directories
Key Advantages: Works with semantic paths instead of line numbers, enables precise edits without rewriting entire files, and is fully MCP 2025 compliant with Tool Search, Examples, Output Schemas, and Dynamic Capabilities.
Supports YAML frontmatter management for Jekyll documents, enabling updates to metadata fields used by Jekyll static site generator.
Provides structured, semantic editing tools for Markdown files, including document structure navigation, content search and replacement, element manipulation (insert, delete, move), YAML frontmatter management, and undo functionality.
Supports YAML frontmatter management for Obsidian notes, allowing manipulation of metadata like tags, dates, and properties used by Obsidian.
Click on "Install 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., "@Markdown Editor MCP Serversearch for 'deadlines' in my project notes and show me the structure around it"
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.
Markdown Editor MCP Server
MCP server providing tools for structured, semantic editing of Markdown files. Unlike standard text editors, this server understands the logical structure of your documents.
Fully compliant with MCP 2025 Standard - includes Tool Search, Examples, Output Schemas, and Dynamic Capabilities.
Installation
From PyPI (recommended)
From source
Claude Desktop Configuration
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
Available Tools
Discovery & Scaling
Why LLMs need this: With 15 tools available, finding the right one can be challenging. This meta-tool helps discover which tool to use for a specific task.
What it does: Searches through all available tools and returns the most relevant ones based on your query.
Parameters:
query(required): Description of what you want to do
Example:
Semantic Editing
Why LLMs need this: Large Markdown files are hard to navigate. This tool converts the file into a structural tree, allowing the LLM to understand the hierarchy of headings, paragraphs, and lists.
What it does: Parses the Markdown file and returns a JSON tree of all elements with their semantic paths.
Parameters:
file_path(required): Path to the .md filedepth: Max depth for the tree (default: 2)
Example:
Why LLMs need this: Instead of scrolling through an entire file, the LLM can search for specific keywords and get exact semantic paths (e.g., Project > Deadlines > paragraph 2).
What it does: Searches the document for text and returns paths to the containing elements.
Parameters:
file_path(required): Path to the filequery(required): Text to search for
Example:
Why LLMs need this: Before editing an element, you often need to see its full content. This tool fetches the complete content of a specific block.
What it does: Returns the full content of an element identified by its path.
Parameters:
file_path(required): Path to the filepath(required): Semantic path to the element
Example:
Why LLMs need this: Overwriting entire files is risky and token-expensive. This tool allows the LLM to replace the content of a specific semantic block without affecting the rest of the document.
What it does: Replaces text in a specific element identified by its path.
Parameters:
file_path(required): Path to the filepath(required): Semantic path (e.g., "Intro > paragraph 1")new_content(required): New text for the block
Example:
Why LLMs need this: Adding new paragraphs, headings, or lists requires understanding document structure. This tool inserts new elements at the right location.
What it does: Inserts a new block (heading, paragraph, list, code block, or blockquote) before or after an existing element.
Parameters:
file_path(required): Path to the filepath(required): Reference element pathelement_type(required): Type (heading, paragraph, list, code_block, blockquote)content(required): Content of the new elementwhere: "before" or "after" (default: "after")heading_level: Level for headings (default: 1)
Example:
Why LLMs need this: Removing specific blocks without affecting surrounding content requires precision. This tool deletes elements by their semantic path.
What it does: Removes a block from the document.
Parameters:
file_path(required): Path to the filepath(required): Semantic path to the element to delete
Example:
Why LLMs need this: Reorganizing a document is complex. This tool lets the LLM move entire sections (including all nested sub-elements) to a new location with a single command.
What it does: Moves a block of text from source path to target path.
Parameters:
file_path(required): Path to the filesource_path(required): Path of element to movetarget_path(required): Reference path for new locationwhere: "before" or "after" the target (default: "after")
Example:
Why LLMs need this: When editing a single block, LLMs might lose the narrative flow. This tool provides the target element along with its immediate neighbors (before and after).
What it does: Fetches an element and snippets of surrounding blocks.
Parameters:
file_path(required): Path to the filepath(required): Path to the target element
Example:
Why LLMs need this: Many Markdown tools (Obsidian, Jekyll) use YAML metadata at the top. This tool allows the LLM to manage tags, dates, and properties without messing with the body text.
What it does: Updates or adds YAML Frontmatter to the document.
Parameters:
file_path(required): Path to the filemetadata(required): Dictionary of metadata items
Example:
Why LLMs need this: Mistakes happen. This tool allows reverting recent operations without manual file restoration.
What it does: Reverts the last N operations on the document.
Parameters:
file_path(required): Path to the filecount: Number of operations to undo (default: 1)
Example:
File Operations
What it does: Lists files and folders in a directory, helping the LLM explore the file structure.
Parameters:
path: Directory path (default: ".")
What it does: Creates a new file with optional initial content.
Parameters:
path(required): Path to the new filecontent: Initial content (default: "")
Example:
What it does: Creates a new directory.
Parameters:
path(required): Path to the new directory
Example:
What it does: Deletes a file or directory.
Development
MCP 2025 Standard Features
This server implements all 2025 MCP improvements:
Tool Search Tool - Efficiently find the right tool among many options
Tool Use Examples - Input parameter examples help LLMs use tools correctly
Output Schemas - Structured output definitions for better client integration
Dynamic Capabilities - Support for
tools/list_changednotifications
If you like this project, please give it a star ⭐