
One MCP, Many Parsers
- Updated July 27, 2026
- adelaidasofia/parse-mcp
parse-mcp is a MCP server that routes document parsing across markitdown, Docling, and LlamaParse plus an interpret tool for agent-ready text.
About
parse-mcp is a Model Context Protocol server that unifies document parsing behind one tool surface. developers shipping AI products constantly hit the same wall: invoices, decks, and legacy PDFs need clean text before embeddings, validation, or codegen. Instead of choosing markitdown versus Docling versus LlamaParse up front, the server routes each job to the appropriate engine and exposes an interpret step so your agent can reason over structured output rather than raw dumps. You only need LlamaParse credentials when you explicitly use that backend; local-friendly parsers can cover most day-one experiments. Install the stdio bundle, point your agent at the server, and use it whenever you ingest user uploads, competitor PDFs, or internal specs into Claude Code, Cursor, or Codex workflows.
- Single MCP entry point routes requests across markitdown, Docling, and LlamaParse backends
- Optional LlamaParse path when you need cloud parsing (LLAMAPARSE_API_KEY only for that route)
- Interpret tool layers meaning on top of raw extracted text for agent follow-up questions
- stdio transport via released .mcpb bundle (v0.1.0) for Claude Code–style hosts
- Fits solo-builder doc-to-context workflows without maintaining three separate integrations
One MCP, Many Parsers by the numbers
- Data as of Jul 27, 2026 (Skillselion catalog sync)
claude mcp add OneMCPmanyparsers -- npx -y adelaidasofia/parse-mcpAdd your badge
Show developers this MCP server is listed on Skillselion. Paste this into your README.
| Last updated | July 27, 2026 |
|---|---|
| Repository | adelaidasofia/parse-mcp ↗ |
What it does
Let your coding agent parse PDFs, Office files, and messy documents through one MCP that picks markitdown, Docling, or LlamaParse automatically.
Who is it for?
Best when you're adding document upload, knowledge bases, or spec ingestion to agent workflows and want parser choice without three MCPs.
Skip if: Skip if you only need plain Markdown from repos and never touch PDFs, scans, or Office binaries.
What you get
After you register parse-mcp, your agent can parse and interpret heterogeneous documents through one MCP without you re-plumbing parsers per project.
- Unified parse and interpret tool calls from your agent across multiple parser backends
- Extracted text suitable for embeddings, summaries, or codegen context
- Configurable fallback to LlamaParse for harder document layouts
By the numbers
- 3 named parser backends: markitdown, Docling, and LlamaParse
- Server schema version 0.1.0 with stdio .mcpb distribution
- 1 optional secret env var: LLAMAPARSE_API_KEY for LlamaParse routing only
README.md
parse-mcp
One MCP, many parsers. Default markitdown (free, fast, MIT). Escalate to Docling (table-heavy, scanned PDFs) or LlamaParse (cloud, BYOK) when markitdown's quality isn't enough. Plus an interpret tool that pipes parsed markdown into Claude for "summarize / extract X" so you stop juggling parsers and anthropic skills.
Install
Open Claude Code, paste:
/plugin marketplace add adelaidasofia/parse-mcp
/plugin install parse-mcp@parse-mcp
Legacy install
Manual install (pre-plugin-marketplace). See SETUP.md for full details.
pip3 install --break-system-packages -r requirements.txt
pip3 install --break-system-packages 'markitdown[pdf,docx,pptx,xlsx]'
Then register the server in your client's .mcp.json:
{
"mcpServers": {
"parse": {
"command": "python3",
"args": ["/absolute/path/to/parse-mcp/server.py"]
}
}
}
Tools
| Tool | What it does |
|---|---|
parse(source, backend?, hints?) |
File path or http(s) URL to markdown. Router picks backend, falls back on empty/error. Returns markdown plus a chain of every backend attempted. |
parse_url(url, backend?) |
Shortcut for HTTP(S) inputs. Same return shape as parse. |
parse_to_vault(source, vault_folder?, backend?, overwrite?) |
Parse + write the result as a markdown note in the vault. Default folder: <VAULT_ROOT>/📥 Inbox/Converted/. Frontmatter records source, format, backend, latency, bytes_in. Replaces the standalone markitdown_to_vault.py shell script. |
interpret(source, instruction, backend?, model?, max_tokens?) |
Parse first, then ask Claude over the parsed markdown. Cache hits reuse parsed text for free input tokens. |
list_backends() |
Which backends are installed + which are missing. Diagnostic. |
benchmark(source) |
Run every available backend on the same input. Compare latency + output side by side. |
chunk_text(text, doc_type?, target_tokens?, max_tokens?, min_tokens?) |
Chunk parsed markdown into retrieval-ready pieces using a doc-type-aware chunker. doc_type="auto" (default) runs structural detection and picks one of paper / book / manual / qa / resume / table / default. Each chunker honors document shape (e.g., paper keeps the abstract whole; manual never merges across numbered sections; qa pairs each question with its answer). Returns chunks + the resolved doc_type. See chunkers/ package. |
detect_doc_type(text) |
Diagnostic. Run structural heuristics over markdown and return the doc_type that chunk_text would pick. |
Backends (priority order)
- markitdown (default, MIT, base install). PDF, DOCX, PPTX, XLSX, HTML, CSV, JSON, XML, EPub, ZIP. Fast, deterministic.
- docling (optional,
pip install docling). Best for complex tables (97.9% on benchmark) + scanned PDFs. Downloads model weights on first run. - llamaparse (optional, BYOK,
pip install llama-cloud-services+LLAMA_CLOUD_API_KEY). Cloud, cleanest output on visually-complex PDFs.
Routing strategy
parse(source)with nobackendarg: router picks based on file format, falls back if backend errors or returns empty.parse(source, backend="docling"): force a specific backend, no fallback. Diagnostic mode.- Unavailable backends are skipped (logged in the chain), never errored.
Architecture
FastMCP v3.2.3+, stdio transport, Python 3.13+. Registered in [VAULT_ROOT]/.mcp.json. No daemons, no listeners, no model weights downloaded by default.
See SETUP.md for install + per-backend opt-in.
Related MCPs
Same author, same architecture pattern (FastMCP, draft+confirm on writes, vault auto-export where applicable):
- slack-mcp — multi-workspace Slack
- imessage-mcp — macOS iMessage
- whatsapp-mcp — WhatsApp via whatsmeow
- apollo-mcp — Apollo.io CRM + sequences
- google-workspace-mcp — Gmail / Calendar / Drive / Docs / Sheets
- substack-mcp — Substack writing + analytics
Telemetry
This plugin sends a single anonymous install signal to myceliumai.co the first time it loads in a Claude Code session on a given machine.
What is sent:
- Plugin name (e.g.
slack-mcp) - Plugin version (e.g.
0.1.0)
What is NOT sent:
- No user identifiers, names, emails, tokens, or API keys
- No file paths, message content, or anything from your work
- No IP address is stored after dedup processing
Why: Helps the maintainer know which plugins people actually install, so attention goes to the ones that get used.
Opt out: Set the environment variable MYCELIUM_NO_PING=1 before launching Claude Code. The hook will skip the network call entirely. Already-pinged installs leave a sentinel at ~/.mycelium/onboarded-<plugin> — delete it if you want to reset state.
License
MIT. See LICENSE.
Full install or team version at diazroa.com.
Recommended MCP Servers
How it compares
MCP document-router integration, not a hosted parsing SaaS or a single-library skill.
FAQ
Who is parse-mcp for?
Developers using Claude Code, Cursor, or Codex who need reliable multi-format document text for RAG, imports, or planning from PDFs and Office files.
When should I use parse-mcp?
Use it during Build when you connect file uploads or external docs to your agent and want automatic routing between markitdown, Docling, and optional LlamaParse.
How do I add parse-mcp to my agent?
Install the v0.1.0.mcpb release, configure stdio in your MCP client, set LLAMAPARSE_API_KEY only if you route jobs to LlamaParse, then enable the server in Claude Code or Cursor.