fritzing-mcp
This server is an MCP stdio server for building, editing, validating, rendering, and hand-off of Fritzing circuit designs and custom parts.
Search and inspect parts: search the 2663-part library plus local custom parts, and list connector IDs/names/types needed for wiring.
Create and edit sketches: create empty .fzz/.fz sketches, place parts with coordinates, wire connectors, move parts, set properties, and remove parts.
Inspect designs: dump sketch instances, positions, and wires as JSON.
Validate designs: run fritzing_check to ensure a sketch is valid before hand-off, and validate custom .fzp part files.
Render designs: headless-render sketches to SVG and PNG for visual inspection.
Create custom parts: generate fzp files plus 4 view SVGs from a JSON spec, optionally install them for the Fritzing app.
Hand off to humans: open sketches in the Fritzing GUI for review.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@fritzing-mcp search the part library for an LED and place it with a 220 ohm resistor, then wire them up and render the breadboard"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
fritzing-mcp
MCP stdio server for building and editing Fritzing circuit designs (.fzz
sketches) and custom parts (.fzp/SVGs), wrapping the fz
CLI — a
stdlib-only Fritzing design toolkit for AI agents.
Tools
Parts
tool | purpose |
| search the 2663-part library + local custom parts |
| list a part's connector ids/names/types (needed before wiring) |
Sketch build
tool | purpose |
| create an empty |
| place a part (coordinates in px at 90 DPI) |
| wire two connectors ( |
| adjust instances |
| dump instances/wires as JSON |
Validation
tool | purpose |
| validate sketch (must pass before hand-off) |
| headless-render SVG/PNG for visual inspection |
Custom parts
tool | purpose |
| generate fzp + 4 view SVGs from a JSON spec, optionally install |
| validate a |
Hand-off
tool | purpose |
| open sketches in the Fritzing GUI for human review |
Related MCP server: schematic-mcp-bridge
Requirements
Python ≥ 3.10, uv
The
fztoolkit is bundled (fzkit/+bin/fz+templates/) — no second repo needed.FZ_BINoptionally points at a different launcher.Runtime data from a local Fritzing app checkout, located via
FRITZING_APP_ROOT(default~/code/fritzing/fritzing; render varsFRITZING_APP/FRITZING_LIBS/FRITZING_PLUGINSstill win): part search needs<root>/parts/parts.db, custom-part authoring needsparts/fzp_checker.py, and headless rendering needs the Fritzing binary with Qt 6 libs plus ImageMagick for PNG. Sketch create/show/check work without any of it.
Install
uv sync # or: uv venv && uv pip install -e .Run
Add to your MCP client config:
{
"mcpServers": {
"fritzing": {
"command": "uv",
"args": ["run", "--project", "/path/to/fritzing-mcp", "fritzing-mcp"]
}
}
}Smoke test
bun smoke.mjs # or: node smoke.mjsDrives the server over raw stdio MCP: searches parts, reads connectors,
builds a LED+resistor sketch (place/wire/move/props), validates it, and
renders the breadboard view. Prints SMOKE: N/N passed.
License
MIT
Available Tools
14 toolsfritzing_checkFritzing CheckA
Validate a sketch: unique modelIndexes, resolvable moduleIds, every instance has >= 1 view, every wire endpoint connector exists on its target. MUST pass before handing a design off or opening it in the GUI.
Inputs: file (required). Returns: result
fritzing_create_partFritzing Create PartA
Generate a custom part (fzp + 4 view SVGs) from a JSON spec.
Custom parts must have all 4 views; restart Fritzing after --install (parts are scanned at startup).
Inputs: spec_path (required), out, install. Returns: result
fritzing_move_partFritzing Move PartB
Move a placed instance (omit x/y to read its current position).
Inputs: ref (required), file (required), x, y. Returns: result
fritzing_new_sketchFritzing New SketchC
Create an empty Fritzing sketch bundle.
Inputs: path (required), force. Returns: result
fritzing_open_guiFritzing Open GuiA
Open sketch(es) in the Fritzing GUI for human review.
Inputs: files (required). Returns: result
fritzing_part_connectorsFritzing Part ConnectorsA
List a part's connector ids, names, and types (male/female/pad) as JSON.
Connector ids are what wire endpoints reference (e.g. "r1.connector1" -> "led1.connector1").
Inputs: module_id (required). Returns: result
fritzing_place_partFritzing Place PartA
Add a part instance to a sketch.
Coordinates are sketch pixels at 90 DPI (1 inch = 90 px; mm -> px = 90*mm/25.4). The placed instance's assigned ref is in the output — use it for wire/move/props.
Inputs: file (required), module_id (required), x, y, +3 more. Returns: result
fritzing_remove_partFritzing Remove PartC
Remove an instance from the sketch.
Inputs: ref (required), file (required). Returns: result
fritzing_renderFritzing RenderA
Headless-render sketch(es) to SVG (and optionally PNG via ImageMagick).
Writes _.svg/.png next to the target. The first render per session takes ~10 s (parts DB load). Read the PNG to visually inspect the design, then adjust positions/wires and re-render.
Inputs: target (required), png, view, density. Returns: result
fritzing_search_partsFritzing Search PartsA
Search the Fritzing parts library (2663 core parts + local custom parts).
Returns rows of moduleId title [family] (source). Call
fritzing_part_connectors with a result's moduleId before wiring it.
Inputs: query (required), limit, verbose. Returns: result
fritzing_set_propertiesFritzing Set PropertiesC
Set instance properties (name=value pairs).
Inputs: ref (required), file (required), props (required). Returns: result
fritzing_show_sketchFritzing Show SketchC
Dump the sketch's instances (refs, moduleIds, positions, wires) as JSON.
Inputs: file (required). Returns: result
fritzing_validate_partFritzing Validate PartC
Validate a .fzp part definition file.
Inputs: fzp_path (required). Returns: result
fritzing_wireFritzing WireB
Wire two part connectors together (creates the electrical ).
Inputs: file (required), ref_a (required), ref_b (required), view, +1 more. Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 14 tools
Most tools target distinct actions (move, remove, place, wire, render, etc.), but fritzing_check (validate a whole sketch) and fritzing_validate_part (validate a single .fzp part definition) share the 'validate' verb and could be briefly confused despite the descriptions distinguishing their scope.
Every tool uses the same snake_case verb/noun pattern with a uniform fritzing_ prefix (e.g. fritzing_place_part, fritzing_remove_part, fritzing_validate_part), making the set highly predictable.
14 tools is well-scoped for an EDA/sketch-editing server, covering distinct lifecycle stages (part discovery, sketch creation, placement, wiring, validation, rendering) without redundancy.
The surface covers sketch creation, part placement/movement/removal, wiring, property setting, rendering, and custom part creation, but lacks wire removal/editing and sketch deletion, leaving minor gaps agents must work around.
Related MCP Connectors
Turn datasheets into source-backed JSON contracts, pinout matrices, and KiCad CAD for AI agents.
Design, route, check, review and export manufacturable PCBs from plain language; KiCad import.
AI electronics blueprint generator — BOM, wiring, firmware, renders for Arduino/ESP32/RPi.
Design circuits, simulate and verify embedded firmware, and lay out PCBs with AI agents.
Related MCP Servers
- -licenseNot gradedqualityNot gradedmaintenanceEnables AI agents to perform electronics design automation through the ZapTrace EDA kernel, including parsing designs, running ERC, placing components, routing nets, and generating manufacturing outputs (Gerber, BOM, etc.).-
- FlicenseDqualityBmaintenanceEnables AI agents to design electrical schematics through a high-level semantic API, handling components, pins, nets, validation/ERC, auto-layout, and SVG/KiCad rendering without requiring coordinate or file internals.22-
- FlicenseBqualityCmaintenanceEnables AI agents to create and edit real KiCad schematics and projects, run ERC/DRC validation, generate BOMs, and produce schematic/PCB/3D renders via kicad-cli, with SKiDL support and automatic backups.28-
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to perform narrow, validated Fritzing engineering operations — searching parts, inspecting connectors, placing and moving components, wiring, validating, rendering, and saving projects — through a strictly sandboxed server that exposes no shell, arbitrary filesystem access, or direct Fritzing control, with lifecycle gating and a part trust model enforcing validation before render and save.GPL 2.0