CircuitMCP

Changelog

What changed in each release of CircuitMCP for Altium.

1.5.3Oct 21, 2026

  • Fixed: Altium hung on File » Exit while CircuitMCP was attached. It got as far as shutting down and stayed there until End Task. The bridge inside Altium (script 0.14.0) now runs from a timer instead of a loop, so Altium is free between requests and closes normally. The bridge's hidden window is kept off the taskbar. Run save_all (or detach) before closing Altium: Altium does not know about schematic edits made through CircuitMCP and closes without asking to save them. After upgrading, restart Altium once: it keeps the old bridge script in memory until it does.

1.5.1Oct 20, 2026

  • Fixed: uninstalling with the control panel in the tray left it running. The uninstaller now asks the panel to stop its server and exit first, the way Setup already did, so Program Files is removed and nothing of ours is left running. Every running panel is asked, and Setup waits for each to exit (up to a minute; a 1.3 panel ignores the request, so upgrading straight from 1.3 with its panel open waits that minute).

1.5.0Oct 20, 2026

  • Slotted holes. lib_add_pads writes slotted pads (hole_type: "slot", hole_size = width, hole_length = length; the slot runs along size_x and turns with the pad's rotation), checked against a slot Altium wrote itself, and lib_get_footprint reports hole_type, hole_length and hole_rotation (the slot's angle inside the pad; Altium's own footprints use 90 for a slot up a tall pad). Slots go in round or oval pads only, and one that would break out of its pad is refused.
  • Fixed: ERC could be reported clean when it never ran. Each project_run_validation uses a fresh job, and a requested check that produced no report is an error.
  • Fixed: PDF outputs printed nothing. Schematic, PCB and assembly PDFs now carry Altium's own print setup and are published by project_run_outjob.
  • The BOM is orderable. project_create_outjob's BOM has Manufacturer, Manufacturer Part Number, Supplier 1 and Supplier Part Number 1 columns; bom_columns picks your own.
  • Fixed: a config.json saved with a BOM stopped the server silently. It now loads; a broken one is reported by name, in the control panel too.
  • Misspelt tool arguments are refused with the list of real ones, instead of being ignored.
  • project_create takes libraries and output jobs as members, and the guide creates the project with its libraries in one step.
  • Fixed: update_pcb always listed libraries_in_project as empty, and screenshot_altium could return a stale picture of the previous document.
  • Fixed: the network server could stop accepting connections while still running. On Windows, one client that dropped its connection while connecting (a local Windows Claude did this on every connect) closed the server's port for good; the panel stayed green and only a restart helped. The server now accepts again instead.
  • Connect more AI clients. The control panel's Connect page has a tab per client: Claude, ChatGPT (Codex), OpenCode, Hermes, OpenClaw and Other. Codex (CLI, IDE extension and ChatGPT desktop app), OpenCode and OpenClaw are set up with one click, the same way as Claude: through a local proxy, so the access token stays in this app's settings. Each tab also shows what to paste on another computer, with the address and the token.
  • Version control for Altium projects. Ten new tools work with Git and SVN working copies:
  • vcs_status shows changes, branch, locks, and which files Altium has open or unsaved;
  • vcs_diff compares an Altium file between revisions by what it contains (components, parameters, nets, footprints, pads);
  • vcs_log lists history;
  • vcs_commit commits exactly the files you name;
  • vcs_restore, vcs_pull, vcs_push and vcs_switch restore a file, sync and change branch;
  • vcs_lock / vcs_unlock take and release Git LFS and SVN locks.

Anything that would rewrite files Altium has open is refused until the project is closed, because Altium would write its old copies back on its next save. Pull and push are off until the box owner allows them with circuitmcp-altium configure --allow-vcs-remote.

  • Safer in a repository.
  • No tool can read or write inside a .git or .svn folder, or delete a folder that holds one.
  • A file locked by Git LFS or SVN is reported as locked, with the command that takes the lock, instead of "Access is denied". Repeated attempts no longer leave read-only backups that blocked later edits.
  • Backups of files in a working copy are kept under %USERPROFILE%\CircuitMCP\Altium\backups instead of beside them, and every kind of backup is now pruned to the newest five.
  • Saving a library that has not changed no longer changes the file, and every write replaces the file in one step, so an interruption cannot leave half a library.
  • Moving or renaming a document updates the projects that list it, and a tracked file moves with git mv / svn move so its history follows.
  • A Git LFS pointer, or a project file with merge-conflict markers, is reported as such instead of failing to parse.
  • Tools stay inside the folders you allowed, and ask before leaving them.
  • Live-mode tools are now held to allowed_paths like file tools: a document path, open_if_needed, every line of a batch, and an edit of the *active* document or focused project are all checked before Altium sees them.
  • Outside the allowed folders the server asks the user, when the MCP client can show a question: allow once, allow the folder for this session, or deny. A denial is not asked again in the session. Clients that cannot ask get the refusal, as before. .git folders are never offered.
  • run_process runs only view, selection, undo/redo and compile processes unless the box owner allows any with configure --allow-any-process.
  • Getting work back.
  • save_all and detach_from_altium back up every file before Altium overwrites it, reported as backups_before_save.
  • list_backups / restore_backup work for any backed-up file (schematics, boards, projects, libraries). A restore keeps the file it replaced, and is refused while Altium has the document open.
  • undo runs Altium's own Undo or Redo on an open document.
  • The floating seat can go back by itself. configure --seat-release-on-detach hands the seat back when a client detaches, and --seat-idle-release MINUTES after that long without a tool call. The next tool call takes it again; a seat a person released stays released.
  • attach_to_altium warns when Altium itself has no license, instead of letting PCB work fail later.
  • The Altium script is now version 0.12.0 (adds open_documents, and get_state reports the active documents). Reload it in Altium after updating (start_altium_bridge does this).
  • Fixed: save_all hung for two minutes when an Altium command was still active. Altium asks "A command is currently active ... save copy of current document?" and waits. The server now answers No (nothing is written), and save_all fails at once with save_blocked_command_active and says how to finish the command. The next save_all also writes the schematic edits the refused save would otherwise have dropped. detach_from_altium does the same and warns. Needs script 0.13.1 (reload it in Altium after updating).
  • Fixed: a pour refused for an unknown net left the board unsaveable. pcb_place_polygon with a net the board does not have returned its error but left Altium mid-edit, so every later save of that board was refused until Altium restarted.
  • Fixed: long commands could time out while the control panel was open. The panel checks on Altium every 5 seconds from its own process, and that check could take the server's answer, so a save, DRC or output job failed with "Altium consumed the request but sent no response". Everything that talks to Altium now takes turns through a lock on the workspace.
  • Report a problem or suggest a feature from the control panel (footer button and tray menu) or through your AI client (report_issue, which asks you before anything is sent). Reports reach Holley Brothers Design directly. The server log goes only if you tick the box, and the panel shows it first.
  • Usage statistics help decide what to improve: which tools are used, whether they worked, and the versions in use. Never your designs, file names or anything you type. On by default; turn it off in Settings, in the installer, or with configure --no-telemetry. See PRIVACY.md and the new EULA section 6.
  • Set up Claude Desktop or Claude Code in one click (Connect tab, or circuitmcp-altium setup-client). The access token stays in this product's settings rather than the client's.
  • A crashed Altium script restarts itself. When Altium shows the script's error dialog, the server clears it and restarts the polling loop, and the tool call that hit it says so. Turn off with configure --no-auto-recover.
  • check_altium_compatibility checks whether a new Altium build still behaves as this version expects. The server also does the quick, read-only half by itself the first time it sees a new Altium.
  • What's new opens once after an update, with these notes.
  • A tool can be switched off remotely for one Altium or product version, if an update makes it unsafe; the call then says why.
  • Fixed: the Altium script could stop with "Cannot open file request.json" when another program (usually a virus scanner) was reading the request at that moment. Needs script 0.13.9 (reload it in Altium after updating).
  • save_all now says when Altium declined to write a document without an error, instead of counting it as saved; the edit stays pending for the next save. Script 0.13.9.
  • A redesigned control panel. The window now opens on a single status line with the one button that matters next (Start, Stop, Take a seat, or Enter license key), and a tile each for the server, the license and Altium. The details sit in four tabs: Connect, License, Altium and Settings. The colours match circuitmcp.net. The access token is hidden until you choose Show.
  • A new icon. The tray, the title bar and the shortcuts show a chip. In the tray, a coloured badge on the chip gives the status (green running, amber starting, grey stopped, red needs attention) in place of the plain dot.
  • My account in the window and in the tray menu opens your circuitmcp.net account in your default browser.
  • If Windows cannot start an update's installer for a reason other than a declined prompt, the message now says so in plain words.

1.4.6Oct 18, 2026

No functional changes. Used to verify, end to end, that declining Windows' permission prompt during an in-app update leaves 1.4.5 running.

1.4.5Oct 18, 2026

(1.4.4 was tagged but never released: a test failure stopped its build.)

  • Declining Windows' permission prompt during an update now leaves everything as it was. Before, the control panel had already closed, so saying No left neither the panel nor the server running. Now the panel stays, the server comes back, and the update can be installed later.
  • If an update's installation fails, the control panel is brought back.

1.4.3Oct 17, 2026

  • Fixed a crash that could occur when the notification-area icon was created a second time in the same session.

1.4.2Oct 17, 2026

  • In-app update fixed. In 1.4.0 and 1.4.1, choosing *Restart* after an update had downloaded did nothing ("Starting the installer…" stayed up). Those versions need this one installed by hand; from 1.4.2 on, updates install from the control panel.
  • The first start on a freshly installed PC, which antivirus scanning can make take a couple of minutes, is no longer reported as "Server stopped unexpectedly" while the server is still coming up.

1.4.1Oct 17, 2026

The first release delivered through the in-app updater: 1.4.0 installs it from the control panel's *Update now*. No functional changes.

1.4.0Oct 17, 2026

Product

  • Updates install from the control panel. When a new version is out, *Update now* downloads it, checks that it is intact and signed by Holley Brothers Design's publisher, and asks you to restart. On restart the server finishes the request in progress, the update installs, and the control panel comes back with the server running as before. Altium Designer is not closed and its open documents are left untouched. A machine without a seat still gets the download page.
  • Stopping the server (Stop, Quit, a mode change or an update) now lets the tool call in progress finish instead of cutting it off. Calls that arrive while it stops get a clear "server is stopping" reply.
  • Upgrading keeps the installation mode and port you chose last time, instead of returning to Local mode.
  • Running Setup while the control panel is open (or signing out of Windows) now closes it cleanly: the server finishes the request in progress first. Previously Setup could not close it and stopped, or the server was cut off.

1.3.0Oct 17, 2026

The first release as CircuitMCP for Altium, sold by Holley Brothers Design through circuitmcp.net.

Upgrading from 1.x

  • Automatic carry-over. On first start the configuration, access token, license state and control-panel preferences are copied from %APPDATA%\altium-mcp to %APPDATA%\CircuitMCP\Altium. The old folder is left in place.
  • Old artifacts are replaced. The installer removes 1.x executables, shortcuts and the old firewall rule. install-service and uninstall-service retire the 1.x Scheduled Task.
  • Clients now always need the access token, including on the same PC (Local mode). Re-register with *Copy client command* in the control panel.
  • 1.x licenses do not carry over. Activate with the CMCP-… key from your circuitmcp.net account.

Security

  • Release builds trust only the license-signing key they were built with. The config-file and environment overrides are ignored, so licensing can no longer be bypassed by editing a file.
  • Every HTTP endpoint requires the bearer token, and a loopback endpoint refuses requests from web pages that rebind their hostname to 127.0.0.1 (DNS rebinding).
  • Release builds refuse a plain-http license server.
  • The installer passes the license key through a private temporary file instead of a command line any user can list.

Licensing

  • Keys start CMCP-. One key and one seat per machine cover every CircuitMCP package a license includes, and leases name those packages.
  • A seat released from your circuitmcp.net account frees when the machine next connects. That machine is then told it no longer holds a seat and does not take one back by itself.
  • Builds default to license.circuitmcp.net; nothing needs typing in the installer.
  • New: circuitmcp-altium license activate --key-file / --key-stdin.

Product

  • New names:
  • CLI circuitmcp-altium (windowless twin circuitmcp-altiumw)
  • control panel CircuitMCP-Altium-Panel.exe
  • installer CircuitMCP-Altium-Setup-<version>.exe
  • install folder Program Files\CircuitMCP\Altium
  • The control panel tells you when a new version is available and opens your account's download page. It never downloads anything itself. circuitmcp-altium version --check does the same from the command line.
  • The installer no longer adds a duplicate firewall rule on every reinstall.
  • A silent install (/VERYSILENT /SUPPRESSMSGBOXES) runs to the end without stopping for a message box; activate afterwards with circuitmcp-altium license activate --key-file <file>.
  • Activation works on a freshly installed Windows PC, whose certificate store has not yet fetched the license server's root certificate.

Under the hood

  • Dependencies have major-version ceilings (a fresh install had started pulling an incompatible mcp 2.x), and release builds install an exact, hashed set from packaging/requirements-release.txt into a dedicated build venv.
  • One version number, written once (altium_mcp.__version__).
  • Every executable, the Rust engine, the installer and its uninstaller are Authenticode-signed and timestamped, and a .sha256 is published with each installer.