MCP MDAST 服务器
用于操作Markdown抽象语法树(MDAST)的模型上下文协议(MCP)服务器。 它提供了类似DOM的操控API以及通过类似CSS的选择器进行直观的节点选择功能。
特点
- 🎯(目标) CSS风格选择器:
heading[depth="1"]、paragraph > strong这样的直觉选择 - 🔧 修理工具、螺丝刀或类似工具的符号,常用于表示需要修理或维护的物品或情境。 整合操作用一个工具实现select、insert、update、remove、replace功能
- 📊 表格/数据图表 分析功能文档结构、统计、生成目录等
- 💾 代表软盘驱动器或存储设备的符号。 灵活的I/O支持从文件、URL、MDAST资源的输入输出
- 🔄 翻译为中文是:🔄(这个符号本身没有直接的中文翻译,它通常表示“循环”、“重复”或“刷新”的意思,具体含义根据上下文而定。) 资源管理可将MDAST树作为资源保存并重复使用
- ⚡(闪电符号,常用于表示速度、活力或警告等含义,具体翻译需结合上下文) 高性能通过unified/remark生态系统实现的高速处理
- 🎨 画笔/艺术创作 灵活转换应用自定义转换逻辑
安装
npm install
npm run build使用方法
作为MCP服务器启动
node dist/index.js使用MCP Inspector进行测试
npm run inspector在Claude Desktop中的设置
claude_desktop_config.json并添加以下内容:
{
"mcpServers": {
"mdast": {
"command": "node",
"args": ["/path/to/mcp-mdast/dist/index.js"]
}
}
}工具
1. mdast-query(可译为“MDAST查询”)
一款能够解析Markdown并使用CSS选择器进行查询和操作的集成工具。
输入选项:
- 内联Markdown:
markdown: "# Title" - 文件:
markdown: {"source": "file", "path": "/path/to/file.md"} - 网址:
markdown: {"source": "url", "url": "https://example.com/doc.md"} - MDAST资源:
markdown: {"source": "mdast", "uri": "mdast://..."}
输出选项:
- 文本(默认):
output: {"type": "text"} - 文件:
output: {"type": "file", "path": "/path/to/output.md"} - MDAST资源:
output: {"type": "mdast", "ttl": 3600}
操作示例:
// 見出しの選択
{
markdown: "# Title\n## Section",
operation: "select",
selector: "heading[depth=\"2\"]"
}
// コンテンツの挿入
{
markdown: "# Title\nContent",
operation: "insert",
selector: "heading[depth=\"1\"]",
content: "## New Section\n\nNew content.",
position: "after"
}
// ノードの更新
{
markdown: "Old text",
operation: "update",
selector: "paragraph",
content: "New text"
}
// ノードの削除
{
markdown: "# Title\n- item1\n- item2",
operation: "remove",
selector: "list"
}2. mdast-transform(可译为“MDAST转换器”或根据具体上下文调整为更贴切的表述)
应用自定义转换逻辑。
转换类型:
wrap用包装器包裹节点unwrap删除封面rename更改节点类型(也支持更改标题层级)clone复制节点
// 見出しレベルの変更
{
markdown: "## Level 2",
transforms: [{
type: "rename",
selector: "heading[depth=\"2\"]",
newType: "heading",
depth: 3
}]
}
// ノードをblockquoteで囲む
{
markdown: "# Title\n\nParagraph",
transforms: [{
type: "wrap",
selector: "paragraph",
wrapper: "blockquote"
}]
}3. mdast-analyze(可译为“mdast分析”或根据具体上下文译为更具体的名称,如“MDAST分析工具”等)
分析文档结构并获取统计信息。
{
markdown: "# Title\n\n## Section 1\n\n[Link](url)",
analysis: ["stats", "headings", "links", "toc"]
}CSS风格选择器
基本选择器
heading- 所有标题元素paragraph- 所有段落元素link,image,code,list等。
属性选择器
heading[depth="1"]- 仅h1标题link[url^="https"]以https开头的链接code[lang="javascript"]- JavaScript语言的代码块
结构选择器
paragraph > strong- 段落正下方的粗体字list listItem- 列表中的项目blockquote paragraph- 引文中的段落
疑似选择器
:first-child- 首个子元素:last-child- 最后一个子元素:nth-child(n)- 第n个子元素
架构
许可证
麻省理工学院(MIT)
