schematic-pdf-mcp
by ght123247
README.md
# Schematic PDF to JSON
Precision-first conversion of vector PDF circuit schematics into an
evidence-preserving `SchematicIR` JSON document. The project includes a Python
conversion engine, command-line interface, MCP server, reusable Codex skill,
and validation tools.
> This project deliberately prefers missing uncertain content over emitting
> plausible but incorrect electrical information. A result marked
> `needs_review` must not be treated as a verified netlist.
## Architecture
1. **PDF parsing** — extracts native text, vector paths, styles, coordinates,
source IDs, and evidence.
2. **Primitive recognition** — identifies conservative wire, component, pin,
junction, label, and network-flag candidates.
3. **Connectivity recovery** — applies explicit endpoint, T-junction, junction
marker, and evidence-backed named-net rules.
4. **JSON output** — emits validated `SchematicIR`, unresolved issues, topology
checks, and a deterministic hash.
Each conversion preserves all four stages as separate JSON artifacts.
## One-click agent installation
Codex plugin:
```powershell
codex plugin marketplace add ght123247/schematic-pdf-to-json --ref v0.2.0
codex plugin add schematic-pdf-to-json@schematic-pdf-tools
```
Start a new Codex task after installation. The bundled plugin installs its
isolated Python runtime automatically on the first MCP connection.
Claude Desktop, Cursor, and Gemini CLI on Windows:
```powershell
irm https://raw.githubusercontent.com/ght123247/schematic-pdf-to-json/v0.2.0/install.ps1 | iex
```
Claude Desktop, Cursor, and Gemini CLI on macOS/Linux:
```sh
curl -fsSL https://raw.githubusercontent.com/ght123247/schematic-pdf-to-json/v0.2.0/install.sh | sh
```
The installer creates an isolated runtime under
`~/.schematic-pdf-to-json`, preserves unrelated settings, backs up every
changed config, performs a real MCP handshake, and prints the tools it found.
Python 3.11 or newer is the only prerequisite.
See [Agent installation](docs/agent-installation.md) for selecting one agent,
custom allowed roots, upgrades, uninstalling, and manual configuration.
## Development install
Python 3.11 or newer is required.
```powershell
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -e ".[test]"
```
## Command line
```powershell
schematic-pdf inspect "D:\path\drawing.pdf"
schematic-pdf convert "D:\path\drawing.pdf" --output output\artifacts
schematic-pdf validate "D:\path\schematic.final.json"
```
The conversion output contains:
```text
job-.../
├── layer1/raw.json
├── layer2/semantic.json
├── layer3/connectivity.json
├── layer4/schematic.final.json
└── manifest.json
```
### Altium Designer PDF support
For native vector PDFs exported by Altium Designer, the recognizer selects an
Altium-specific profile automatically. It handles Altium's dark-blue wiring,
blue symbol graphics, black pin stubs, red/yellow sheet ports, adjacent
reference/value text pairs, large multi-pin IC bodies, and exact cross-page
named-net merging. Dense PCB-artwork pages embedded in a schematic PDF are
excluded with a reviewable warning instead of being interpreted as a
schematic.
The profile remains precision-first: unsupported or ambiguous values, pins,
symbols, and labels are omitted from resolved JSON and retained as issues for
manual review.
## MCP server
Start the stdio server with:
```powershell
schematic-pdf-mcp
```
Available tools:
- `inspect_schematic_pdf`
- `convert_schematic_pdf`
- `validate_schematic_ir`
The server exposes `schematic://schema/current` and staged artifacts through
`schematic://jobs/{job_id}/{stage}`. Restrict readable local paths with
`SCHEMATIC_PDF_ALLOWED_ROOTS`; set `SCHEMATIC_PDF_ARTIFACT_ROOT` to control the
artifact destination.
Generic MCP configuration:
```json
{
"mcpServers": {
"schematic-pdf": {
"command": "schematic-pdf-mcp",
"env": {
"SCHEMATIC_PDF_ALLOWED_ROOTS": "D:\\schematics",
"SCHEMATIC_PDF_ARTIFACT_ROOT": "D:\\schematic-output"
}
}
}
}
```
## Accuracy and validation
The final JSON contains source evidence and explicit issues for unresolved
content. Schema validity and topology validity are independent of recognition
completeness. Important policies include:
- no inferred connection at a four-way crossing without explicit evidence;
- no invented pin numbers, reference-designator suffixes, or net names;
- ambiguous part-number-like text is omitted and reported for review;
- recognition changes must keep 100% precision on registered real-PDF
regression samples.
Run the automated suite:
```powershell
python -m pytest
```
Run the EasyEDA-backed precision regression after placing authorized local
sample PDFs and truth exports at the paths registered in the script:
```powershell
python scripts\run_precision_regression.py
```
For a genuinely unseen PDF, lock the conversion before reading EDA truth:
```powershell
python scripts\blind_validate_pdf.py lock "Test_PDF_SCH\new.pdf"
python scripts\blind_validate_pdf.py compare `
"output\blind\job-...\blind-lock.json" `
"output\accuracy\new.easyeda-ground-truth.json"
```
Test schematics, EasyEDA truth exports, and generated artifacts are excluded
from the repository because they may contain proprietary circuit designs.
## Codex skill
The reusable skill is in [`skill/convert-schematic-pdf`](skill/convert-schematic-pdf).
It defines the precision-first workflow, acceptance order, validation policy,
MCP contract, and current limitations.
## Current limitations
- Native vector PDFs are the primary supported input.
- Native Altium Designer schematic exports have a dedicated auto-detected
recognition profile; custom print styles may still require calibration.
- Raster OCR and raster primitive recognition are not implemented.
- Hidden pin numbers and ambiguous symbol identity remain unresolved.
- Long-distance value/label association is intentionally conservative.
- Human review is still required whenever blocking issues remain.
## License
[MIT](LICENSE)
TDQS
A3.7/5.0
Scored across 3 tools
Disambiguation5/5
Each tool targets a distinct stage of the PDF conversion pipeline: inspection, conversion, and validation. There is no overlap in their purposes, making selection unambiguous.
Naming Consistency5/5
All tool names follow a consistent verb_noun snake_case pattern (inspect_schematic_pdf, convert_schematic_pdf, validate_schematic_ir). This is highly predictable and readable.
Tool Count5/5
With 3 tools, the set is well-scoped for a specialized schematic PDF conversion workflow. Each tool serves a necessary function without redundancy or bloat.
Completeness5/5
The tool surface covers the full lifecycle from inspecting a PDF to converting it to JSON and validating the resulting IR. No critical missing operations are apparent for the stated domain.
Maintenance
ActivitySlowing
ResponsivenessNo issues