The OpenROAD MCP server - interactive EDA sessions via Model Context Protocol
OpenROAD MCP Server (io.github.The-OpenROAD-Project/openroad-mcp)
The OpenROAD MCP server provides tools for interacting with OpenROAD and ORFS via the Model Context Protocol (MCP). It is intended to connect MCP-compatible clients (such as Claude and Cursor) to OpenROAD so AI assistants can analyze physical-design artifacts.
🛠️ Key Features
Implements an MCP server for OpenROAD
Provides tools for interacting with OpenROAD and ORFS (OpenROAD-flow-scripts)
🚀 Use Cases
Interactive EDA sessions using MCP-compatible clients
AI-assisted analysis of physical-design using OpenROAD
⚡ Developer Benefits
Integrates with MCP-compatible clients like Claude and Cursor
Includes a Quick Start Guide for getting started in minutes
⚠️ Limitations
Describes available interactions at a high level; specific tool outputs and behaviors are not included in the provided excerpt
A Model Context Protocol (MCP) server that provides tools for interacting with OpenROAD and ORFS.
About OpenROAD MCP
New here? Check out the Quick Start Guide to get your AI assistant analyzing designs in 5 minutes.
OpenROAD MCP eliminates the barrier between your AI assistant and physical design by connecting Claude, Cursor, and other MCP-compatible clients directly to the OpenROAD layout tools.
OpenROAD is the leading open-source, foundational application for semiconductor digital design, delivering an Autonomous, No-Human-In-Loop (NHIL) flow from RTL-GDSII. OpenROAD-flow-scripts (ORFS) is the fully autonomous flow built around it.
With this MCP server, your AI assistant can:
Execute Commands - Run interactive OpenROAD sessions with full PTY support.
You do not need to clone this repo or pass path environment variables in the common case. The published npx package does not read a .env file.
On startup the server inherits the MCP client's environment, then fills PATH the same way which openroad would: current PATH, then your login-shell PATH, then common install locations (/opt/homebrew/bin, conda, local OpenROAD builds). ORFS_FLOW_PATH defaults to ~/OpenROAD-flow-scripts/flow, and is also detected when ORFS sits next to the openroad binary.
Supported MCP Clients
Here is the standard base configuration used across most clients:
json
{"command":"npx","args":["-y","openroad-mcp"]}
Find your specific client below for the exact configuration snippet and file location.
Claude Code
bash
claude mcp add --transport stdio openroad-mcp -- npx -y openroad-mcp
Or add the standard config to .mcp.json / .claude/settings.json.
If a GUI-launched client still cannot find openroad, pass an override. Use command -v so you do not hard-code paths:
The server is available on the MCP Registry and via Docker:
bash
docker run --rm -i ghcr.io/the-openroad-project/openroad-mcp:latest
Most other standard STDIO clients are fully supported. Refer to your tool's MCP setup guide.
Available Tools
Once configured, your AI assistant will have access to the following tools. For detailed parameters, schemas, and return formats, see the API Reference.
interactive_openroad_query
interactive_openroad_exec
create_interactive_session
list_interactive_sessions
terminate_interactive_session
inspect_interactive_session
get_session_history
get_session_metrics
list_report_images
read_report_image
Troubleshooting
The server fails to start: Ensure you have Node.js 22+. Older versions will fail.
Session creation fails: Confirm command -v openroad works in a terminal. The server inherits PATH and searches common install locations; if your prefix is unusual, pass PATH with --env as shown in the Claude Code section.
Commands rejected with CommandBlocked: You sent a state-modifying command to interactive_openroad_query. Use interactive_openroad_exec instead.
Report images not found: The server defaults to ~/OpenROAD-flow-scripts/flow. If ORFS lives elsewhere, set ORFS_FLOW_PATH in the MCP client's env block (not a .env file).
To get more detail, set LOG_LEVEL=DEBUG in the server's environment.
Development
Clone the repository. .env.example is a local-dev reference only; copy it to .env if you use direnv or similar. The server still reads process.env (the MCP client's env block), not the file.
Then run:
bash
cd typescript
npm install
npm run build
Testing:
bash
npm run test# unit tests
npm run test:integration # integration tests
npm run test:performance # performance benchmarks
Linting & type checking:
bash
npm run typecheck
npm run lint
Contributing
We welcome contributions! Please see CONTRIBUTING.md for detailed instructions on our development workflow and code standards.