Puter MCP
Puter MCP enables AI tools to interact with Puter: manage files, websites, workers, and more
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
MCP server for PDF generation, parsing, splitting, merging, and manipulation via oxidize-pdf
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
ผลตรวจผ่าน 2/2 · ทำงานบนเครื่องคุณ
ขั้นแรก: คุณใช้ AI ตัวไหน
เลือกแอปที่คุณใช้ ขั้นตอนจะขึ้นด้านล่าง
ต่อกับ Claude ได้ แต่ต้องเตรียมก่อน
ต้องลง Python (uv) ในเครื่องก่อน (ทำครั้งเดียว) · ใช้ได้เฉพาะแอป Claude บนคอม (Windows หรือ Mac) ไม่ใช่บนเว็บหรือมือถือ
ทำครั้งเดียว ใช้ได้กับทุกตัวที่ต้องใช้ Python (uv)
SettingsDeveloperEdit Config
{
"mcpServers": {
"oxidize-pdf": {
"command": "uvx",
"args": [
"oxidize-pdf",
"oxidize-mcp"
]
}
}
}ใช้ oxidize-pdf MCP Server บอกหน่อยว่าทำอะไรให้ฉันได้บ้าง แล้วลองทำให้ดูหนึ่งอย่าง✓ ถ้า Claude บอกว่ากำลังใช้ oxidize-pdf MCP Server หรือมีชื่อเครื่องมือของ oxidize-pdf MCP Server ขึ้นในคำตอบ แปลว่าต่อสำเร็จ
ชื่อเมนูตรวจกับหน้าช่วยเหลือของ Anthropic เมื่อ 11 พ.ย. 2569 · หน้าจอของคุณอาจต่างเล็กน้อยตามรุ่นของแอป
ChatGPT ยังต่อ oxidize-pdf MCP Server ไม่ได้
oxidize-pdf MCP Server ต้องติดตั้งในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะตัวที่ทำงานบนเว็บ
ก · ใช้แอปที่ต่อ oxidize-pdf MCP Server ได้
ต่อกับ Claude Code ได้ แต่ต้องเตรียมก่อน
ต้องลง Python (uv) ในเครื่องก่อน (ทำครั้งเดียว)
ทำครั้งเดียว ใช้ได้กับทุกตัวที่ต้องใช้ Python (uv)
Mac: กด Command+Space พิมพ์ Terminal · Windows: เปิด PowerShell
claude mcp add oxidize-pdf -- uvx oxidize-pdf oxidize-mcpต้องเห็น oxidize-pdf MCP Server ในรายการและขึ้นว่าเชื่อมต่อแล้ว
ใช้ oxidize-pdf MCP Server บอกหน่อยว่าทำอะไรให้ฉันได้บ้าง แล้วลองทำให้ดูหนึ่งอย่าง✓ ถ้า Claude Code บอกว่ากำลังใช้ oxidize-pdf MCP Server หรือมีชื่อเครื่องมือของ oxidize-pdf MCP Server ขึ้นในคำตอบ แปลว่าต่อสำเร็จ
ชื่อเมนูตรวจกับหน้าช่วยเหลือของ Anthropic เมื่อ 11 พ.ย. 2569 · หน้าจอของคุณอาจต่างเล็กน้อยตามรุ่นของแอป
ต่อกับ Cursor ได้ แต่ต้องเตรียมก่อน
ต้องลง Python (uv) ในเครื่องก่อน (ทำครั้งเดียว)
ทำครั้งเดียว ใช้ได้กับทุกตัวที่ต้องใช้ Python (uv)
ใช้ oxidize-pdf MCP Server บอกหน่อยว่าทำอะไรให้ฉันได้บ้าง แล้วลองทำให้ดูหนึ่งอย่าง✓ ถ้า Cursor บอกว่ากำลังใช้ oxidize-pdf MCP Server หรือมีชื่อเครื่องมือของ oxidize-pdf MCP Server ขึ้นในคำตอบ แปลว่าต่อสำเร็จ
ชื่อเมนูตรวจกับหน้าช่วยเหลือของ Cursor เมื่อ 11 พ.ย. 2569 · หน้าจอของคุณอาจต่างเล็กน้อยตามรุ่นของแอป
ต่อกับ VS Code ได้ แต่ต้องเตรียมก่อน
ต้องลง Python (uv) ในเครื่องก่อน (ทำครั้งเดียว)
ทำครั้งเดียว ใช้ได้กับทุกตัวที่ต้องใช้ Python (uv)
ใช้ oxidize-pdf MCP Server บอกหน่อยว่าทำอะไรให้ฉันได้บ้าง แล้วลองทำให้ดูหนึ่งอย่าง✓ ถ้า VS Code บอกว่ากำลังใช้ oxidize-pdf MCP Server หรือมีชื่อเครื่องมือของ oxidize-pdf MCP Server ขึ้นในคำตอบ แปลว่าต่อสำเร็จ
ชื่อเมนูตรวจกับหน้าช่วยเหลือของ VS Code เมื่อ 11 พ.ย. 2569 · หน้าจอของคุณอาจต่างเล็กน้อยตามรุ่นของแอป
โปรแกรมอื่นที่ใช้ MCP ได้ เช่น Windsurf, Zed หรือ Gemini CLI มีวิธีเพิ่มต่างกัน ดูวิธีของแต่ละตัวในหน้ารวมโปรแกรม
ค่าตั้งแบบไฟล์ JSON อยู่ในหัวข้อ “สำหรับคนเขียนโค้ด” ด้านล่าง
Claude Code
claude mcp add oxidize-pdf -- uvx oxidize-pdf oxidize-mcpClaude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"oxidize-pdf": {
"command": "uvx",
"args": [
"oxidize-pdf",
"oxidize-mcp"
]
}
}
}Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"oxidize-pdf": {
"command": "uvx",
"args": [
"oxidize-pdf",
"oxidize-mcp"
]
}
}
}VS Code (mcp.json)
{
"servers": {
"oxidize-pdf": {
"type": "stdio",
"command": "uvx",
"args": [
"oxidize-pdf",
"oxidize-mcp"
]
}
}
}ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
pypi: oxidize-pdfดูจากแบบการต่อของ server ตัวนี้ และเอกสารของผู้ทำโปรแกรมแต่ละตัว ตรวจเมื่อ 10 พ.ย. 2569
ติดตั้งบนเครื่องได้ใน
ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 11 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub bzsanti ซึ่งเป็นเจ้าของ repo
มีการแก้โค้ดล่าสุด 9 วันที่ผ่านมา
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
ถาม แชร์เคล็ดลับ หรือแจ้งว่าใช้ไม่ได้ เรียงตามที่คนกดว่ามีประโยชน์
ยังไม่มีใครโพสต์ ถามหรือแชร์เป็นคนแรกได้เลย
ข้อความในส่วนนี้เขียนโดยผู้ใช้ ไม่ใช่ทีม PopNx
ยังไม่มีรีวิว
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 2 จาก 2 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด 9 วันที่ผ่านมา และส่งรุ่นล่าสุด (0.23.0) เข้า registry 17 วันที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Python (uv) ในเครื่องด้วย
ในหมวดเดียวกันมี Puter MCP, XcodeBuildMCP, XcodeBuildMCP
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:↓ ดาวน์โหลดต่อสัปดาห์i★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
Puter MCP enables AI tools to interact with Puter: manage files, websites, workers, and more
ให้ AI จัดการโปรเจกต์ Xcode สั่ง build และใช้ iOS Simulator
XcodeBuildMCP provides tools for Xcode project management, simulator management, and app utilities.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
Documentation · Context7 · Documentation publishing and indexing
Version 0.23.4 pins Rust core 5.5.6. See compatibility and validation.
Rust-powered PDF library for Python. Generate, parse, split, merge, and manipulate PDFs with native performance. Ships with a built-in MCP server so AI agents can work with PDFs out of the box.
No C dependencies. No Java. No subprocess calls.
pip install oxidize-pdf # Core library
pip install "oxidize-pdf[mcp]" # + MCP server for AI agents
Platforms: Linux (x86_64, aarch64) | macOS (x86_64, Apple Silicon) | Windows (x86_64) Requires: Python 3.10+
Version 0.23.4 pins Rust core 5.5.6, using the MIT-licensed oxidize-webpki RustCrypto provider for certificate verification. See the dependency policy for supported builds and limits. 0.23.4 release notes describe the signed-field permission fixes. New APIs include explicit text recovery, non-breaking-space normalization, build identification controls and incremental signature slots. See the API guide and validation.
The current develop branch contains post-release parity work. See the current capability inventory and Python/.NET comparison for the audited subset, missing bindings and inherited core limitations. Neither the core version nor the type stubs establish full functional parity; no global coverage percentage is claimed.
| oxidize-pdf | Pure-Python libs | C/Java wrappers | |
|---|---|---|---|
| Performance | Native (compiled Rust) | Interpreted | Native but heavy |
| Dependencies | Zero | Varies | Poppler, Java, Ghostscript |
| Memory safety | Rust ownership model | GC-dependent | Manual / GC |
| Type stubs | Public API inventory + strict mypy checks on develop | Varies | Varies |
| AI-ready (MCP) | Built-in | No | No |
Expose the supported PDF tools to your AI agent:
oxidize-mcp
The built-in Model Context Protocol server exposes 12 tools, 5 static resources plus a session resource template, and 5 prompts over stdio. Install oxidize-pdf[mcp] to include its dependencies; the base library keeps MCP optional.
Version 0.20 uses FastMCP 4 and MCP Python SDK 2, with support for both modern and legacy stdio clients. See the migration guide for versions and installation routes.
If tools/list returns an empty array with an older installation (issue #198), upgrade to 0.20.0 or newer. These versions fix tool registration when starting server.py directly. On Windows, use the same Python environment for installation and startup:
python -m pip install --upgrade "oxidize-pdf[mcp]"
python -m oxidize_pdf.mcp.server
For a custom JSON-RPC client, send initialize, wait for its response, then send notifications/initialized before tools/list. Read newline-delimited JSON-RPC from stdout and keep stderr separate; the startup banner is written to stderr.
Add to your claude_desktop_config.json:
{
"mcpServers": { "oxidize-pdf": { "command": "oxidize-mcp", "env": { "OXIDIZE_WORKSPACE": "/path/to/your/pdfs" } } } }
Copilot's agent mode speaks MCP. Add .vscode/mcp.json to your workspace:
{
"servers": { "oxidize-pdf": { "command": "oxidize-mcp", "env": { "OXIDIZE_WORKSPACE": "/path/to/your/pdfs" } } } }
Open the Chat view, switch to Agent mode, and the 12 PDF tools appear in the tool picker. (The same block also works under the mcp.servers key in your user settings.json if you prefer a global install.)
The OpenAI Agents SDK spawns the server over stdio and exposes its tools to an agent:
from agents import Agent, Runner
from agents.mcp import MCPServerStdio
async with MCPServerStdio( params={"command": "oxidize-mcp", "env": {"OXIDIZE_WORKSPACE": "/path/to/your/pdfs"}}, cache_tools_list=True, ) as server: agent = Agent( name="PDF assistant", instructions="Use the oxidize-pdf tools to inspect and manipulate PDFs.", mcp_servers=[server], ) result = await Runner.run(agent, "How many pages does report.pdf have?") print(result.final_output)
A runnable version is in examples/openai_agents_quickstart.py.
Both integrations run the server locally over stdio, so its tools operate
on PDFs in the configured workspace directory. This package does not expose
a hosted HTTP endpoint. ChatGPT web needs a remote connection; developer-mode
testing can also use Secure MCP Tunnel
with a local stdio server. No ChatGPT plugin is published by this migration.
| Tool | What it does |
|---|---|
read_pdf | Read metadata — page count, version, encryption status, title, author |
extract_text | Extract text from all pages or a specific page |
convert_pdf | Convert to markdown, chunks, or RAG-optimized format |
create_pdf | Create a new PDF with optional metadata |
save_pdf | Save a session to disk, with optional encryption |
add_content | Add pages, text, and graphics to a session |
annotate_pdf | Add text annotations and highlights |
manipulate_pdf | Split, merge, rotate, extract pages, reverse, overlay |
manage_forms | Create, fill, read, and validate form fields |
secure_pdf | Encrypt, check permissions, verify signatures |
extract_entities | Extract structured entities from pages |
analyze_pdf | Validate structure, detect corruption, check PDF/A compliance |
The server also exposes resources (session data, capabilities, version info) and prompts (guided workflows for summarization, data extraction, form filling, and more).
OXIDIZE_WORKSPACE=/path/to/pdfs oxidize-mcp
The server is configured entirely through environment variables:
| Variable | Default | Purpose |
|---|---|---|
OXIDIZE_WORKSPACE | ~/Documents/oxidize-mcp | Sandbox root; all paths must resolve inside it. |
OXIDIZE_ALLOWED_PATHS | _(none)_ | Comma-separated extra directories allowed outside the workspace. |
OXIDIZE_MAX_FILE_SIZE_MB | 100 | Reject input PDFs larger than this on disk. |
OXIDIZE_MAX_PAGES | 10000 | Reject documents with more pages than this before any extraction work. |
OXIDIZE_MAX_OUTPUT_BYTES | 10485760 | Cap the serialized size of a tool's JSON response (10 MB). |
OXIDIZE_MAX_SESSIONS | 10 | Maximum concurrent stateful PDF-creation sessions. |
OXIDIZE_MAX_SESSION_BYTES | 10485760 | Cap the content a single session may accumulate (10 MB). |
OXIDIZE_SESSION_TIMEOUT | 3600 | Session expiry, in seconds. |
Resource caps (OXIDIZE_MAX_*) protect the server from a large or malicious PDF: oversized documents are rejected up front and tool responses are bounded rather than serialized unbounded. Exceeding a cap returns an error with code RESOURCE_LIMIT.
Or start programmatically:
from oxidize_pdf.mcp.server import run
run()
from oxidize_pdf import Document, Page, Font, Color
doc = Document() doc.set_title("My Document") doc.set_author("Jane Doe")
page = Page.a4() page.set_font(Font.HELVETICA, 24.0) page.set_text_color(Color.black()) page.text_at(72.0, 750.0, "Hello from oxidize-pdf!")
page.set_font(Font.TIMES_ROMAN, 12.0) page.text_at(72.0, 700.0, "Generated with Python + Rust.")
doc.add_page(page) doc.save("output.pdf")
from oxidize_pdf import PdfReader
reader = PdfReader.open("document.pdf") print(f"Pages: {reader.page_count}, Version: {reader.version}")
for i, text in enumerate(reader.extract_text()): print(f"--- Page {i + 1} ---") print(text)
from pathlib import Path
from oxidize_pdf import TaggedPdfLimits, TaggedPdfValidationOptions, validate_tagged_pdf
report = validate_tagged_pdf( Path("input.pdf").read_bytes(), TaggedPdfValidationOptions(TaggedPdfLimits(max_depth=64)), ) for finding in report.findings: print(finding.severity, finding.code, finding.path, finding.message)
The report includes structure elements, artifacts, role/class maps, the parent number tree and content MCIDs. Original dictionary values remain typed PdfValue objects, including unknown attributes and reference generations. Results are immutable snapshots; returned lists and dictionaries are owned copies.
valid means the core validator found no error-level findings. It is not a PDF/UA certificate: an untagged PDF can have tagged=False, valid=True and a MissingStructureTree warning. Malformed input raises PdfParseError, locked input raises PdfEncryptionError, and exceeded validation budgets raise PdfError.
TaggedPdfLimits bounds visited objects, traversal depth, entries and decoded content bytes (defaults: 100,000; 256; 1,000,000; 256 MiB). These are core validator budgets, not a process memory or time limit: input copying and initial PDF parsing occur before traversal. No PDF bytes are modified.
from oxidize_pdf import split_pdf, merge_pdfs, rotate_pdf, extract_pages
split_pdf("input.pdf", "output_dir/") # Split into individual pages merge_pdfs(["part1.pdf", "part2.pdf"], "merged.pdf") # Merge multiple PDFs rotate_pdf("input.pdf", "rotated.pdf", 90) # Rotate all pages extract_pages("input.pdf", "subset.pdf", [0, 2, 4]) # Extract specific pages
from oxidize_pdf import Document, Page, Color
doc = Document() page = Page.a4()
page.set_fill_color(Color.hex("#3498db")) page.draw_rect(72.0, 700.0, 200.0, 100.0) page.fill()
page.set_stroke_color(Color.red()) page.set_line_width(2.0) page.draw_circle(300.0, 500.0, 50.0) page.stroke()
doc.add_page(page) doc.save("graphics.pdf")
from oxidize_pdf import Color, Point, Rectangle, Margins, Font
Color.rgb(1.0, 0.0, 0.0) # RGB Color.hex("#ff6600") # Hex Color.cmyk(0.0, 1.0, 1.0, 0.0) # CMYK
Point(72.0, 720.0) Rectangle.from_xywh(72.0, 72.0, 468.0, 648.0) Margins.uniform(72.0)
Font.HELVETICA # Font.HELVETICA_BOLD Font.TIMES_ROMAN # Font.TIMES_BOLD Font.COURIER