PDFluent

io.github.pdfluent由 GitHub 帳號 pdfluent 發布v0.3.0更新於 Nov 3, 2026

以markdown、文字、表格和表單形式讀取、搜尋並填寫PDF。你的文件保留在你自己的機器上。

AI 翻譯由 AI 模型根據下方的原文描述翻譯,可能有誤。

原文描述

Read, search and fill PDFs as markdown, text, tables, forms. Your documents stay on your machine.

已驗證STDIO僅桌面檔案與儲存知識與記憶

概覽

PDFluent 的本機 MCP 服務;無需登入;STDIO。

暫無 AI 概覽:以下資訊來自註冊中心條目和服務本身。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 PDFluent,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

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

bash
uvx pdfluent-mcp setup# orpipx run pdfluent-mcp setup

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-run shows 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|codex limits it to some clients (repeatable).
  • uvx pdfluent-mcp uninstall (or setup --uninstall) removes only the pdfluent entry, and only when it was written by pdfluent-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

ToolReturns
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.

Install

Needs Python 3.10 or later and uv. uvx downloads the server and pdfluent on first use and caches them.

bash
uvx pdfluent-mcp --root ~/Documents

Or into an environment of your own:

bash
pip install pdfluent-mcppdfluent-mcp --root ~/Documents

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:

json
{  "mcpServers": {    "pdfluent": {      "command": "uvx",      "args": ["pdfluent-mcp", "--root", "/path/to/documents"]    }  }}

If Claude Desktop does not find uvx, write its full path (which uvx) in command.

Claude Code

bash
claude mcp add pdfluent -- uvx pdfluent-mcp --root /path/to/documents

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:

json
{  "mcpServers": {    "pdfluent": {      "type": "stdio",      "command": "uvx",      "args": ["pdfluent-mcp"]    }  }}

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:

json
{  "mcpServers": {    "pdfluent": {      "type": "stdio",      "command": "uvx",      "args": ["pdfluent-mcp", "--root", "/path/to/documents"]    }  }}

VS Code

Install in VS Code, or from a terminal:

bash
code --add-mcp '{"name":"pdfluent","type":"stdio","command":"uvx","args":["pdfluent-mcp","--root","/path/to/documents"]}'

Or add to .vscode/mcp.json in the workspace (note the key is servers):

json
{  "servers": {    "pdfluent": {      "type": "stdio",      "command": "uvx",      "args": ["pdfluent-mcp", "--root", "/path/to/documents"]    }  }}

Codex

Add to ~/.codex/config.toml:

toml
[mcp_servers.pdfluent]command = "uvx"args = ["pdfluent-mcp", "--root", "/path/to/documents"]

Development

bash
pip install -e ".[test]"pytest

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).

來源:README.md,提交 273798f

工具

0
SourceWeft 曾在隔離沙箱中以無憑證方式啟動該軟體包一次,以列出其工具,但未能完成:伺服器未能啟動。

版本歷史

2
  1. v0.3.0最新Nov 3, 2026
  2. v0.2.0Oct 23, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分