Read, search and fill PDFs as markdown, text, tables, forms. Your documents stay on your machine.
MCPpedia last refreshed this data
io.github.pdfluent/pdfluent-mcp is an MCP server that read, search and fill PDFs as markdown, text, tables, forms. Your documents stay on your machine. Its tool list has not been published yet over stdio and http, requires no API key, and scores 86/100 on MCPpedia's security, maintenance and efficiency rubric.
Config is the same across clients - only the file and path differ.
{
"mcpServers": {
"pdfluent": {
"args": [
"pdfluent-mcp",
"--root",
"/path/to/documents"
],
"command": "uvx"
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
Read, search and fill PDFs as markdown, text, tables, forms. Your documents stay on your machine.
This server supports HTTP transport. Be the first to test it - help the community know if it works.
Five weighted categories - click any category to see the underlying evidence.
No known CVEs.
Checked pdfluent-mcp against OSV.dev.
Click any tool to inspect its schema.
Be the first to review
Have you used this server?
Share your experience - it helps other developers decide.
Sign in to write a review.
Others in writing
Checks every LaTeX reference against Crossref, dblp, arXiv, DataCite, PubMed and OpenAlex. No LLM.
Long-term memory for Claude: Markdown in a git repo you own. Survives context compaction.
一键同步文章到多个内容平台,支持今日头条、WordPress、知乎、简书、掘金、CSDN、typecho各大平台,一次发布,多平台同步发布。解放个人生产力
Scrape, crawl, and map websites to Markdown or JSON via local CLI.
MCP Security Weekly
Get CVE alerts and security updates for io.github.pdfluent/pdfluent-mcp and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
An MCP server for PDFluent. It lets Claude Desktop, Claude Code, Cursor, VS Code and any other MCP client read a local PDF as markdown, plain text, tables or positioned blocks, look up its metadata, search it, and fill its form fields into a new file.
It runs over stdio, one process per client, on the pdfluent Python package.
Your documents stay on your machine. The server reads and writes only inside the
directories you allow. The balanced quality tier needs model files; pdfluent models install downloads them once. Your documents are never uploaded.
| Tool | Returns |
|---|---|
extract_markdown(path, pages?, quality?) | The document as markdown in reading order: headings, list items and tables. Running heads and page numbers are left out. quality is fast (default) or balanced. |
extract_text(path, pages?) | The plain text layer, page by page, each page behind <!-- page N -->. |
extract_tables(path, pages?) | tables: one entry per table with page, rows (lists of cell strings) and header_rows. |
extract_blocks(path, pages?, include_furniture?) | blocks: each with kind, text, page, bbox and confidence, plus level, ordinal or table-cell position where they apply. pages_needing_vision: the pages whose text layer is missing. |
get_metadata(path) | Page count, title, author, dates, PDF version, encryption, whether the document has form fields, how many signatures and bookmarks it has, and which pages have no text layer. |
search(path, query) | The pages that mention query, with up to three snippets per page. |
list_form_fields(path) | Every form field with name, type, value and page. |
fill_form(path, values, out_path, overwrite?) | Fills the named fields and writes a new file at out_path. The input is never changed; an existing out_path is refused unless overwrite is true, and a symbolic link there is always refused. |
vision_advice(path) | advice: one entry per page with needs_vision and its reasons. |
Page numbers are 0-based in every argument and result. confidence is the
probability of the learned model that decided a block's kind; it is null
where no model decided it, and null means unknown, not low.
Needs Python 3.10 or later and uv. uvx
downloads the server and pdfluent on first use and caches them.
uvx pdfluent-mcp --root ~/Documents
Or into an environment of your own:
pip install pdfluent-mcp
pdfluent-mcp --root ~/Documents
The server touches nothing outside its roots. Give them with --root (repeat
for more than one), with PDFLUENT_MCP_ROOTS (:-separated, ; on
Windows), or let the client offer them: Claude Code sends its working
directory and --add-dir directories as MCP roots. A server with no root from
any of these answers every call with a message saying so. Symlinks are
resolved before the check, so a link inside a root cannot point outside it.
A root is as wide as the directory it names. A client that offers /, ~
or a drive as an MCP root widens the server to everything the user can read;
if that is not what you want, start the server with --root on the folder
your PDFs live in and keep the client's roots narrow.
Three more limits: --max-pages (default 200) is how many pages one call
returns, so a long document is read in windows through pages (the engine
still parses the whole document for every window; the cap bounds the output,
not the work); --max-bytes (default 100 MiB) is the largest document the
server opens; --max-output-chars (default 200000) is the longest result one
call returns, after which it is cut and says so. All three also read from
PDFLUENT_MCP_MAX_PAGES, `PDFLUENT