Deterministic DOCX/PPTX/XLSX/PDF parser: track changes, comments, headers, footers, merged cells.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Universal document parsing and generation in AILANG. Extracts structured content from DOCX, PPTX, XLSX, PDF, and image files into JSON and markdown β and writes documents back out in 9 formats. To author a document, write Markdown and convert it; see Writing documents in Markdown.
Office formats (DOCX, PPTX, XLSX) use deterministic XML parsing β no AI, no cloud, instant results. PDFs default to the deterministic pdftotext backend (poppler) β also no AI, no cloud β with docling and liteparse as local alternatives and pluggable AI (Gemini, Claude, local Ollama) for scanned/image-only pages via --pdf-backend ai. Images delegate to whatever AI model you plug in. AILANG Parse is AI-agnostic: swap --pdf-backend/--ai to change the backend, zero code changes.
Fetches the published package (~400 KB), installs the
AILANG runtime if you do not have it,
and puts docparse on your PATH. --version, --prefix and --uninstall
are supported; re-running is a no-op.
That covers every deterministic format. PDF needs two more things, and they are easy to miss:
--install-backends matters even if you never pass --pdf-backend: when
pdftotext finds no text layer the parser escalates to docling on its own, so
without it a scanned PDF fails on the default backend. AI backends
authenticate with Google ADC (gcloud auth application-default login), not an
API key.
The wrapper finds the project root by walking up for docparse/main.ail, so it
works from a clone, an installed prefix, or a symlink chain. Note that the CLI
wrapper and the PDF adapter live under assets/ β the only path the AILANG
publisher bundles verbatim β with symlinks at their historical locations.
Use AILANG Parse from your language of choice:
Every run produces:
docparse/data/output.json β Structured JSON with typed blocksdocparse/data/output.md β LLM-ready markdown| Feature | DOCX | PPTX | XLSX | Best Competitor |
|---|---|---|---|---|
| Tables with merged cells | Yes | Yes | Yes | Raw OOXML only |
| Track changes (redlining) | Yes | β | β | Pandoc (3/3) |
| Comments (interleaved) | Yes | β | β | Raw OOXML (2/2) |
| Headers/footers | Yes | β | β | Kreuzberg (2/3) |
| Text boxes / VML shapes | Yes | Yes | β | Raw OOXML (1/2) |
| Equations (Β§22.1) | Yes | β | β | None |
| Field codes (Β§17.16) | Yes | β | β | Kreuzberg, OOXML |
| Speaker notes | β | Yes | β | None |
| Multi-sheet extraction | β | β | Yes | Kreuzberg |
OfficeDocBench (69 files, 11 formats, 7 metrics): AILANG Parse 93.9% composite with 100% coverage vs nearest competitor 68.0% coverage-adjusted. 8 parsers compared including Raw OOXML, Pandoc, Kreuzberg, MarkItDown, Unstructured, Docling. Scores include aspirational ECMA-376 spec targets that intentionally lower our score.
Parsing (16 formats): DOCX, PPTX, XLSX, ODT, ODP, ODS, HTML, Markdown, CSV, EPUB, EML, MBOX, TEX, RTF, PDF, images (JPG/PNG)
Generation (9 formats): DOCX, PPTX, XLSX, ODT, ODP, ODS, HTML, Markdown, QMD (Quarto)
Markdown is the input an LLM can write, so it is the practical way to generate a document: write markdown, convert to any of the nine output formats.
What survives the trip: YAML front matter (title/author/date β document
properties), bold/italic/code/strike as real character formatting,
links as real hyperlinks, images (local paths are read and embedded), fenced
code blocks, blockquotes, nested lists, thematic breaks, and tables with
alignment and column spans.
Headers, footers, comments and tracked changes have no Markdown syntax; those are preserved when converting from a document that already contains them.
--reference-doc is the Quarto/Pandoc reference-doc feature: an existing
.docx supplies the look, the Markdown supplies the content.
The template's styles.xml, numbering.xml, theme, embedded fonts, headers,
footers and page setup are applied to the new content. Everything the merge does
not regenerate is carried through byte-for-byte, so the letterhead, logo and
licensed fonts come out exactly as they went in.
What comes from where:
| Template | page size, margins, headers, footers, page numbering, fonts, theme, colours |
| Your document | the body content, and docProps/core.xml (title/author) |
| Merged | styles.xml (ours fill only the styleIds the template lacks), numbering.xml (our list definitions take ids above the template's), [Content_Types].xml, both .rels |
Two consequences worth knowing:
<w:sectPr>, which is lifted whole.commentsExtended.xml and people.xml. Comments in the source document
still come through.Two flags refine a multi-section template:
--reference-section N picks which of the template's sections supplies the
page setup, headers and footers β 1 is the first section, Word's numbering.
The default is the last section (the body-level one, what the flag-less
behaviour has always lifted). A multi-section template's wanted furniture is
often an earlier section's β the master agreement's CONFIDENTIAL footer, not
the Annex's missing one.--table-style NAME binds generated tables to a table style the template
defines (matched on styleId, then style name). Without it, the style named
Table is used if the template has one, else the first table style that is
not the implicit Normal Table. Under a bound style the generator stops
emitting its own hardcoded borders β the style carries them.An unreadable or non-DOCX reference is an error and writes nothing β a silent fallback to the built-in styling would produce a plausible file missing exactly the letterhead it was asked for. DOCX output only.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/ailang-parse)<a href="https://allmcps.com/mcp/ailang-parse"><img src="https://allmcps.com/api/badge/ailang-parse?style=directory" alt="AILANG Parse on AllMCPs" /></a>