
Markdown Formatter
- 3 repo stars
- Updated April 20, 2026
- XJTLUmedia/AI_answer_copier
Markdown Formatter MCP is a MCP server that converts agent Markdown to PDF, DOCX, HTML, LaTeX, CSV, JSON, XML, XLSX, RTF, and PNG.
About
Markdown Formatter MCP (AI Answer Copier) is a focused Model Context Protocol server that converts Markdown produced in agent sessions into formats clients and cofounders actually open—PDF, Word, HTML, LaTeX, tabular exports, and PNG. developers on Claude Code or Cursor register the stdio npm package when documentation and deliverables are part of the same loop as coding: you finalize a README, runbook, or investor one-pager and export it without copy-paste gymnastics. It lives on the Build shelf under docs because the payoff is polished artifacts during implementation and handoff, not early market validation alone. Complexity is beginner-friendly relative to multi-tool agent stacks: install Node, add the server to MCP config, and invoke conversion tools from the agent. It does not manage memory, SEO, or XRPL data; it solves one job well. Ideal when your agent is the author and you need shareholder-ready files minutes later.
- AI Answer Copier branding: Markdown in, multi-format out
- Export targets include PDF, DOCX, HTML, LaTeX, CSV, JSON, XML, XLSX, RTF, and PNG
- stdio npm package @xjtlumedia/markdown-mcp-server v1.0.5
- Useful for shipping proposals, reports, and handoff packs from agent drafts
- Single-purpose MCP server—no bundled context or blockchain tooling
Markdown Formatter by the numbers
- Data as of Jul 7, 2026 (Skillselion catalog sync)
claude mcp add markdown-formatter -- npx -y @xjtlumedia/markdown-mcp-serverAdd your badge
Show developers this MCP server is listed on Skillselion. Paste this into your README.
| repo stars | ★ 3 |
|---|---|
| Package | @xjtlumedia/markdown-mcp-server |
| Transport | STDIO |
| Auth | None |
| Last updated | April 20, 2026 |
| Repository | XJTLUmedia/AI_answer_copier ↗ |
What it does
Let your agent turn AI-generated Markdown answers into PDF, DOCX, HTML, LaTeX, spreadsheets, and images without leaving the MCP workflow.
Who is it for?
Best when you draft docs in the agent and need fast, repeatable exports for stakeholders.
Skip if: Skip if you only need on-chain analytics or deep context-memory tooling with no document deliverables.
What you get
After registering @xjtlumedia/markdown-mcp-server, your agent can export the same answer into multiple file types in one MCP-driven step.
- PDF, DOCX, HTML, LaTeX, or other listed formats generated from Markdown via MCP tools
- Stakeholder-ready exports without manual paste into separate converters
- Repeatable conversion workflow inside agent-driven doc pipelines
By the numbers
- Registry version 1.0.5
- Eleven output families named in description: PDF, DOCX, HTML, LaTeX, CSV, JSON, XML, XLSX, RTF, PNG
- npm identifier @xjtlumedia/markdown-mcp-server with stdio transport
README.md
AI Answer Copier — MCP-Powered Multi-Format Exporter
Turn "AI Noise" into "Classroom Ready" in 5 Seconds.
A Model Context Protocol (MCP) server that gives your AI assistant the power to convert Markdown into 22 professional document formats, batch-convert multiple documents across 22 formats in one call, analyze documents, repair broken Markdown, and convert across platforms — all without leaving your AI chat.
npm: https://www.npmjs.com/package/@xjtlumedia/markdown-mcp-server
Why This Exists
You asked an AI to write 20 questions. It delivered. But now you're stuck:
| Pain Point | Manual Workflow | With AI Answer Copier |
|---|---|---|
| Extracting Q&A | 10–15 min copying each line | 2 seconds (auto-detect) |
| Formatting Math | 20 min fixing broken symbols | Instant (KaTeX support) |
| LMS Upload | 15 min manual CSV entry | 1-click export |
| Total Prep Time | ~45–60 minutes | < 1 minute |
Generating content takes seconds. Formatting it for the real world takes an hour. This MCP server eliminates that gap entirely.
Live Demo
Online web version (no install needed): ai-answer-copier.vercel.app
Test MCP tool in inspector:
Use actual MCP instance:
All 34 MCP Tools
Document Conversion Tools (15)
| # | Tool | Output | Description |
|---|---|---|---|
| 1 | harmonize_markdown |
.md |
Standardize and normalize Markdown syntax (ATX headers, - list markers, fenced code blocks) without changing meaning |
| 2 | convert_to_txt |
.txt |
Strip all formatting to produce plain text |
| 3 | convert_to_html |
.html |
Full styled HTML document with GFM tables, KaTeX math, and embedded stylesheet |
| 4 | generate_html |
HTML string | Generate self-contained HTML with all styles inlined (read-only, no file I/O) |
| 5 | convert_to_pdf |
.pdf |
Print-ready PDF via headless Chromium with full KaTeX math and syntax highlighting |
| 6 | convert_to_docx |
.docx |
Microsoft Word document with styled headings, lists, and code formatting |
| 7 | convert_to_latex |
.tex |
LaTeX source code with \section, list environments, and native math pass-through |
| 8 | convert_to_rtf |
.rtf |
Rich Text Format for legacy word processors and email clients |
| 9 | convert_to_csv |
.csv |
Extract GFM pipe-tables to comma-separated values |
| 10 | convert_to_json |
.json |
Structured JSON representation with sections, headings, lists, code blocks, and tables |
| 11 | convert_to_xml |
.xml |
Well-formed XML with <?xml?> declaration and structured elements |
| 12 | convert_to_xlsx |
.xlsx |
Excel spreadsheet — each Markdown table becomes a sheet |
| 13 | convert_to_image |
.png |
Full-page PNG screenshot via headless Chromium |
| 14 | convert_to_md |
.md |
Export Markdown to file, optionally harmonizing formatting first (harmonize=true) |
| 15 | convert_to_email_html |
.html |
Email-optimized HTML with all styles inlined, compatible with Outlook, Gmail, Apple Mail |
Platform Converter Tools (10)
| # | Tool | Target Platform | Description |
|---|---|---|---|
| 16 | convert_to_slack |
Slack | mrkdwn format — bold as *, links as <url|text>, headers as bold text |
| 17 | convert_to_discord |
Discord | Styled bold/underline headers, preserved code blocks |
| 18 | convert_to_jira |
JIRA | Wiki markup — h1./h2., {code} blocks, [text|url] links |
| 19 | convert_to_confluence |
Confluence | Wiki markup with {info}, {note} panels and {code:language=x} syntax |
| 20 | convert_to_asciidoc |
AsciiDoc | = headers, ---- code blocks, url[text] links, image:: directives |
| 21 | convert_to_rst |
reStructuredText | Underlined headers, .. code-block:: directives, RST reference syntax |
| 22 | convert_to_mediawiki |
MediaWiki | == headers, '''bold''', <syntaxhighlight> tags, {\ wikitable |
| 23 | convert_to_bbcode |
BBCode | [b], [i], [code], [url], [img] tags for phpBB/vBulletin forums |
| 24 | convert_to_textile |
Textile | Markup for Redmine, Basecamp, and CMS platforms |
| 25 | convert_to_orgmode |
Emacs Org Mode | * headers, #+BEGIN_SRC/#+END_SRC code, [[url][text]] links |
Import Tools (1)
| # | Tool | Description |
|---|---|---|
| 26 | html_to_markdown |
Convert HTML content (full document or fragment) back to Markdown |
Repair & Lint Tools (2)
| # | Tool | Description |
|---|---|---|
| 27 | repair_markdown |
Fix broken Markdown from LLM output or copy-paste — unclosed code fences, broken tables, stray emphasis markers, missing heading spaces, broken links |
| 28 | lint_markdown |
Lint and report issues as JSON array with line number, severity, rule name, message, and fixable flag |
Document Analysis Tools (5)
| # | Tool | Description |
|---|---|---|
| 29 | extract_code_blocks |
Extract all code blocks with language, content, and start/end line numbers |
| 30 | extract_links |
Extract all links and images with text, URL, line number, and type (inline, reference, image, autolink) |
| 31 | generate_toc |
Generate Markdown Table of Contents from headings with configurable max_depth (1–6) |
| 32 | analyze_document |
Comprehensive statistics — line/word/character/paragraph/sentence counts, heading/code/table/link/image counts, estimated reading time |
| 33 | extract_structure |
Bird's-eye document architecture — statistics, heading outline, code block summary, link summary |
Batch Conversion (1)
| # | Tool | Input | Description |
|---|---|---|---|
| 34 | batch_convert |
items[] × formats[] |
Batch-convert multiple Markdown documents to 22 formats in one call. Error-isolated per item+format. Optional output_dir for file output. Formats: txt, csv, json, xml, xlsx, latex, rtf, docx, pdf, html, md, email, slack, discord, jira, confluence, asciidoc, rst, mediawiki, bbcode, textile, orgmode |
6 Built-in Prompts
Pre-configured prompt templates that orchestrate multiple tools:
| Prompt | Description |
|---|---|
convert-document |
Convert Markdown to any supported format (PDF, DOCX, HTML, LaTeX, CSV, JSON, XML, XLSX, RTF, PNG, TXT, MD) |
extract-tables |
Extract all tables from Markdown and export as CSV or XLSX |
format-for-sharing |
Harmonize formatting, then convert to both PDF and HTML for distribution |
analyze-and-repair |
Lint → Repair → Re-lint to confirm all issues resolved |
convert-for-platform |
Convert Markdown to any platform format (Slack, Discord, JIRA, Confluence, AsciiDoc, RST, MediaWiki, BBCode, Textile, Org Mode) |
document-overview |
Full overview — statistics, TOC, code blocks, and links in one report |
2 Resources
| Resource URI | Description |
|---|---|
markdown-formatter://supported-formats |
Complete JSON list of all 23+ output formats with tool names and types |
markdown-formatter://conversion-guide |
Guide for choosing the right output format based on your use case |
Quick Start
Install via npx (Recommended)
No installation needed — just configure your MCP client:
{
"mcpServers": {
"ai-answer-copier": {
"command": "npx",
"args": ["-y", "@xjtlumedia/markdown-mcp-server"]
}
}
}
Install Globally
npm install -g @xjtlumedia/markdown-mcp-server
Then configure:
{
"mcpServers": {
"ai-answer-copier": {
"command": "markdown-mcp-server"
}
}
}
Configuration by AI Client
🔌 Claude Desktop
Edit %APPDATA%\Claude\claude_desktop_config.json (Windows) or ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):
{
"mcpServers": {
"ai-answer-copier": {
"command": "npx",
"args": ["-y", "@xjtlumedia/markdown-mcp-server"]
}
}
}
Restart Claude Desktop. You'll see a 🔌 icon — all 34 tools are now available.
VS Code (GitHub Copilot)
Add to .vscode/mcp.json or VS Code settings:
{
"servers": {
"ai-answer-copier": {
"command": "npx",
"args": ["-y", "@xjtlumedia/markdown-mcp-server"]
}
}
}
Cursor / Windsurf / Any MCP Client
Use the same npx command pattern above in your client's MCP configuration.
DIY version (local build)
{
"mcpServers": {
"markdown-formatter": {
"command": "node",
"args": [
"YOUR_PATH_TO_PROJECT/mcp-server/dist/mcp-server/src/index.js"
]
}
}
}
Replace YOUR_PATH_TO_PROJECT with the absolute path to this folder.
HTTP Mode (Vercel)
A hosted HTTP endpoint is available for browser-based and remote integrations:
https://ai-answer-copier.vercel.app/api/mcp
Test with MCP Inspector:
npx @modelcontextprotocol/inspector https://ai-answer-copier.vercel.app/api/mcp
Usage Examples
Once connected, just talk to your AI naturally:
"Batch-convert 5 markdown documents into DOCX, PDF, and HTML simultaneously and save them to my Downloads folder." → AI uses
batch_convertwith items[] and formats[]
"Generate 10 physics questions about Newton's Laws and export them as a Kahoot CSV." → AI uses
convert_to_csv
"Convert this markdown into a Word document and save it to my Desktop." → AI calls
convert_to_docxwithoutput_path
"Take these lecture notes and produce a print-ready PDF." → AI calls
convert_to_pdfwith Puppeteer rendering, KaTeX math, and syntax highlighting
"Turn this into a Moodle-compatible XML quiz bank." → AI calls
convert_to_xml
"Format this for Slack and send it to the team channel." → AI calls
convert_to_slack
"Check this Markdown for issues and fix them." → AI calls
lint_markdownthenrepair_markdown
"Give me an overview of this document — word count, structure, all links." → AI chains
analyze_document+generate_toc+extract_links
Features
22 Output Formats
Export to PDF, DOCX, HTML, LaTeX, CSV, JSON, XML, XLSX, RTF, PNG, TXT, Markdown — plus Slack, Discord, JIRA, Confluence, AsciiDoc, RST, MediaWiki, BBCode, Textile, Org Mode, and Email HTML.
Batch Conversion
Convert multiple Markdown documents to multiple formats in one batch_convert call. Errors are isolated per item+format so one failure never blocks the rest.
Math & Code as First-Class Citizens
Full support for KaTeX math expressions and syntax-highlighted code blocks. Your $\sqrt{x^2 + y^2}$ and Python snippets survive every conversion perfectly.
Smart Binary Handling
Binary formats (PDF, DOCX, XLSX, PNG) don't dump raw base64 into chat. The server returns actionable guidance so the AI knows to save to a file path.
Document Analysis & Repair
Lint Markdown, auto-repair broken formatting, extract code blocks and links, generate Table of Contents, and get comprehensive document statistics — all without leaving the chat.
GFM (GitHub Flavored Markdown)
Tables, task lists, strikethrough, autolinks — all parsed correctly via remark-gfm.
Puppeteer-Powered PDF & PNG
PDF and image exports use headless Chromium for pixel-perfect rendering with full CSS styling, KaTeX math, syntax highlighting, and print-optimized layouts.
Self-Contained
Zero runtime dependencies on external APIs. Everything runs locally. Your data never leaves your computer.
Architecture
┌─────────────────────────┐
│ 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 ││
│ └──────────────────────┘│
└─────────────────────────┘
What's New in v2.1.0
This release hardens both the local (npx) and remote Vercel MCP transports with 8 logic fixes:
| # | Fix | Area |
|---|---|---|
| 1 | Browser not closed on error — try/finally around browser.close() so Chromium never leaks on PDF/PNG failures |
Both transports |
| 2 | generate_html missing KaTeX CSS — restored viewport meta, KaTeX stylesheet (SRI hash), and full inline styles so math renders correctly |
Vercel /api/mcp |
| 3 | convert_to_html incomplete styles — added SRI integrity hash, table borders, and blockquote styling to match local output |
Vercel /api/mcp |
| 4 | Session map memory leak — instances Map now evicts stale sessions after 30 minutes (SESSION_TTL_MS); McpInstance tracks lastUsed |
Vercel /api/mcp |
| 5 | keepAlive interval not cleared on normal SSE stream end — added inner try/finally that always calls clearInterval(keepAlive) |
Vercel /api/mcp |
| 6 | _initialized SDK-internal access — replaced bare @ts-ignore with a typeof guard so the server fails gracefully after SDK upgrades |
Vercel /api/mcp |
| 7 | No input size validation — added 1 GB hard limit (MAX_INPUT_BYTES) to all tool calls to prevent runaway CPU/memory on oversized payloads |
Both transports |
| 8 | DELETE method creates new session — handler now returns 200 immediately on DELETE, preventing phantom session creation |
Vercel /api/mcp |
Known Limitations
- PDF / PNG require local Chromium —
convert_to_pdfandconvert_to_imagelaunch a headless browser. This works fine withnpxbut is unavailable on Vercel's free tier (no bundled Chromium). Set thePUPPETEER_EXECUTABLE_PATHenvironment variable to point to your local Chrome if auto-detection fails. - Chromium version on Vercel — the remote endpoint uses
@sparticuz/chromium-minwith a pinned tar at v131.0.1. If Vercel bumps the Lambda runtime you may need to update theCHROMIUM_TAR_URLenv var. - 1 MB input limit — all tool calls reject inputs larger than 1 MB. Split large documents into sections before converting.
- Session TTL (remote only) — sessions on the Vercel endpoint expire after 30 minutes of inactivity. Long-running stateful workflows should issue periodic keep-alive calls.
Development
# 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
Tech Stack
| Component | Technology |
|---|---|
| MCP SDK | @modelcontextprotocol/sdk |
| Markdown Parser | unified + remark + rehype |
| Math Rendering | remark-math + rehype-katex |
| Word Export | docx |
| Excel Export | xlsx |
| PDF/PNG Export | puppeteer |
| Schema Validation | zod |
| Runtime | Node.js (ESM) |
Contributing
We welcome contributions! Whether it's a new export format, a bug fix, or documentation improvement — please consider making a pull request.
- Fork the repository
- Create a feature branch
- Submit a pull request
License
Built by educators, for educators.
Reclaim 5 hours of your week. Let the AI handle the formatting.
Recommended MCP Servers
How it compares
MCP document conversion server, not a 37-tool context stack or XRPL data integration.
FAQ
Who is Markdown Formatter MCP for?
Developers and consultants who use coding agents to write Markdown and must ship PDF, Office, or spreadsheet files to non-technical readers.
When should I use Markdown Formatter MCP?
Use it during Build when you have finalized agent-written docs, reports, or specs and need export-quality formats without a separate desktop workflow.
How do I add Markdown Formatter MCP to my agent?
Install @xjtlumedia/markdown-mcp-server from npm, add a stdio MCP server entry in Claude Code or Cursor, and call the conversion tools on your Markdown source.