
PDFluent
io.github.pdfluentPublished by GitHub account pdfluentv0.3.0Updated Nov 3, 2026
Read, search and fill PDFs as markdown, text, tables, forms. Your documents stay on your machine.
Overview
PDFluent's local MCP server; no sign-in required; STDIO.
No AI overview yet: these facts come from the registry entry and the server itself.
Installation
In SourceWeft
- Open PDFluent in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
pdfluent-mcp
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.
Set up in one line
This registers a stdio server named pdfluent in the user configs of Claude
Desktop, Claude Code, Cursor and Codex, then tells you to restart the clients.
It adds --root DIR (repeatable) to the saved command for each directory you
name, for example uvx pdfluent-mcp setup --root ~/Documents. Without
--root, file access relies on client MCP roots or PDFLUENT_MCP_ROOTS
(SETUP-001, SETUP-002).
--dry-runshows what would change and writes nothing.- Before it replaces a config file, setup saves the previous file next to it as
<name>.pdfluent-backup-<timestamp>and prints the path. --client claude-desktop|claude-code|cursor|codexlimits it to some clients (repeatable).uvx pdfluent-mcp uninstall(orsetup --uninstall) removes only thepdfluententry, and only when it was written bypdfluent-mcp(or with--force). It does not remove the Python package.
Close the clients before you run setup or uninstall. Files are replaced atomically, but no portable call lets setup detect a client that saves the same file in the last instant; a save in that gap can be lost, and where hard links are unavailable the backup is a plain copy and the gap is wider.
Setup keeps unrelated settings and servers, preserves TOML comments, and
refuses malformed configs and symbolic links. A different existing pdfluent
entry is left alone unless you pass --force
(SETUP-003). The saved launcher uses the absolute uvx
path when found, otherwise the current Python interpreter, which must stay
installed (SETUP-004).
Config files used: Claude Desktop's platform config (see below), Claude Code's
~/.claude.json, Cursor's ~/.cursor/mcp.json, and Codex's
~/.codex/config.toml (CODEX_HOME is respected).
One-click install, which registers the server with a placeholder root you then change: Add to Cursor and Install in VS Code.
Claude plugin
The repository is also a Claude plugin (.claude-plugin/plugin.json). It
bundles the pdfluent skill from skill/ and starts the local MCP server with
uvx pdfluent-mcp==0.3.0 over stdio, so the plugin runs one pinned PyPI
package and nothing else. A local MCP server loads in Claude Code and in
Cowork sessions on your computer; chat on claude.ai ignores it.
What the plugin does with data: the server reads PDFs only inside the
directories you allow, and writes only the new file that fill_form creates
there. It stores nothing, keeps no data after a call returns, and sends nothing
to any other service. The one download is the pdfluent package and, if you
choose the balanced tier, the model files from pdfluent models install. The
plugin is not aimed at people under 18.
Tools
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.
Install
Needs Python 3.10 or later and uv. uvx
downloads the server and pdfluent on first use and caches them.
Or into an environment of your own:
Allowed roots
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_MCP_MAX_BYTES and
PDFLUENT_MCP_MAX_OUTPUT_CHARS.
Replace /path/to/documents below with the directory your PDFs live in.
Claude Desktop
Add to claude_desktop_config.json (macOS:
~/Library/Application Support/Claude/claude_desktop_config.json, Windows:
%APPDATA%\Claude\claude_desktop_config.json) and restart Claude Desktop:
If Claude Desktop does not find uvx, write its full path (which uvx) in
command.
Claude Code
Claude Code also offers its working directory as an MCP root, so inside a
project claude mcp add pdfluent -- uvx pdfluent-mcp is enough. For a team,
put this in the project's .mcp.json:
To tell Claude when to reach for these tools, copy skill/pdfluent from this
repository to ~/.claude/skills/pdfluent (every project) or to
.claude/skills/pdfluent in one project.
Cursor
Add to Cursor
(then change /path/to/documents), or add to ~/.cursor/mcp.json or the
project's .cursor/mcp.json:
VS Code
Install in VS Code, or from a terminal:
Or add to .vscode/mcp.json in the workspace (note the key is servers):
Codex
Add to ~/.codex/config.toml:
Development
The tests start the server over stdio with a real MCP client, call every tool
on the PDFs in tests/fixtures, and try to step outside the allowed roots.
Licence
The same as the pdfluent package it runs on: AGPL-3.0-only, or the PDFluent
Commercial Licence. See LICENSE and LICENSE-COMMERCIAL. It depends on
mcp (MIT).
Source: README.md at commit 273798f
Tools
0Version history
2- v0.3.0LatestNov 3, 2026
- v0.2.0Oct 23, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts