Precision PDF MCP Server
by zuan412
README.md
<div align="center">
# ๐ฏ Precision PDF MCP Server (`precision-pdf-mcp`)
**Pixel-Perfect PDF Form and Worksheet Filling for AI Coding Agents.**
*Powered by Hybrid Vector-Raster Geometry, Set-of-Marks (SoM), and Virtual Excel Grounding.*
[](https://www.python.org/downloads/)
[](https://modelcontextprotocol.io)
[](https://opensource.org/licenses/MIT)
[]()
</div>
---
## ๐ก Why Precision PDF?
Filling assignment worksheets, tax forms, and scanned PDF workbooks has always been a painful failure mode for Large Language Models (LLMs):
- โ **The "Floating Text" Bug:** LLMs guess raw `(x, y)` floats, causing answers to float aimlessly above or below lines.
- โ **The "Collision" Bug:** Answers smash directly into printed text (e.g., `Heis going`, `Parentsmust`, `1)wear`).
- โ **The "Scanned PDF" Blindspot:** Most PDF tools rely only on vector drawings. Scanned workbooks have **0 vector lines**, leaving AI completely blind.
- โ **Multi-Line Truncation:** Long answers get crammed into line 1 or truncated because the agent doesn't realize two lines are printed for that question.
**Precision PDF solves this once and for all.**
---
## ๐ Key Innovations
```
[ Input PDF: Digital or Scanned Workbook ]
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ 1. Tri-Layer Hybrid Detector โ
โ โข Vector Lines & Rects (pdfplumber) โ
โ โข In-Memory Morphological Line Scanner (NumPy) โ
โ Detects physical lines in scanned images in RAM! โ
โ โข Text Anchors & Gap Numbers (1), 2., He_________) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ 2. Context Guards & Smart Layout โ
โ โข Padding Guard: Auto +6pt..+10pt margin after โ
โ printed subjects (He, You, Jenny...) โ
โ โข Multi-Line Grouping: Detects stacked lines & auto- โ
โ wraps long sentences at natural word boundaries โ
โ โข Auto-Scale Font: Scales down font to prevent crash โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ 3. Virtual Excel Matrix & Set-of-Marks (Agent View) โ
โ โข Renders Top Columns (A, B, C...) & Rows (1, 2, 3) โ
โ โข Badges targets: [S01], [S02], [S03]... โ
โ โข STRICTLY VIRTUAL: Only for the agent to inspect! โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ 4. Clean Vector Injection (Output PDF) โ
โ โข Baseline Snapped: Text rests 1.2pt above line โ
โ โข Centered in Boxes: Dead-center horizontally & vert โ
โ โข Crisp Circles / Underlines: Vector option markers โ
โ โข ZERO GRID POLLUTION: Output PDF is 100% clean! โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
```
---
## ๐ฆ Installation & Quickstart
### Method 1: Instant Run with `uvx` (Recommended)
No installation required. Run directly in Claude Desktop or Cursor via `uvx`:
```bash
uvx precision-pdf-mcp
```
### Method 2: Install via `pip`
```bash
pip install precision-pdf-mcp
```
### Method 3: From Source (Local Development)
```bash
git clone https://github.com/zuan412/precision-pdf-mcp.git
cd precision-pdf-mcp
pip install -e .
```
---
## ๐ ๏ธ MCP Client Configuration
### 1. Claude Desktop
Add to your `claude_desktop_config.json`:
**macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
**Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
```json
{
"mcpServers": {
"precision-pdf": {
"command": "uvx",
"args": ["precision-pdf-mcp"]
}
}
}
```
### 2. Cursor IDE
Add to Cursor Settings -> MCP Servers (`~/.cursor/mcp.json`):
```json
{
"mcpServers": {
"precision-pdf": {
"command": "uvx",
"args": ["precision-pdf-mcp"]
}
}
}
```
### 3. Antigravity / Gemini CLI / Windsurf / Cline
In your `mcp_config.json`:
```json
{
"mcpServers": {
"precision-pdf": {
"command": "python",
"args": ["-m", "precision_pdf"]
}
}
}
```
---
## ๐งฐ Available MCP Tools
### `hpe_inspect_virtual_grid`
Generates a temporary Virtual Excel Matrix inspector image with Set-of-Marks badges (`[S01]`, `[S02]`...) and returns a JSON catalog of detected slots.
* **Arguments:**
- `pdf_path` (string, required): Absolute path to the PDF.
- `page_number` (int, required): 1-based page number.
- `dpi` (int, optional, default: 150): Image resolution.
* **Returns:**
- `inspector_image_path`: Path to the image for agent visual inspection.
- `slots`: Dictionary of slots containing grid address (e.g. `Col D, Row 14`), type, baseline, and width.
### `hpe_fill_slots`
Injects answers directly into the target PDF using Slot IDs.
* **Arguments:**
- `pdf_path` (string, required): Absolute path to the PDF.
- `page_number` (int, required): 1-based page number.
- `slot_answers_json` (string, required): JSON string of answers.
- Slot map: `{"S01": "must have left", "S02": "could do"}`
- Multi-line wrap: `{"S03": ["first line text", "second line text"]}`
- Option circle: `{"circle_option": "A"}`
- Option underline: `{"underline_option": "Shall"}`
- `output_path` (string, optional): Output PDF path. If omitted, safely updates in-place.
* **Guarantees:**
- **100% baseline snap** (rests naturally on the printed line).
- **Zero grid pollution** (no rulers or badges in final output).
### `hpe_render_clean_verify`
Renders the final, clean PDF page to an image for visual QA verification.
* **Arguments:**
- `pdf_path` (string, required): Path to the completed PDF.
- `page_number` (int, required): 1-based page number.
- `dpi` (int, optional, default: 150): Output DPI.
---
## ๐งช Testing
Run the included unit test suite:
```bash
python -m unittest discover -s tests
```
---
## ๐ก๏ธ Zero Disk Pollution & Safety Guarantee
Precision PDF is engineered to run in memory:
- All morphological line detection and raster scanning execute in RAM via NumPy arrays and `io.BytesIO`.
- Temporary inspector previews use OS-standard `tempfile.gettempdir()/precision_pdf` or the `$PRECISION_PDF_TEMP_DIR` environment variable.
- Stdio JSON-RPC communication is 100% isolated: all logs, warnings, and internal debug outputs route strictly to `sys.stderr`.
---
## ๐ License
MIT License. See [LICENSE](LICENSE) for details. Built with โค๏ธ for the AI agent pair-programming community.
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues