Context7
ส่งคู่มือการใช้ไลบรารีและเฟรมเวิร์กรุ่นล่าสุดให้ AI อ่านก่อนตอบ ช่วยให้โค้ดที่ AI เขียนไม่ใช้คำสั่งเก่าที่เลิกใช้แล้ว
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Read, search and fill PDFs as markdown, text, tables, forms. Your documents stay on your machine.
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
PDFLUENT_MCP_MAX_PAGES, PDFLUENT_MCP_MAX_BYTES, PDFLUENT_MCP_MAX_OUTPUT_CHARSต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"pdfluent": {
"command": "uvx",
"args": [
"pdfluent-mcp",
"--root"
],
"env": {
"PDFLUENT_MCP_MAX_PAGES": "ใส่ค่าของคุณ",
"PDFLUENT_MCP_MAX_BYTES": "ใส่ค่าของคุณ",
"PDFLUENT_MCP_MAX_OUTPUT_CHARS": "ใส่ค่าของคุณ"
}
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add pdfluent --env PDFLUENT_MCP_MAX_PAGES='ใส่ค่าของคุณ' --env PDFLUENT_MCP_MAX_BYTES='ใส่ค่าของคุณ' --env PDFLUENT_MCP_MAX_OUTPUT_CHARS='ใส่ค่าของคุณ' -- uvx pdfluent-mcp --rootเติมค่าที่เว้นว่างไว้ก่อนรัน
ตัวนี้ต้องใส่ค่าในคำสั่งเปิดเอง ให้คัดลอกค่าตั้งแล้วเติมค่า
วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"pdfluent": {
"command": "uvx",
"args": [
"pdfluent-mcp",
"--root"
],
"env": {
"PDFLUENT_MCP_MAX_PAGES": "ใส่ค่าของคุณ",
"PDFLUENT_MCP_MAX_BYTES": "ใส่ค่าของคุณ",
"PDFLUENT_MCP_MAX_OUTPUT_CHARS": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้ต้องใส่ค่าในคำสั่งเปิดเอง ให้คัดลอกค่าตั้งแล้วเติมค่า
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"pdfluent": {
"type": "stdio",
"command": "uvx",
"args": [
"pdfluent-mcp",
"--root"
],
"env": {
"PDFLUENT_MCP_MAX_PAGES": "ใส่ค่าของคุณ",
"PDFLUENT_MCP_MAX_BYTES": "ใส่ค่าของคุณ",
"PDFLUENT_MCP_MAX_OUTPUT_CHARS": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
PDFLUENT_MCP_MAX_PAGES envPDFLUENT_MCP_MAX_BYTES envPDFLUENT_MCP_MAX_OUTPUT_CHARS envค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 6 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub pdfluent ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.3.0) เข้า registry 3 วันที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Python (uv) ในเครื่องด้วย
ในหมวดเดียวกันมี Context7, Codebase Memory, Exa
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
ส่งคู่มือการใช้ไลบรารีและเฟรมเวิร์กรุ่นล่าสุดให้ AI อ่านก่อนตอบ ช่วยให้โค้ดที่ AI เขียนไม่ใช้คำสั่งเก่าที่เลิกใช้แล้ว
Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.
Connect AI agents to Exa for web search, content fetching, and multi-step research.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
pdfluent-mcp
An MCP server that lets your AI client read, search and fill local PDFs.
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.
Runs on your machine, no upload. 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. Your documents are never uploaded.
uvx pdfluent-mcp setup --root ~/Documents
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. pipx run pdfluent-mcp setup works the same way. Without --root, file access relies on client MCP roots or PDFLUENT_MCP_ROOTS (SETUP-001, SETUP-002).
Needs Python 3.10 or later and uv. uvx downloads the server and pdfluent on first use and caches them. The balanced quality tier needs model files; pdfluent models install downloads them once.
| Tool | What it does | Example prompt |
|---|---|---|
extract_markdown | The document as markdown in reading order: headings, list items and tables. Running heads and page numbers are left out. | "Summarise ~/Documents/report.pdf." |
extract_text | The plain text layer, page by page, each page behind . | "Give me the raw text of pages 0 to 2 of contract.pdf." |
extract_tables | One entry per table with page, rows and header_rows. | "Pull the tables out of invoice.pdf." |
extract_blocks | Positioned blocks with kind, text, page, bbox and confidence. Also lists the pages whose text layer is missing. | "List every heading in manual.pdf with its page." |
get_metadata | Page count, title, author, dates, PDF version, encryption, form fields, signatures, bookmarks, and pages with no text layer. | "How many pages does scan.pdf have, and is it encrypted?" |
search | The pages that mention a query, with up to three snippets per page. | "Which pages of policy.pdf mention retention?" |
list_form_fields | Every form field with name, type, value and page. | "Which fields does application.pdf have?" |
fill_form | Fills the named fields and writes a new file. The input is never changed. | "Fill application.pdf with my name and address, save as application-filled.pdf." |
vision_advice | One entry per page with needs_vision and its reasons. | "Which pages of scan.pdf need a vision model?" |
Page numbers are 0-based in every argument and result.
Tool arguments and result details
| 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 . |
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. |
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.
Replace /path/to/documents with the directory your PDFs live in.
Add to claude_desktop_config.json and restart Claude Desktop:
{
"mcpServers": { "pdfluent": { "command": "uvx", "args": ["pdfluent-mcp", "--root", "/path/to/documents"] } } }
Config file location and troubleshooting
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json, Windows: %APPDATA%\Claude\claude_desktop_config.json.
If Claude Desktop does not find uvx, write its full path (which uvx) in command.
claude mcp add pdfluent -- uvx pdfluent-mcp --root /path/to/documents
Project setup for a team, and the Claude skill
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:
{
"mcpServers": { "pdfluent": { "type": "stdio", "command": "uvx", "args": ["pdfluent-mcp"] } } }
To tell Claude when to reach for these tools, copy skills/pdfluent from this repository to ~/.claude/skills/pdfluent (every project) or to .claude/skills/pdfluent in one project.
Add to Cursor (then change /path/to/documents), or add to ~/.cursor/mcp.json or the project's .cursor/mcp.json:
{
"mcpServers": { "pdfluent": { "type": "stdio", "command": "uvx", "args": ["pdfluent-mcp", "--root", "/path/to/documents"] } } }
Install in VS Code, or from a terminal:
code --add-mcp '{"name":"pdfluent","type":"stdio","command":"uvx","args":["pdfluent-mcp","--root","/path/to/documents"]}'
Workspace config
Or add to .vscode/mcp.json in the workspace (note the key is servers):
{
"servers": { "pdfluent": { "type": "stdio", "command": "uvx", "args": ["pdfluent-mcp", "--root", "/path/to/documents"] } } }
Add to ~/.codex/config.toml:
[mcp_servers.pdfluent]
command = "uvx" args = ["pdfluent-mcp", "--root", "/path/to/documents"]
One-click install for Cursor and VS Code registers the server with a placeholder root that you then change.
Setup command: flags, backups, uninstall
--root DIR (repeatable) is added to the saved command for each directory you name, for example uvx pdfluent-mcp setup --root ~/Documents.--dry-run shows what would change and writes nothing. .pdfluent-backup- 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 above), Claude Code's ~/.claude.json, Cursor's ~/.cursor/mcp.json, and Codex's ~/.codex/config.toml (CODEX_HOME is respected).
Install into your own environment
pip install pdfluent-mcp
pdfluent-mcp --root ~/Documents
Allowed roots and limits
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.
Claude plugin and data handling
The repository is also a Claude plugin (.claude-plugin/plugin.json). It bundles the pdfluent skill from skills/ 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,
ตัดมาแค่ช่วงต้น อ่านต่อใน repo