maxplus2-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MAXPLUS2_ROOT | Yes | The installation directory of MAX+plus II | |
| MAXPLUS2_WORKSPACE | Yes | The workspace directory for FPGA projects |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {} |
| resources | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| installation_statusA | Locate the MAX+PLUS II installation (maxplus2.exe / setacf.exe), report version info from maxplus2.ini, available device families, and additional bundled tools. Read-only. |
| list_projectsB | Recursively find .acf projects under a root directory and list the artifacts already compiled for each. Read-only. |
| project_inspectA | Summarize one project: .acf sections, CHIP blocks, device, pin count, compiled artifacts with timestamps, and the cleanliness of the last .rpt. Read-only. |
| acf_read_sectionsA | Read the .acf as structured sections/entries with line numbers. Use to discover which section holds a setting before writing. Read-only. |
| acf_read_pinsA | Extract device and pin assignments from the .acf CHIP block, and cross-check them against the compiler-generated .pin report when present. Read-only. |
| setacf_planA | Build the exact setacf.exe argument vector for a change WITHOUT executing it. Always call this first: setacf edits the .acf in place and has no dry-run mode. |
| setacf_applyA | Execute a setacf change. Backs the .acf up first and returns a line diff. Requires confirm:true. Prefer calling setacf_plan first. |
| maxplus2_planA | Build the exact maxplus2.exe command line for compile / timing analysis / simulation / object conversion, WITHOUT running it. |
| maxplus2_runA | Execute maxplus2.exe (compile / simulate / timing / convert) with a hard timeout, then report which artifacts changed and the parsed report summary. Beware: this starts a 2002-era Win32 process that can block on modal dialogs. |
| acf_validateA | Statically validate an .acf for defects that block compilation, notably the bare "CHIP " header that setacf itself creates when no CHIP section exists yet (MAX+PLUS II then fails with "Missing identifier after section keyword"). Read-only. |
| acf_repair_chip_headersA | Rewrite malformed CHIP headers (bare "CHIP " or shell-escaped names) into canonical "CHIP " form. setacf is append-only and cannot fix these itself. Preview-first; requires confirm:true to write and backs the file up. |
| probe_executableA | Run |
| simulate_and_verifyA | Run the Simulator headless and return the parsed result table, then optionally check expected output values. This is how simulation verification is automated: MAX+PLUS II writes a plain-text .tbl containing the simulated outputs, so a design can be checked without a human reading a waveform. Note a successful simulation may exit 1 — the verdict comes from the success banner plus the table artifact. |
| parse_tblA | Parse an existing MAX+PLUS II Simulator result table (.tbl) into a time-indexed trace of inputs, outputs and buried nodes, with optional expected-value checking. Read-only. |
| parse_reportB | Parse a MAX+PLUS II .rpt / .summary / .pin file into structured severity counts, statuses, device, and diagnostics. Read-only. |
| gdf_inspectA | Read a strictly validated GDF/SYM schematic summary: labels, fonts, title fields and geometry counts. gdf_geometry provides paginated original coordinates, definitions, instances and world pin positions; gdf_edit supports existing v6 geometry. Electrical connectivity requires netlist_export. Optionally compare labels with another drawing. |
| job_statusA | Poll a background job started with async:true. Returns running/done/failed/cancelled, how long it has been going, how many child processes are live, and the full result once it settles. This exists because a client timeout is wall-clock and does NOT stop the work: polling is the only way to keep a long compile without losing it. Results are held for 30 minutes after they settle. |
| job_cancelA | Terminate a running background job by killing its child process. Use this rather than abandoning a job: an abandoned job keeps running and keeps holding the project directory. Build artifacts already written are left in place — this stops work, it does not undo it. |
| project_restore_fileA | Restore a file from this project backup store, including binary GDF/SCF bytes. Preview by default. Requires backup SHA-256; an existing destination also requires its current SHA-256 and is backed up before restoration. |
| project_createA | Create an isolated directory with a named CHIP .acf, optional HDL source and END_TIME=0.0ns. Preview by default, refuse existing directories; use one directory per design. |
| project_cloneA | Copy the project directory into a new directory; preserve names and verify SHA-256 for every copied file. Default all; sources selects design extensions and explicit includePaths, avoiding old SCF/TBL/reports in large projects. Preserves originals, excludes backup stores. Does not infer external hierarchy dependencies; inspect and compile the copy. |
| project_filesA | List sources, memories, schematics, waveforms and build artifacts under the selected project/workspace. Deterministic offset pagination, byte sizes and supported text formats are returned. |
| project_read_fileB | Read a bounded line range and exact SHA-256 of HDL, ACF, MIF, HEX, VEC, reports or other supported text. Use nextLine to continue and expectedSha256 to avoid overwriting concurrent edits. |
| project_searchA | Search for a literal string across supported project text files with file/line evidence. Results are bounded and truncation/oversized skipped files are explicit; binary GDF/SCF content is not guessed. |
| project_edit_fileA | Write, exact-patch, copy, move or delete one file. Preview by default. Existing files require expectedSha256; writes/moves/deletes preserve a recoverable backup. General binary writes are refused; use scf_edit for supported SCF scalar inputs and desktop tools for GDF drawing changes. |
| stimulus_writeB | Generate a verified multi-row VEC shape using INTERVAL, bare pattern rows and one final semicolon. Explicit bus nodes are MSB-first. Preview/apply with backups. Existing SCF may take precedence; inspect/delete its backed-up copy or open/convert VEC in the GUI. Set ACF END_TIME=0.0ns. |
| memory_writeA | Generate an Intel/Altera MIF with explicit WIDTH, DEPTH, hexadecimal addresses/data and initialized unused addresses. Arbitrary width values may use integer strings. Preview or apply to a .mif with hash checking/backups. |
| scf_inspectA | Decode verified SCF scalar and display-bus logic runs/events, including 0/1/X/Z, with times in ns. Returns input/output roles, writable input names, paging and unsupported metadata explicitly. Does not open the GUI. |
| scf_editA | Preview/apply event changes to existing scalar inputs in vendor version-4 SCF. Fixed existing end time, exact 0.1ns ticks, 0/1/X/Z. Preserve groups, other signal records and opaque editor bytes. Requires current SHA-256; backs up before atomic write. Output/internal traces become stale and must be re-simulated. For a bus, edit its scalar members returned by scf_inspect. |
| desktop_statusA | Check the MCP-owned Windows UI Automation/Win32 backend. Builds the bundled helper locally if needed and reports interactive desktop availability. Runs locally using standard Windows components. Does not launch or manipulate a MAX+plus II window. |
| desktop_resultA | Retrieve a cached completed desktop result and its MCP image blocks without executing input again. Results last up to ten minutes, twelve entries, or server restart. No separate host execution step exists. |
| desktop_windowsA | Directly discover real windows/dialogs of installed MAX+plus II executables, including HWND, PID, bounds and title. Select exactly one returned windowId before observing/input. All agents call this standard MCP tool. |
| desktop_launchA | Launch an existing allowlisted MAX+plus II GUI through the independent Windows backend and return its real windows. No shell or arbitrary executable. Launch does not prove readiness; observe the returned window. |
| desktop_observeA | Return a fresh native screenshot as standard MCP image content, UI Automation tree, focus, window bounds and observationId directly. Inspect before acting; each input consumes its observation. Capture diagnostics report limitations honestly. |
| desktop_actionA | Directly execute ONE click, hover, key chord, Unicode text entry, value change, drag, scroll, secondary UI action or activation, then return a fresh screenshot/tree. Uses MCP-owned Win32/UIA. Requires latest observationId/windowId. Inspect after every input; no host-specific calls. |
| project_parse_fileA | File-first structured parsing of strict GDF text/geometry, SCF scalar/bus logic events in ns, ACF assignments, TBL traces, reports and EDIF connections. Returns original path/bytes/SHA-256 and explicit limitations. Use gdf_geometry for paginated symbol definitions/placements and netlist_export for GDF circuit connections. |
| netlist_exportA | Copy a GDF/HDL/ACF/EDIF design and local dependencies to a fresh temporary directory; enable original MAX+plus II EDIF/VHDL/Verilog/AHDL writers and compile there. Return source hashes, actual compiler evidence, exported files and structured port/instance/net connectivity. Original files remain untouched. The netlist is synthesized logic; original drawing placement and source component identities can change. Supports async jobs and cancellation. |
| gdf_geometryA | Strictly decode GDF/SYM v2..6 coordinates, wires/buses, symbol definitions, original instances, rotations/mirrors, stretched world pin positions and local text anchors. No compiler or GUI needed. Paginated root records and nested collections preserve offsets/counts. Geometry does not prove connectivity; use netlist_export for circuit connections. |
| gdf_editA | Preview/apply lossless GDF v6 root line coordinates, translations, symbol orientation or free annotation text. Existing records only. Requires fresh file SHA-256, rejects unsupported targets/overflow, preserves unrelated bytes and backs up before atomic replacement. Moving a symbol does not move its wires; recompile/export to verify circuit behavior. |
| gdf_symbol_libraryA | List installed max2lib SYM files with SHA-256 and names, or inspect one prototype with local pins, extent and preserved default instance/parameter attributes. Read-only. Symbol insertion uses these hashes and original bytes, independently of any agent SDK. |
| gdf_createA | Create a version-6 GDF sheet with the recovered original-editor blank header/extent. Preview by default; never overwrite an existing file. Use gdf_construct for symbols/wires, then original compiler/simulator for circuit verification. |
| gdf_constructA | Transactional GDF v6 construction: insert hashed SYM instances, name I/O and electrical wires/buses, replace/clear modern parameter assignment maps, normalize invalid/duplicate native NET_IDs, add/delete orthogonal wires, symbols and free annotations. Existing offsets/current SHA-256 required; preview/backup/atomic apply. Deleted symbols leave wires. Same wire names can connect remote geometry; actual parameters and connections require original compiler/simulator verification. Legacy/ambiguous parameter records are preserved and refused for edits. |
| gdf_pin_labelsA | File-only GDF/SYM diagnostics. Omit expectedSha256 to inspect exact pin/DOC duplicates and fixed-font same-row pin collisions. Supply a fresh hash to preview cleanup; confirm=true applies with backup. Removes only exact visible duplicate free DOC, preserving native pin labels. Optional right-label alignment moves label anchors only. Does not infer arbitrary glyph/layout collisions. |
| gdf_declarationsA | Read existing native CONSTANT h/51/52 and PARAM h/53/54 declaration pairs. Reports writable and ambiguous/unsupported legacy forms. These are source declarations or defaults, not generic instance parameter assignments. |
| gdf_declarations_editA | Edit only an existing unambiguous native CONSTANT/PARAM name/value pair. Retains native IDs, aliases, geometry, fonts and other properties. Requires both name and value, fresh hash, preview and recoverable backup. Compiler/simulator must validate expression, scope and effect. |
| gdf_text_editA | Create, reposition, restyle or delete root free DOC annotations. Preserves font, metrics, alternative text and opaque bits; refuses electrical labels or instance/pin text. Sequential operations use original offsets and return resulting offsets. Printable Latin-1 only. |
| gdf_symbol_refreshA | Preview or apply a hashed same-name/same-type SYM to explicitly selected GDF instances. Shared definitions split so unselected instances retain original bytes. Instances/NET_ID/parameters/placement/rotation remain. Reports pin/interface and geometric contact changes; these require explicit allow flags. Compile/export/simulate to prove actual connectivity. |
| gdf_graphics_editA | Add/delete or resize/restyle root drawing lines, circles and arcs. Original unknown flags/shared symbol definitions retained; drawing lines are not electrical wires. Use gdf_construct for connections. Original offsets/current hash, preview and backup required. |
| sym_inspectA | Inspect standalone SYM graphics, pin names/positions/native interface directions, text display flags and preserved instance defaults. No compiler needed. Paginated collections; direction provenance does not prove circuit wiring. |
| sym_editA | Rename/resize standalone SYM, edit/create/delete internal lines/circles/arcs/text and interface pins. Uses original attributes and preserves unrelated/default records. Changes do not update embedded GDF symbol copies. Inspect fresh offsets/hash; verify consuming circuit with original compiler. |
| sym_createA | Create a new original-format SYM or clone a hashed workspace/installed-library prototype under a new name. Never overwrite. Optional operations add internal graphics/text/pins. Matching HDL source interface must be supplied separately and compiler/export used to prove connectivity. |
| scf_structureA | Decode version4 SCF scalar names, display ordering, groups/radix, duration and native record locations. Exposes unknown/reference limits. Use scf_inspect for paginated logic events. |
| scf_structure_editA | Transactional SCF signal rename/reorder, group/ungroup/radix, duration extension/truncation and input add/delete. Unknown fields preserved; unsafe opaque reference changes refused. Names must match compiled nodes; resimulate after edits. |
| scf_createA | Create a new version4 SCF directly without VEC or GUI. Explicit input names and optional 0/1/X/Z events; events in ns on 0.1ns grid. Never overwrite. Use matching compiled netlist and original simulator for verification. |
| gdf_connectionsB | Build source nets preserving unsynthesized instances/pins. Original endpoint/overlap, pin-on-wire, transparent WIRE and remote-name rules; crossings, driver and dangling diagnostics. Separate bitTopology expands explicit bus ranges, scalar member aliases and WIRE ordered/reversed mappings; unresolved widths remain explicit. Paginated; original compilation proves electrical legality. |
| gdf_move_connectedA | Move selected GDF6 placements on grid8 and/or choose orientation0..7. Route scalar pin extensions around other source nets and symbol interiors; split existing wires at departed interior pins. Refuse any changed source terminal partition or named-net membership. Original compilation/export/simulation required. Bus bundles/unknown topology refused. Hash/preview/backup transaction. |
| gdf_text_format_inspectA | Inspect all GDF/SYM q records, original font strings, built-in font codes, stored metrics and raw text bytes. Explicit latin1/windows-936 decoding; no guessed encoding. Pagination and malformed-encoding diagnostics. |
| gdf_text_format_editA | Create/change only free root DOC text in GDF6 or standalone SYM2..6. Choose built-in font0..3 or Windows font face,size with explicit width/height. Exact reversible Windows-936 encoding supports Chinese bytes; Chinese requires Windows font. Preserves electrical labels, shared definitions and opaque tails. Verify glyphs with original editor. |
| scf_editor_metadataB | Expose known display/time fields and bounded raw metadata, clearly identifying unresolved cursor/grid/zoom/private references. Preserves opaque bytes; do not infer their meaning from a round trip. |
| scf_stimulus_editB | Native SCF clock, repeated 0/1/X/Z segments, wide MSB-first counters, shift, invert, fill and snapshot copy. Exact 0.1ns grid, bounded200000 total events; preserves waveforms outside edited half-open ranges and all opaque records. Fresh original simulation computes outputs. |
| scf_compiled_portsA | Read an exported .edo file up to32MiB and map top-level input/output ports to MAX+plus II Simulator names, including explicit vector ranges and native flattening. Internal EDIF nets, ambiguous arrays and INOUT are marked unsupported. Use netlist_export then inspect this fresh file. |
| scf_ports_importA | Append selected top-level input/output nodes from a fresh hashed .edo to an existing hashed SCF. Retains existing waveforms; inputs begin0, outputsX until simulated. Refuses role mismatches/unsafe opaque references. Both files must be inside the same scope. |
| scf_from_compiled_createA | Create a new SCF from selected or all supported top-level ports in a hashed .edo. Direct original SCF records, no VEC. Inputs0 and output observationsX; use scf_stimulus_edit then the original Simulator. Never overwrites; unresolved nodes require explicit supported selection. |
| gdf_wire_cleanupA | Remove only unannotated electrical leaf segments in GDF6 pin-bearing physical nets. Preserve surviving token bytes, named wires, pins, isolated unconnected nets and overlapping conductors. Every round checks source scalar pin partitions and complete bus bit/alias partitions. Refuse unknown topology or exceeded budgets; compile and simulate the result independently. Fresh hash, preview and backup transaction. |
| waveform_signalsA | Read an original TBL and return real declared input/output/buried signals, bit widths, native units and available time span. Detect malformed tables, ambiguous names and exceeded budgets. Hidden SCF signals absent from TBL remain absent; this does not prove saved editor layout. |
| waveform_resultsA | Extract result events gated by an actual scalar valid signal. Default proven rising edges, with initial-high rows separately marked; optional samples means native rows while valid=1. Optional settling samples point-in-time data inside the valid window. Retains raw numeric/X/Z tokens, missing columns and unknowns; held data while valid is low creates no result. Return paginated events and a recommended ns window; does not alter SCF zoom, row visibility, clock or design logic. |
| display_palette_inspectA | Read only the [Colors] section of installed maxplus2.ini. Separate ordinary DOC Text, native Symbol Pinstub Names, and Nodes & Connection Dots roles. Reports stored preferences, not live unsaved colors; GDF color bits and custom previews cannot prove native display. Verify visible colors using original Color Palette Preview and desktop_observe. |
| capability_matrixB | Return precise routes and runtime requirements for authoring, compilation, simulation and native GUI-only workflows. Distinguishes implemented entry points from operations verified on this machine and physical programming requirements. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| maxplus2_workflow | Compose an evidence-driven MAX+plus II task using files, CLI and native GUI. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| MAX+plus II file-first parsing and editing guide | |
| MAX+plus II authoring and desktop guide |
TDQS
Scored across 68 tools
Descriptions are unusually explicit about boundaries and cross-reference sibling tools ('use gdf_geometry for...', 'use netlist_export for...'), which helps. However the surface has large overlapping clusters — e.g. gdf_text_edit vs gdf_text_format_edit (both edit free root DOC text), gdf_graphics_edit vs gdf_edit vs gdf_construct, and scf_edit vs scf_stimulus_edit vs scf_structure_edit — where an agent can easily pick the wrong one.
Everything is snake_case and grouped by predictable subsystem prefixes (gdf_, scf_, project_, desktop_, acf_, setacf_, maxplus2_, job_). But verb ordering is inconsistent: noun_verb forms (acf_read_pins, project_read_file, gdf_text_edit) coexist with verb_noun forms (list_projects, parse_tbl, simulate_and_verify, probe_executable), and many tools carry no prefix at all.
68 tools is an extreme mismatch for a single server. Even a rich legacy-EDA workflow does not justify this many entry points, and the count forces agents to navigate many near-duplicate edit/inspect variants rather than a focused set.
The surface covers the full lifecycle: project create/clone/files/read/write/search/parse, ACF read/validate/repair, setacf plan/apply, compile/simulate plan/run, result parsing, GDF/SYM/SCF authoring and editing, netlist export, waveform analysis, job control, and desktop GUI automation. Almost no obvious functional gap remains for the stated domain.