Interlock
Enables AI agents to perform 3D CAD modeling operations such as sketching parts and manipulating solid features through a governed interface.
Enables AI agents to perform PCB design operations such as routing tracks and managing nets with policy-enforced staging and diffing.
Enables AI agents to run analog SPICE simulations, analyze circuit behavior, and validate results against theoretical formulas.
Click on "Install 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., "@Interlockopen my FreeCAD bracket design and export as STEP"
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.
Zero-Trust Safety Boundary: Interlock runs entirely on your local machine. Every mutating action is deny-by-default, staged against a shadow copy, and diffed in domain-real terms before committing to disk.
// Add to Claude Desktop configuration (claude_desktop_config.json)
{
"mcpServers": {
"interlock": {
"command": "uvx",
"args": ["interlock-mcp", "serve", "--policy", "/path/to/interlock.policy.yaml"]
}
}
}Repository About & Topics
About
A zero-trust Model Context Protocol (MCP) server that gives AI agents native, governed access to the CAD, EDA, and SPICE tools already installed on your machine.
Topics / Tags
mcp · model-context-protocol · zero-trust · cad · eda · spice · freecad · kicad · ngspice · ltspice · fusion360 · governance · security · python
Related MCP server: Universal Netlist MCP Server
Table of Contents
What is Interlock?
Interlock sits between an MCP client (Claude Desktop, Claude Code, or any MCP host) and desktop engineering software (FreeCAD, KiCad, ngspice). It exposes one normalized MCP interface so an agent can sketch parts, route PCBs, or run SPICE simulations without ungoverned, destructive access.
Instead of granting raw macro or IPC access, Interlock enforces policy governance:
Deny-by-Default Grants: Capabilities remain disabled until explicitly enabled in
interlock.policy.yaml.Git-Style Staging: Mutating tool calls operate on a shadow copy; live files remain untouched until an explicit commit.
Domain-Aware Diffing: Outputs structural deltas (solids/volume for CAD, nets/tracks for EDA, elements for SPICE) rather than text or binary diffs.
Key Features
Non-Downgradable Destructive Tier:
destructive-tier capabilities (e.g.cad.delete_feature,eda.delete_track,fs.write_file) are strictlyapproval-required. Policy loading fails if set toauto.Local-First Processing: Sockets, subprocesses, and file operations remain 100% local on host hardware.
SQLite Audit Store: Every tool call, domain diff, timestamp, decision, and SHA-256 diff hash is logged to
.interlock/audit.db.In-Chat Approval & CLI Fallback: Inline review via
elicitation/createor terminal fallbacks (interlock approve <session-id>,interlock reject <session-id> --reason "...").Path Scoping: Restricts access strictly inside
project_root. Deny rules (file_scope.deny) take precedence over allow rules.
System Architecture
Interlock proxies communication between MCP clients and local engineering binaries:
graph TD
Client["MCP Client (Claude Desktop / CLI)"] -->|JSON-RPC 2.0 stdio/HTTP| PolicyEngine["Interlock Policy Engine"]
PolicyEngine -->|Policy Check| DiffEngine["Sandbox & Diff Engine"]
DiffEngine -->|Log Event & Hash| AuditStore[("SQLite Audit Store .interlock/audit.db")]
DiffEngine -->|Staged Automation| Adapters["Adapter Layer (FreeCAD / KiCad / ngspice / Workspace)"]
Adapters -->|Local Sockets & SCLI| LocalTools["Host Engineering Tools & Files"]
classDef default fill:#0f172a,stroke:#3b82f6,stroke-width:2px,color:#fff;
classDef process fill:#1e1b4b,stroke:#a855f7,stroke-width:2px,color:#fff;
class PolicyEngine,DiffEngine process;Security Boundary: Downstream tool capabilities are categorized by risk tier in adapter manifests (safe, mutating, destructive). Risk tiers are enforced independently by Interlock's policy engine.
Mathematical / Technical Formulation
1. Sallen-Key Low-Pass Filter Cutoff Frequency
Interlock validates analog SPICE simulation results against the theoretical closed-form cutoff equation:
$$f_c = \frac{1}{2 \pi \sqrt{R_1 R_2 C_1 C_2}}$$
Where:
$f_c$ — Cutoff frequency in Hertz (Hz)
$R_1, R_2$ — Filter resistor values in Ohms ($\Omega$)
$C_1, C_2$ — Filter capacitor values in Farads (F)
When $R_1 = R_2 = R$ and $C_1 = C_2 = C$:
$$f_c = \frac{1}{2 \pi R C}$$
Verification Target: Simulated AC sweep cutoff frequency must be within 2% of theoretical target frequency.
Setup & Installation
Option A: 1-Click Setup with uv or pip
# Recommended
uv tool install interlock-mcp
# Or with pip
pip install interlock-mcpOption B: From Source
git clone https://github.com/IamOumarIbrahim/interlock-mcp.git
cd interlock-mcp
pip install -e .Verification Command:
interlock doctorExpected Output:
Interlock v0.4.2 — environment check
✓ python 3.12.3
✓ freecad FreeCAD 1.0.1 found at /usr/bin/freecadcmd
✓ kicad KiCad 9.0.2 — IPC API reachable on /tmp/kicad/api.sock
✗ ngspice binary not found on PATH
✓ workspace C:\Dev\interlock is readable and writable
1 adapter needs attention — run `interlock doctor --fix` for platform-specific install instructions.Connecting to AI Clients
Open your Claude Desktop configuration file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
Add Interlock to
mcpServers:
{
"mcpServers": {
"interlock": {
"command": "uvx",
"args": [
"interlock-mcp",
"serve",
"--policy",
"/path/to/project/interlock.policy.yaml"
]
}
}
}How to Use
Initialize policy configuration in your project root:
interlock initVerify environment health:
interlock doctorApprove or reject staged agent actions:
# Approve staged session
interlock approve 8f2c-af31
# Reject staged session with reason
interlock reject 8f2c-af31 --reason "Untrusted footprint modification"View audit logs and replay sessions:
interlock audit tail
interlock audit show 8f2c-af31
interlock audit replay 8f2c-af31 --adapter kicadReference Tables
Configuration Schema (interlock.policy.yaml)
Field | Type | Default | Description |
| string |
| Root directory allowed for file operations |
| string |
| Default mode for unlisted capabilities ( |
| boolean |
| Enable/disable adapter |
| map |
| Capability permission mapping ( |
| list |
| Allowed glob paths relative to |
| list |
| Denied glob paths (overrides allow rules) |
| string |
| Channel ( |
| integer |
| Approval request timeout in seconds |
| string |
| SQLite audit database location |
Environment Variables
Variable | Default | Purpose |
|
| Path to active policy file |
|
| Override SQLite audit database path |
|
| Logging verbosity ( |
|
| Override approval timeout |
| unset | Disable ANSI colors in output |
Benchmarks / Comparisons
Capability / Metric | Direct Tool Automation | Generic MCP Gateway | Interlock |
Domain CAD/EDA/SPICE State | Yes | No | Yes |
Blocks Destructive Calls | No | Generic rules only | Yes |
Domain-Real Diffs | No | No | Yes |
100% Local (No Cloud Relay) | Yes | Cloud-hosted | Yes |
Standard MCP Protocol | Script-specific | Yes | Yes |
Scope & Limitations
Application Security Boundary: Interlock does not sandbox underlying binaries (FreeCAD, KiCad, ngspice); it inherits their real system privileges.
Semantic Engineering Decisions: Interlock enforces capability permissions and risk policy, not whether a specific CAD parameter is good engineering practice.
Export Control Compliance: Audit logs provide full session traceability; compliance policies (ITAR/EAR) must pair Interlock with organizational host controls.
File Structure
interlock-mcp/
├── src/interlock/
│ ├── adapters/ - Adapter implementations (FreeCAD, KiCad, ngspice, workspace, LTspice, Fusion 360)
│ ├── audit.py - SQLite audit store (.interlock/audit.db)
│ ├── cli.py - Click CLI commands (init, doctor, serve, approve, reject, audit)
│ ├── diff.py - Domain-aware diffing engine
│ ├── math_utils.py - Sallen-Key low-pass filter equations & verification
│ ├── policy.py - Zero-trust PolicyEngine & rule enforcement
│ └── server.py - MCP Server implementation
├── tests/ - Pytest suite (100% pass rate)
├── interlock.policy.yaml - Default policy configuration
├── pyproject.toml - Build configuration & dependencies
├── REQUIREMENTS.md - Extracted specification checklist
└── VERIFICATION.md - Verification matrix & test evidenceTroubleshooting
Issue | Root Cause | Resolution |
|
| Run |
| Policy file maps | Set capability permission to |
| Agent attempted path traversal outside | Move target file under |
| File path matched pattern in | Adjust |
Deployment & GitHub Release
Automated CI/CD & Deployment
Interlock uses GitHub Actions (.github/workflows/deploy.yml) for automated testing, linting, packaging, and GitHub Releases upon tag creation.
# Tag a release
git tag -a v0.4.2 -m "Release v0.4.2"
git push origin v0.4.2Security Policy
Security issues are taken seriously. See SECURITY.md for vulnerability reporting procedures.
Code of Conduct
We are committed to providing a welcoming community. See CODE_OF_CONDUCT.md.
Contributing
Contributions and new adapters are welcome! See CONTRIBUTING.md and docs/writing-an-adapter.md for details.
License
MIT © 2026 Interlock Maintainers
Powered By
Model Context Protocol · FreeCAD · KiCad · ngspice
If Interlock keeps your engineering tools safe, starring the repo helps others find it!
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Flicense-qualityDmaintenanceZero Trust Access AI Agent - MCP ServerLast updated
- Alicense-qualityBmaintenanceThis MCP server enables AI agents to understand and analyze electrical schematics from Cadence and Altium for comprehensive design reviews through natural conversations.Last updated22625Apache 2.0
- Alicense-qualityDmaintenanceMCP servers exposing security operations tools (VirusTotal, MITRE Caldera, LimaCharlie) to AI agents with defense-in-depth safety controls.Last updated1MIT
- Flicense-qualityAmaintenanceAn MCP server that gives an AI agent read and write access to a live SysML v2 model through the vendor-neutral OMG SysML v2 REST API.Last updated
Related MCP Connectors
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Give AI agents secure access to ZERNO project briefs, tasks, and context over remote MCP.
MCP server teaching AI agents to implement TideCloak: auth, E2EE, IGA, security analysis
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/IamOumarIbrahim/interlock-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server