ezmd MCP server
io.github.larpey/ezmd·v0.1.1Convert files, URLs and text to LLM-ready Markdown with paging, provenance and warnings.
0 stars171 downloads/wk
Reviews
Write oneNobody has reviewed ezmd yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
ezmd tools (5)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
convert_fileConvert a local file (PDF, DOCX, PPTX, XLSX, HTML, CSV, images, audio, ...) to Markdown. path must be absolute and inside the server's allowed directories. Clients without a filesystem may instead pass data_url (a base64 data: URL under 1 MB). Returns page 1, sections, warnings and next_cursor. options: as for convert_url (output options; limits may only be lowered).
convert_textConvert pasted text, HTML, CSV, JSON, Markdown or any string to clean Markdown. source_hint is a MIME type or extension ("text/html", "csv") used to break ties; detection runs on the content.
convert_urlConvert a web page or document URL (http/https) to Markdown. Returns page 1 of the result (at most max_tokens, default 8000, max 50000), the section list, warnings, and next_cursor for get_job. profile: full | compact | rag | agent (default agent). options: output options such as {"ocr": false, "languages": ["en"], "max_pages": 50}; limits (max_pages, max_bytes, max_seconds, max_duration_seconds)
get_jobReturn a job's status while it runs, otherwise the page at cursor (or page 1). This is the pagination endpoint for all convert tools: pass the previous result's next_cursor unchanged. A cursor is bound to its job and profile.
list_capabilitiesSupported input types and converters (with the extra each needs when not installed), profiles, limits, and whether URL fetching is allowed. Call it to decide whether to try an input or ask the user to upload it instead.
Public scan report
scanner v0.1.10 · 2026-10-24 · same rubric, same numbers if you re-run it
- Code scan14 source files scanned25/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitystatic API keys via environment variables6/15
- Maintenancelast push 0 days ago15/15
- Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
How ezmd compares
Against every graded AI and agents MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 83/100
- higher than 68% of 4,460 AI and agents servers
- Tools
- 5
- the typical AI and agents server has 6
- Tools that change things
- 0%
- typical: 0%. Fewer write tools means less an agent can break
- Downloads a week
- 171
- more than 72% of 1,538 AI and agents servers with a package
What its tools let an agent do: 5 read
Install ezmd in Claude Code, Cursor or VS Code
claude mcp add ezmd -- uvx ezmd-mcp
What the publisher says
From the ezmd repository's README, as published. We do not edit it. Read it on GitHub
ezmd
Anything in. Clean Markdown out. ezmd turns PDFs, Office files, web pages, data files, code and archives into Markdown that AI models read well, keeps a record of where every part came from, and tells you what it could not convert.
<!-- readme: skip (installs from the network) -->
pip install ezmd # Python 3.12 or newer; or: uv tool install ezmd
ezmd convert paper.pdf # Markdown on stdout, warnings on stderr
ezmd convert https://example.com -o page.mdApache-2.0. Runs on a CPU with no model downloads. Works as a CLI, a Python library, an MCP server for Claude, Cursor and other agents, a REST API with a web UI, and a self-hosted Docker stack.
What you get
Converting the Mamba paper (36 pages, CC BY 4.0) with the default install takes about four seconds and gives one Markdown file:
---
title: "Mamba: Linear-Time Sequence Modeling with Selective State Spaces"
source: "mamba.pdf"
source_type: pdf
pages: 36
word_count: 22409
tokens: {o200k_base: 44058, cl100k_base: 44292, claude_approx: 47583}
warnings: [removed_script_or_macro, engine_fallback, removed_running_header_footer, injection_suspected]
---
# Mamba: Linear-Time Sequence Modeling with Selective State Spaces
## 1 Introduction {#sec-1}
...
## 3 Selective State Space Models {#sec-3}
### 3.1 Motivation: Selection as a Means of Compression {#sec-3-1}Every conversion comes with three things:
content hash, and the list of warning codes. An agent can decide what to do with a document before reading it.
- A header of facts. Title, source, page count, word count, token counts under three tokenizers, a
superscripts stay superscripts (10²⁰, not 1020), lists stay lists, links keep their targets. Running headers, footers and page numbers are removed; words broken across lines are joined.
- Structure, kept. Headings follow the document's own outline, with anchors. Tables stay tables,
a count, the pages involved and a suggestion: pages with no text layer, glyphs the PDF's fonts cannot map to text, a table that lost its header, content that looks like instructions to an AI. The full list is in docs/warnings.md.
- Warnings, not silence. Everything ezmd detects it could not convert becomes a warning with a code,
With --sidecar, a JSON file beside the Markdown records the page and position of every block, so answers can cite the page they came from.
Use it from
The command line
<!-- readme: run -->
uv run ezmd convert fixtures/office/docx-review/input.docx --profile compact
uv run ezmd convert fixtures/pdf/born-digital-report/input.pdf --profile rag
uv run ezmd convert fixtures/text/markdown-kitchen-sink/input.md --json
uv run ezmd detect fixtures/pdf/born-digital-report/input.pdf
uv run ezmd batch fixtures/text --recursive --out out/textThe commands above run from a source checkout and use files from fixtures/, so you can paste them as they are; installed, drop the uv run. Warnings go to stderr as WARN [code] message. ezmd batch skips unchanged inputs when run again. URLs are fetched through an SSRF guard that refuses private and loopback addresses:
<!-- readme: skip (needs network access) -->
uv run ezmd convert https://example.com --profile compactEvery command and option: docs/cli.md.
Python
<!-- readme: run -->
import ezmdShortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
ezmd: common questions
- Is ezmd MCP server safe?
- Mostly: it is graded B (83/100). Read the ezmd safety report
- How do I install ezmd?
- It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
- Does ezmd need an API key?
- Yes. The registry entry asks for
EZMD_API_KEY. - Is ezmd maintained?
- The last commit was 11 days ago (2026-10-24). The latest release is v0.1.1.
- What can I use instead of ezmd?
- Servers from other publishers that do the same job: Basic Memory MCP server, DataSinking MCP server and PaperBanana MCP server.
- How does ezmd compare with other AI and agents MCP servers?
- safety score 83/100 (higher than 68% of 4,460 AI and agents servers); tools 5 (the typical AI and agents server has 6); tools that change things 0% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.
Alternatives to ezmd
Same job from other publishers: the closest match first, then the best rated.
- Basic MemoryLocal-first knowledge management with bi-directional LLM sync via Markdown files.not reviewedWidely usedB
- DataSinkingFull-text financial reports (US, China, Japan, Korea, Taiwan, UK) as clean Markdown for RAG agents.not reviewedEstablishedA
- PaperBananaGenerate academic diagrams and statistical plots from text using multi-agent AI.not reviewedEstablishedA
- IWE (iwe.md)Markdown knowledge base as agent memory. Runs against the notes directory it is started in.not reviewedEstablishedA
- Agent RecallCorrection-first agent memory. Precision KPI tracks if agents heed warnings. 5 layers, local-only.not reviewedEstablishedA