关于 PDFluent
PDFluent 是供 MCP 客户端使用的本地 PDF 处理服务,适合需要从 PDF 提取内容、搜索或填写表单的用户。它可输出 Markdown、文本、表格和定位块,并将文件访问限制在获准目录内。
主要功能
- 01提取 Markdown、文本与表格
- 02读取定位文本块和元数据
- 03搜索文档内容
- 04列出并填写表单字段
- 05将文件访问限制在指定目录
适用场景
- 01提取 PDF 中的标题、列表和表格
- 02查找文档提及内容所在页
- 03填写表单并保存为新文件
MCP 相关
该 MCP 服务通过 stdio 向客户端提供本地 PDF 读取、搜索和表单填写工具。文件不会上传,读写范围受配置的目录限制。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
uvx pdfluent-mcpPDFLUENT_MCP_MAX_PAGESPages one call may read (default 200).PDFLUENT_MCP_MAX_BYTESLargest document the server opens, in bytes (default 104857600).PDFLUENT_MCP_MAX_OUTPUT_CHARSLongest result one call returns, in characters (default 200000).本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
9收录的工具列表 · 更新于 6 天前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| path | string | 是 | |
| pages | any | 否 | |
| quality | string | 否 |
详细介绍
pdfluent-mcp
一个适用于 PDFluent 的 MCP 服务。它可让 Claude Desktop、Claude Code、Cursor、VS Code 及其他任何 MCP 客户端,将本地 PDF 读取为 Markdown、纯文本、表格或带位置信息的块,查询其元数据、搜索内容,并将表单字段填写到新文件中。
它通过标准输入/输出运行,每个客户端使用一个进程,并基于 pdfluent Python 包。你的文档会保留在本机。服务只会在你允许的目录中读取和写入。均衡质量等级需要模型文件;运行 pdfluent models install 可下载一次。你的文档绝不会上传。
工具
| 工具 | 返回内容 |
|---|---|
extract_markdown(path, pages?, quality?) | 按阅读顺序排列的 Markdown 文档内容:标题、列表项和表格。省略页眉和页码。quality 为 fast(默认)或 balanced。 |
extract_text(path, pages?) | 逐页返回纯文本层,每页内容前都有 ``。 |
extract_tables(path, pages?) | tables:每个表格对应一项,包含 page、rows(单元格字符串列表)和 header_rows。 |
extract_blocks(path, pages?, include_furniture?) | blocks:每项包含 kind、text、page、bbox 和 confidence,适用时还包含 level、ordinal 或表格单元格位置。pages_needing_vision:缺少文本层的页面。 |
get_metadata(path) | 页数、标题、作者、日期、PDF 版本、加密状态、文档是否包含表单字段、签名和书签数量,以及缺少文本层的页面。 |
search(path, query) | 提及 query 的页面,每页最多包含三个摘要片段。 |
list_form_fields(path) | 每个表单字段的 name、type、value 和 page。 |
fill_form(path, values, out_path, overwrite?) | 填写指定字段,并在 out_path 创建新文件。输入文件不会更改;除非 overwrite 为 true,否则拒绝使用已存在的 out_path;如果该路径是符号链接,则始终拒绝。 |
vision_advice(path) | advice:每页对应一项,包含 needs_vision 及其原因。 |
所有参数和结果中的页码均从 0 开始。confidence 表示判断块类型的学习模型给出的概率;如果没有模型作出判断,则为 null。null 表示未知,不表示置信度低。
安装
需要 Python 3.10 或更高版本,以及 uv。uvx
会在首次使用时下载服务和 pdfluent,并将其缓存。
uvx pdfluent-mcp --root ~/Documents
或安装到你自己的环境中:
pip install pdfluent-mcp
pdfluent-mcp --root ~/Documents
允许的根目录
服务不会访问其根目录之外的任何内容。可通过 --root 指定根目录(多个目录可重复指定),也可使用 PDFLUENT_MCP_ROOTS(以 : 分隔;Windows 上使用 ;),或者由客户端提供:Claude Code 会将其工作目录和 --add-dir 指定的目录作为 MCP 根目录发送。如果服务没有从上述任何方式获得根目录,则每次调用都会返回相应提示。检查前会先解析符号链接,因此根目录内的链接无法指向根目录外。
根目录的范围与其指定的目录一样大。如果客户端将 /、~ 或整个驱动器作为 MCP 根目录提供,服务的访问范围就会扩大到用户可读取的所有内容;如果你不希望如此,请使用 --root 将服务限制在存放 PDF 的文件夹,并确保客户端提供的根目录范围较小。
还有三项限制:--max-pages(默认值为 200)限制单次调用返回的页数,因此长文档会通过 pages 分窗口读取(引擎在每个窗口中仍会解析整份文档;此上限限制的是输出,而非处理量);--max-bytes(默认值为 100 MiB)限制服务打开的文档大小;--max-output-chars(默认值为 200000)限制单次调用返回结果的长度,超过后会截断并给出提示。三项限制也可分别通过 PDFLUENT_MCP_MAX_PAGES、PDFLUENT_MCP_MAX_BYTES 和 PDFLUENT_MCP_MAX_OUTPUT_CHARS 设置。
请将下方的 /path/to/documents 替换为存放 PDF 的目录。
Claude Desktop
添加到 claude_desktop_config.json(macOS:
~/Library/Application Support/Claude/claude_desktop_config.json,Windows:
%APPDATA%\Claude\claude_desktop_config.json),然后重启 Claude Desktop:
{
"mcpServers": {
"pdfluent": {
"command": "uvx",
"args": ["pdfluent-mcp", "--root", "/path/to/documents"]
}
}
}
如果 Claude Desktop 找不到 uvx,请在 command 中填写其完整路径(which uvx)。
Claude Code
claude mcp add pdfluent -- uvx pdfluent-mcp --root /path/to/documents
Claude Code 也会将其工作目录作为 MCP 根目录,因此在项目内,只需执行 claude mcp add pdfluent -- uvx pdfluent-mcp。对于团队,可将以下内容放入项目的 .mcp.json:
{
"mcpServers": {
"pdfluent": {
"type": "stdio",
"command": "uvx",
"args": ["pdfluent-mcp"]
}
}
}
要告知 Claude 何时使用这些工具,请将此仓库中的 skill/pdfluent 复制到 ~/.claude/skills/pdfluent(适用于每个项目),或复制到某个项目中的 .claude/skills/pdfluent。
Cursor
添加到 Cursor
(然后更改 /path/to/documents),或添加到 ~/.cursor/mcp.json 或项目的 .cursor/mcp.json:
{
"mcpServers": {
"pdfluent": {
"type": "stdio",
"command": "uvx",
"args": ["pdfluent-mcp", "--root", "/path/to/documents"]
}
}
}
VS Code
在 VS Code 中安装, 或在终端中运行:
code --add-mcp '{"name":"pdfluent","type":"stdio","command":"uvx","args":["pdfluent-mcp","--root","/path/to/documents"]}'
也可以添加到工作区中的 .vscode/mcp.json(注意键名为 servers):
{
"servers": {
"pdfluent": {
"type": "stdio",
"command": "uvx",
"args": ["pdfluent-mcp", "--root", "/path/to/documents"]
}
}
}
Codex
添加到 ~/.codex/config.toml:
[mcp_servers.pdfluent]
command = "uvx"
args = ["pdfluent-mcp", "--root", "/path/to/documents"]
开发
pip install -e ".[test]"
pytest
测试会通过真实的 MCP 客户端,以 stdio 方式启动服务,调用 tests/fixtures 中 PDF 的所有工具,并尝试访问允许的根目录之外的位置。
许可
与其运行所依赖的 pdfluent 包相同:AGPL-3.0-only,或 PDFluent Commercial Licence。请参阅 LICENSE 和 LICENSE-COMMERCIAL。它依赖 mcp(MIT)。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。