mcpField
M
markdown-formatter

markdown-formatter

本地服务
github.com/XJTLUmedia生产力227 周前更新

关于 markdown-formatter

markdown-formatter 是用于转换、检查和修复 Markdown 文档的 MCP 服务,面向需要导出多种文档及平台格式的用户,并支持批量转换与文档分析。

主要功能

  1. 01转换为文档及平台格式
  2. 02跨格式批量转换文档
  3. 03修复并检查 Markdown
  4. 04提取链接、代码和文档结构
  5. 05支持数学公式的 PDF 和 PNG 渲染

适用场景

  1. 01将笔记导出为 PDF 或 DOCX
  2. 02为 Slack 或 Jira 整理 Markdown
  3. 03分享前修复格式错误的 Markdown
  4. 04检查文档链接、标题和统计信息

MCP 相关

它向 MCP 客户端提供格式转换、修复、检查和文档分析工具,以及提示词和资源。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"xjtlumedia-markdown-formatter": {
"command": "npx",
"args": [
"-y",
"@xjtlumedia/markdown-mcp-server"
]
}
}
}
启动命令npx -y @xjtlumedia/markdown-mcp-server

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@xjtlumedia/markdown-mcp-server1.0.5

工具

14

收录的工具列表 · 更新于 2 周前

参数类型必填说明
markdownstring是
output_pathstring否

详细介绍

AI Answer Copier — MCP 驱动的多格式导出工具

5 秒内将“AI 噪声”变成“课堂可用”内容。

npm version License: MIT MCP Registry Glama GitHub

一个 Model Context Protocol (MCP) 服务,让你的 AI 助手能够将 Markdown 转换为 22 种专业文档格式,还可在一次调用中将多个文档批量转换为 22 种格式、分析文档、修复错误的 Markdown,并跨平台转换——所有操作都无需离开 AI 聊天界面。

image

npm:https://www.npmjs.com/package/@xjtlumedia/markdown-mcp-server


为什么要开发它

你让 AI 写 20 道题。它完成了。但现在你却卡住了:

痛点手动操作使用 AI Answer Copier
提取问答逐行复制,耗时 10–15 分钟2 秒(自动检测)
格式化数学公式修复错误符号,耗时 20 分钟即时完成(支持 KaTeX)
上传至 LMS手动输入 CSV,耗时 15 分钟一键导出
总备课时间约 45–60 分钟少于 1 分钟

生成内容只需几秒。将内容整理成实际可用的格式却要花上一小时。这个 MCP 服务彻底消除了这一差距。


在线演示

在线网页版(无需安装):ai-answer-copier.vercel.app

在线演示 1 在线演示 2

在 Inspector 中测试 MCP 工具:

MCP 服务

使用实际的 MCP 实例:

MCP 1 MCP 2

全部 34 个 MCP 工具

文档转换工具(15 个)
#工具输出描述
1harmonize_markdown.md统一并规范 Markdown 语法(ATX 标题、- 列表标记、围栏代码块),不改变含义
2convert_to_txt.txt去除所有格式,生成纯文本
3convert_to_html.html完整的样式化 HTML 文档,支持 GFM 表格、KaTeX 数学公式和嵌入式样式表
4generate_htmlHTML 字符串生成所有样式均内联的自包含 HTML(只读,不进行文件 I/O)
5convert_to_pdf.pdf通过无头 Chromium 生成可直接打印的 PDF,支持完整的 KaTeX 数学公式和语法高亮
6convert_to_docx.docxMicrosoft Word 文档,包含样式化标题、列表和代码格式
7convert_to_latex.texLaTeX 源代码,包含 \section、列表环境,并原生传递数学公式
8convert_to_rtf.rtf适用于旧版文字处理器和电子邮件客户端的富文本格式
9convert_to_csv.csv将 GFM 管道表格提取为逗号分隔值
10convert_to_json.json结构化 JSON 表示,包含章节、标题、列表、代码块和表格
11convert_to_xml.xml格式良好的 XML,包含 <?xml?> 声明和结构化元素
12convert_to_xlsx.xlsxExcel 电子表格——每个 Markdown 表格都会转换为一个工作表
13convert_to_image.png通过无头 Chromium 生成整页 PNG 截图
14convert_to_md.md将 Markdown 导出到文件,可先统一格式(harmonize=true)
15convert_to_email_html.html针对电子邮件优化的 HTML,所有样式均内联,兼容 Outlook、Gmail、Apple Mail
平台转换工具(10 个)
#工具目标平台描述
16convert_to_slackSlackmrkdwn 格式——粗体使用 *,链接使用 <url|text>,标题使用粗体文本
17convert_to_discordDiscord样式化的粗体/下划线标题,保留代码块
18convert_to_jiraJIRAWiki 标记——h1./h2.、{code} 代码块、[text|url] 链接
19convert_to_confluenceConfluenceWiki 标记,支持 {info}、{note} 面板和 {code:language=x} 语法
20convert_to_asciidocAsciiDoc= 标题、---- 代码块、url[text] 链接、image:: 指令
21convert_to_rstreStructuredText下划线标题、.. code-block:: 指令、RST 引用语法
22convert_to_mediawikiMediaWiki== 标题、'''bold'''、<syntaxhighlight> 标签、{\ wikitable
23convert_to_bbcodeBBCode适用于 phpBB/vBulletin 论坛的 [b]、[i]、[code]、[url]、[img] 标签
24convert_to_textileTextile适用于 Redmine、Basecamp 和 CMS 平台的标记
25convert_to_orgmodeEmacs Org Mode* 标题、#+BEGIN_SRC/#+END_SRC 代码、[[url][text]] 链接
导入工具(1 个)
#工具描述
26html_to_markdown将 HTML 内容(完整文档或片段)转换回 Markdown
修复与检查工具(2 个)
#工具描述
27repair_markdown修复 LLM 输出或复制粘贴导致的 Markdown 问题——未闭合的代码围栏、损坏的表格、游离的强调标记、缺少空格的标题、损坏的链接
28lint_markdown检查 Markdown 并以 JSON 数组报告问题,包含行号、严重级别、规则名称、消息和可修复标记
文档分析工具(5)
#工具描述
29extract_code_blocks提取所有代码块及其语言、内容和起止行号
30extract_links提取所有链接和图片及其文本、URL、行号和类型(行内、引用、图片、自动链接)
31generate_toc根据标题生成 Markdown 目录,可配置 max_depth(1–6)
32analyze_document全面统计——行数、字数、字符数、段落数、句子数、标题/代码/表格/链接/图片数量,以及预计阅读时间
33extract_structure文档架构概览——统计数据、标题大纲、代码块摘要、链接摘要
批量转换(1)
#工具输入描述
34batch_convertitems[] × formats[]一次调用将多个 Markdown 文档批量转换为 22 种格式。按项目和格式隔离错误。可选 output_dir 用于输出文件。格式:txt、csv、json、xml、xlsx、latex、rtf、docx、pdf、html、md、email、slack、discord、jira、confluence、asciidoc、rst、mediawiki、bbcode、textile、orgmode

6 个内置提示词

预配置的提示词模板,可编排多个工具:

提示词描述
convert-document将 Markdown 转换为任意受支持的格式(PDF、DOCX、HTML、LaTeX、CSV、JSON、XML、XLSX、RTF、PNG、TXT、MD)
extract-tables从 Markdown 中提取所有表格并导出为 CSV 或 XLSX
format-for-sharing统一格式,然后转换为 PDF 和 HTML 以供分发
analyze-and-repair检查 → 修复 → 重新检查,确认所有问题均已解决
convert-for-platform将 Markdown 转换为任意平台格式(Slack、Discord、JIRA、Confluence、AsciiDoc、RST、MediaWiki、BBCode、Textile、Org Mode)
document-overview完整概览——在一份报告中呈现统计数据、目录、代码块和链接

2 个资源

资源 URI描述
markdown-formatter://supported-formats包含所有 23 种以上输出格式、工具名称和类型的完整 JSON 列表
markdown-formatter://conversion-guide根据使用场景选择合适输出格式的指南

快速开始

通过 npx 安装(推荐)

无需安装——只需配置 MCP 客户端:

{
  "mcpServers": {
    "ai-answer-copier": {
      "command": "npx",
      "args": ["-y", "@xjtlumedia/markdown-mcp-server"]
    }
  }
}
全局安装
npm install -g @xjtlumedia/markdown-mcp-server

然后进行配置:

{
  "mcpServers": {
    "ai-answer-copier": {
      "command": "markdown-mcp-server"
    }
  }
}

按 AI 客户端配置

🔌 Claude Desktop
image

编辑 %APPDATA%\Claude\claude_desktop_config.json(Windows)或 ~/Library/Application Support/Claude/claude_desktop_config.json(macOS):

{
  "mcpServers": {
    "ai-answer-copier": {
      "command": "npx",
      "args": ["-y", "@xjtlumedia/markdown-mcp-server"]
    }
  }
}

重启 Claude Desktop。你会看到一个 🔌 图标——现在可以使用全部 34 个工具。

VS Code(GitHub Copilot)

添加到 .vscode/mcp.json 或 VS Code 设置中:

{
  "servers": {
    "ai-answer-copier": {
      "command": "npx",
      "args": ["-y", "@xjtlumedia/markdown-mcp-server"]
    }
  }
}
Cursor / Windsurf / 任意 MCP 客户端

在客户端的 MCP 配置中使用上文相同的 npx 命令模式。

DIY 版本(本地构建)
{
  "mcpServers": {
    "markdown-formatter": {
      "command": "node",
      "args": [
        "YOUR_PATH_TO_PROJECT/mcp-server/dist/mcp-server/src/index.js"
      ]
    }
  }
}

将 YOUR_PATH_TO_PROJECT 替换为此文件夹的绝对路径。

HTTP 模式(Vercel)

提供托管的 HTTP 端点,供基于浏览器的集成和远程集成使用:

https://ai-answer-copier.vercel.app/api/mcp

使用 MCP Inspector 测试:

npx @modelcontextprotocol/inspector https://ai-answer-copier.vercel.app/api/mcp

用法示例

连接后,只需自然地与 AI 对话:

“同时将 5 份 Markdown 文档批量转换为 DOCX、PDF 和 HTML,并保存到我的 Downloads 文件夹。” → AI 使用 batch_convert,传入 items[] 和 formats[]

“生成 10 道关于牛顿定律的物理题,并导出为 Kahoot CSV。” → AI 使用 convert_to_csv

“将这段 Markdown 转换为 Word 文档,并保存到我的 Desktop。” → AI 调用 convert_to_docx 并传入 output_path

“把这些课堂笔记制作成可直接打印的 PDF。” → AI 调用 convert_to_pdf,使用 Puppeteer 渲染、KaTeX 数学公式和语法高亮

“将其转换为兼容 Moodle 的 XML 题库。” → AI 调用 convert_to_xml

“将其格式化为适用于 Slack 的内容,并发送到团队频道。” → AI 调用 convert_to_slack

“检查这份 Markdown 是否有问题,并修复问题。” → AI 先调用 lint_markdown,再调用 repair_markdown

“概述这份文档——字数、结构和所有链接。” → AI 组合调用 analyze_document + generate_toc + extract_links


功能

22 种输出格式

可导出为 PDF、DOCX、HTML、LaTeX、CSV、JSON、XML、XLSX、RTF、PNG、TXT、Markdown,以及 Slack、Discord、JIRA、Confluence、AsciiDoc、RST、MediaWiki、BBCode、Textile、Org Mode 和 Email HTML。

批量转换

在一次 batch_convert 调用中,将多份 Markdown 文档转换为多种格式。错误按每个项目和格式分别处理,因此单次失败绝不会影响其他转换。

数学公式和代码是一等公民

全面支持 KaTeX 数学表达式和语法高亮代码块。你的 $\sqrt{x^2 + y^2}$ 和 Python 代码片段在每次转换后都能完好保留。

智能二进制处理

二进制格式(PDF、DOCX、XLSX、PNG)不会将原始 base64 内容直接输出到聊天中。服务会返回可执行的指引,让 AI 知道应将文件保存到指定路径。

文档分析与修复

检查 Markdown、自动修复格式问题、提取代码块和链接、生成目录,并获取全面的文档统计信息——所有操作都能在聊天中完成。

GFM(GitHub Flavored Markdown)

表格、任务列表、删除线和自动链接等内容都能通过 remark-gfm 正确解析。

由 Puppeteer 驱动的 PDF 和 PNG

PDF 和图像导出使用无头 Chromium,实现像素级精准渲染,并支持完整的 CSS 样式、KaTeX 数学公式、语法高亮和针对打印优化的布局。

独立运行

运行时不依赖任何外部 API。所有内容均在本地运行。你的数据绝不会离开你的电脑。


架构

┌─────────────────────────┐
│  AI Client               │
│  (Claude, Copilot,      │
│   Cursor, Windsurf)     │
└──────────┬──────────────┘
           │ MCP Protocol (stdio / HTTP)
           ▼
┌─────────────────────────┐
│  AI Answer Copier        │
│  MCP Server (34 tools)   │
│                          │
│  ┌── Conversion ────────┐│
│  │ remark/rehype, docx, ││
│  │ puppeteer, xlsx,     ││
│  │ CSV/JSON/XML/RTF/    ││
│  │ LaTeX/TXT parsers    ││
│  └──────────────────────┘│
│  ┌── Platform ──────────┐│
│  │ Slack, Discord, JIRA,││
│  │ Confluence, AsciiDoc,││
│  │ RST, MediaWiki,      ││
│  │ BBCode, Textile, Org ││
│  └──────────────────────┘│
│  ┌── Batch ─────────────┐│
│  │ items[] × formats[]  ││
│  │ 22 formats, isolated ││
│  └──────────────────────┘│
│  ┌── Analysis ──────────┐│
│  │ Code blocks, links,  ││
│  │ TOC, stats, structure││
│  └──────────────────────┘│
│  ┌── Repair ────────────┐│
│  │ Lint, auto-repair    ││
│  └──────────────────────┘│
│  ┌── Import ────────────┐│
│  │ HTML → Markdown      ││
│  └──────────────────────┘│
└─────────────────────────┘

v2.1.0 更新内容

此版本通过 8 项逻辑修复,增强了本地(npx)和远程 Vercel MCP 传输的健壮性:

#修复范围
1出错时未关闭浏览器 — 在 browser.close() 外添加 try/finally,确保 Chromium 在 PDF/PNG 转换失败时也不会泄漏两种传输方式
2generate_html 缺少 KaTeX CSS — 恢复了视口 meta 标签、KaTeX 样式表(SRI 哈希)和完整的内联样式,确保数学公式正确渲染Vercel /api/mcp
3convert_to_html 样式不完整 — 添加了 SRI 完整性哈希、表格边框和引用块样式,使输出与本地一致Vercel /api/mcp
4会话映射内存泄漏 — instances Map 现在会在 30 分钟后清除过期会话(SESSION_TTL_MS);McpInstance 会跟踪 lastUsedVercel /api/mcp
5正常结束 SSE 流时未清除 keepAlive 定时器 — 添加了内层 try/finally,确保始终调用 clearInterval(keepAlive)Vercel /api/mcp
6访问 SDK 内部属性 _initialized — 将裸用的 @ts-ignore 替换为 typeof 检查,确保 SDK 升级后服务能够优雅地处理错误Vercel /api/mcp
7未验证输入大小 — 为所有工具调用添加 1 GB 硬性限制(MAX_INPUT_BYTES),防止超大载荷导致 CPU/内存资源失控两种传输方式
8DELETE 方法会创建新会话 — 处理程序现在会在收到 DELETE 时立即返回 200,避免创建虚假会话Vercel /api/mcp

已知限制

  • PDF / PNG 需要本地 Chromium — convert_to_pdf 和 convert_to_image 会启动无头浏览器。通过 npx 使用时运行正常,但 Vercel 免费套餐不支持(未捆绑 Chromium)。如果自动检测失败,请将 PUPPETEER_EXECUTABLE_PATH 环境变量设为本地 Chrome 的路径。
  • Vercel 上的 Chromium 版本 — 远程端点使用 @sparticuz/chromium-min,并固定为 v131.0.1 的 tar 包。如果 Vercel 升级 Lambda 运行时,可能需要更新 CHROMIUM_TAR_URL 环境变量。
  • 1 MB 输入限制 — 所有工具调用都会拒绝大于 1 MB 的输入。转换前请将大型文档拆分为多个部分。
  • 会话 TTL(仅远程) — Vercel 端点上的会话在闲置 30 分钟后过期。长时间运行的有状态工作流应定期发送保活调用。

开发

# Clone the repository
git clone https://github.com/XJTLUmedia/AI_answer_copier.git

# Web app
npm install
npm run dev

# MCP server
cd mcp-server
npm install
npm run dev     # hot reload
npm run build   # production build
npm run inspector  # test with MCP Inspector

技术栈

组件技术
MCP SDK@modelcontextprotocol/sdk
Markdown 解析器unified + remark + rehype
数学公式渲染remark-math + rehype-katex
Word 导出docx
Excel 导出xlsx
PDF/PNG 导出puppeteer
Schema 验证zod
运行时Node.js(ESM)

贡献

欢迎贡献!无论是新增导出格式、修复 Bug,还是改进文档,都欢迎提交拉取请求。

  1. Fork 仓库
  2. 创建功能分支
  3. 提交拉取请求

许可证

MIT © XJTLUmedia


由教育工作者打造,服务教育工作者。
每周省下 5 小时。让 AI 处理格式排版。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。