README
🚀 Markdown编辑器MCP服务器
Markdown编辑器MCP服务器为Markdown文件提供结构化、语义编辑工具。与标准文本编辑器不同,该服务器能够理解文档的逻辑结构。
本服务器完全符合MCP 2025标准,涵盖工具搜索、示例、输出模式和动态功能。
🚀 快速开始
本服务器为Markdown文件提供结构化、语义编辑工具,能理解文档逻辑结构,且完全符合MCP 2025标准。下面将介绍其安装和使用方法。
📦 安装指南
从PyPI安装(推荐)
pip install markdown-editor-mcp-server
从源代码安装
git clone https://github.com/KazKozDev/markdown-editor-mcp-server.git
cd markdown-editor-mcp-server
pip install -e .
Claude桌面配置
在macOS系统中,添加到 ~/Library/Application Support/Claude/claude_desktop_config.json;在Windows系统中,添加到 %APPDATA%\Claude\claude_desktop_config.json:
{
"mcpServers": {
"markdown-editor": {
"command": "markdown-editor-mcp-server"
}
}
}
💻 使用示例
可用工具
发现与扩展
search_tools - 查找合适的工具
大语言模型为何需要此工具:现有15种工具,找到适合特定任务的工具颇具挑战。此元工具可帮助发现合适的工具。
功能:搜索所有可用工具,并根据查询返回最相关的工具。
参数:
query(必需):描述你想要执行的操作
示例:
{"query": "替换文本"}
语义编辑
get_document_structure - 获取文档树
大语言模型为何需要此工具:大型Markdown文件难以导航。此工具将文件转换为结构树,使大语言模型能够理解标题、段落和列表的层次结构。
功能:解析Markdown文件,并返回所有元素及其语义路径的JSON树。
参数:
file_path(必需):.md文件的路径depth:树的最大深度(默认值:2)
示例:
{"file_path": "docs/report.md", "depth": 3}
search_text - 语义搜索和导航
大语言模型为何需要此工具:大语言模型无需滚动浏览整个文件,可搜索特定关键字并获取精确的语义路径(例如,项目 > 截止日期 > 段落2)。
功能:在文档中搜索文本,并返回包含该文本的元素的路径。
参数:
file_path(必需):文件的路径query(必需):要搜索的文本
示例:
{"file_path": "todo.md", "query": "紧急"}
read_element - 读取特定元素
大语言模型为何需要此工具:在编辑元素之前,通常需要查看其完整内容。此工具可获取特定块的完整内容。
功能:返回由路径标识的元素的完整内容。
参数:
file_path(必需):文件的路径path(必需):元素的语义路径
示例:
{"file_path": "notes.md", "path": "特性 > 列表1"}
replace_content - 精确内容替换
大语言模型为何需要此工具:覆盖整个文件存在风险且消耗大量令牌。此工具允许大语言模型替换特定语义块的内容,而不影响文档的其他部分。
功能:替换由路径标识的特定元素中的文本。
参数:
file_path(必需):文件的路径path(必需):语义路径(例如,"简介 > 段落1")new_content(必需):块的新文本
示例:
{"file_path": "readme.md", "path": "安装 > 段落1", "new_content": "只需运行pip install命令。"}
insert_element - 添加新内容
大语言模型为何需要此工具:添加新的段落、标题或列表需要理解文档结构。此工具可在正确的位置插入新元素。
功能:在现有元素之前或之后插入新块(标题、段落、列表、代码块或块引用)。
参数:
file_path(必需):文件的路径path(必需):参考元素的路径element_type(必需):类型(标题、段落、列表、代码块、块引用)content(必需):新元素的内容where:"before" 或 "after"(默认值:"after")heading_level:标题的级别(默认值:1)
示例:
{"file_path": "doc.md", "path": "引言", "element_type": "段落", "content": "这里是新段落。"}
delete_element - 删除内容
大语言模型为何需要此工具:精确删除特定块而不影响周围内容需要精准操作。此工具可通过语义路径删除元素。
功能:从文档中删除一个块。
参数:
file_path(必需):文件的路径path(必需):要删除的元素的语义路径
示例:
{"file_path": "draft.md", "path": "旧章节"}
move_element - 结构重构
大语言模型为何需要此工具:重新组织文档较为复杂。此工具允许大语言模型通过单个命令将整个部分(包括所有嵌套子元素)移动到新位置。
功能:将文本块从源路径移动到目标路径。
参数:
file_path(必需):文件的路径source_path(必需):要移动的元素的路径target_path(必需):新位置的参考路径where:在目标之前或之后(默认值:"after")
示例:
{"file_path": "draft.md", "source_path": "联系人", "target_path": "结论"}
get_context - 上下文感知编辑
大语言模型为何需要此工具:编辑单个块时,大语言模型可能会失去叙述流畅性。此工具提供目标元素及其相邻元素(前后)的内容。
功能:获取一个元素及其周围块的片段。
参数:
file_path(必需):文件的路径path(必需):目标元素的路径
示例:
{"file_path": "article.md", "path": "正文 > 段落5"}
update_metadata - YAML前置元数据管理
大语言模型为何需要此工具:许多Markdown工具(如Obsidian、Jekyll)在顶部使用YAML元数据。此工具允许大语言模型管理标签、日期和属性,而不会影响正文文本。
功能:更新或添加YAML前置元数据到文档中。
参数:
file_path(必需):文件的路径metadata(必需):元数据项的字典
示例:
{"file_path": "post.md", "metadata": {"状态": "已发布", "标签": ["mcp", "人工智能"]}}
undo - 撤销更改
大语言模型为何需要此工具:难免会出现错误操作。此工具允许在不手动恢复文件的情况下撤销最近的操作。
功能:撤销文档上的最后N个操作。
参数:
file_path(必需):文件的路径count:要撤销的操作数量(默认值:1)
示例:
{"file_path": "document.md", "count": 2}
文件操作
list_directory - 浏览工作区
功能:列出目录中的文件和文件夹,帮助大语言模型探索文件结构。
参数:
path:目录路径(默认值:".")
create_file - 创建新文档
功能:创建具有可选初始内容的新文件。
参数:
path(必需):新文件的路径content:初始内容(默认值:"")
示例:
{"path": "./notes/todo.md", "content": "# 待办事项\n\n- 任务1"}
create_directory - 创建文件夹
功能:创建新目录。
参数:
path(必需):新目录的路径
示例:
{"path": "./docs/archive"}
delete_item - 清理
功能:删除文件或目录。
🔧 技术细节
开发
# 安装开发环境
pip install -e .
# 运行测试
pytest tests/
MCP 2025标准特性
本服务器实现了2025 MCP的所有改进:
- 工具搜索工具 - 从众多选项中高效找到合适的工具
- 工具使用示例 - 输入参数示例帮助大语言模型正确使用工具
- 输出模式 - 结构化输出定义,便于客户端集成
- 动态功能 - 支持
tools/list_changed通知
如果你喜欢这个项目,请给它点个星 ⭐
Scan to join WeChat group