A Model Context Protocol (MCP) server that provides tools for interacting with OpenROAD and ORFS.
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.
- Manage Sessions - Create, list, inspect, and terminate multiple physical design sessions.
- Track History & Metrics - Access full command history and performance metrics for analysis.
- Visualize Reports - List and read report images from ORFS runs directly in the chat.
To use this MCP server, you need the server runtime, plus the underlying OpenROAD layout tools.
- Node.js 22+ is required to run the
npxdistribution.
OpenROAD must be installed and available in your PATH.
ORFS is optional but highly recommended for complete RTL-to-GDS flows and report visualization.
For platform-specific Node.js and C++ toolchain setup instructions, see the Cross-Platform Build Guide.
Before configuring your MCP client, you must provide the server with your local paths to OpenROAD and ORFS.
Run these commands in your terminal to locate the necessary directories:
# Get your OpenROAD binary directory:
dirname $(which openroad)
# Check for the default ORFS flow directory:
ls ~/OpenROAD-flow-scripts/flow
# (If not found, search with: find ~ -maxdepth 4 -type d -name flow -path "*/OpenROAD-flow-scripts/*" 2>/dev/null)Copy the example environment file and fill in the paths you just found:
cp .env.example .envEdit .env to ensure PATH includes your OpenROAD binary directory, and ORFS_FLOW_PATH points to your ORFS checkout. Pass these values into your MCP client's configuration via the env block.
Here is the standard base configuration used across most clients:
{
"command": "npx",
"args": ["-y", "openroad-mcp"]
}Find your specific client below for the exact configuration snippet and file location.
(Note: If your client supports environment variables in the config, inject your PATH and ORFS_FLOW_PATH directly in the snippet).
Claude Code
claude mcp add --transport stdio openroad-mcp -- npx -y openroad-mcpOr add the standard config to .claude/settings.json.
Claude Desktop
Add the standard config to:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Cursor
Add the standard config to .cursor/mcp.json.
GitHub Copilot (VS Code)
Add to .vscode/mcp.json. Requires "type": "stdio":
{
"servers": {
"openroad-mcp": {
"type": "stdio",
"command": "npx",
"args": ["-y", "openroad-mcp"]
}
}
}Windsurf
Add the standard config to ~/.codeium/windsurf/mcp_config.json.
Cline / Roo Code
Add the standard config to cline_mcp_settings.json (Cline) or .roo/mcp.json (Roo Code).
Continue / PearAI
Add to your respective config.json under modelContextProtocolServers:
{
"transport": {
"type": "stdio",
"command": "npx",
"args": ["-y", "openroad-mcp"]
}
}Zed
Add to ~/.config/zed/settings.json:
{
"context_servers": {
"openroad-mcp": {
"command": {
"path": "npx",
"args": ["-y", "openroad-mcp"]
}
}
}
}Docker / MCP Registry / Others
The server is available on the MCP Registry and via Docker:
docker run --rm -i ghcr.io/the-openroad-project/openroad-mcp:latestMost other standard STDIO clients are fully supported. Refer to your tool's MCP setup guide.
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_queryinteractive_openroad_execcreate_interactive_sessionlist_interactive_sessionsterminate_interactive_sessioninspect_interactive_sessionget_session_historyget_session_metricslist_report_imagesread_report_image
- The server fails to start: Ensure you have Node.js 22+. Older versions will fail.
- Session creation fails: Confirm
openroadis on yourPATH. The server spawns it by name; if it's missing, session creation (not startup) will fail. - Commands rejected with CommandBlocked: You sent a state-modifying command to
interactive_openroad_query. Useinteractive_openroad_execinstead. - Report images not found: Make sure
ORFS_FLOW_PATHpoints to your ORFSflow/directory.
To get more detail, set LOG_LEVEL=DEBUG in the server's environment.
Clone the repository and run:
cd typescript
npm install
npm run buildTesting:
npm run test # unit tests
npm run test:integration # integration tests
npm run test:performance # performance benchmarksLinting & type checking:
npm run typecheck
npm run lintWe welcome contributions! Please see CONTRIBUTING.md for detailed instructions on our development workflow and code standards.
BSD 3-Clause License. See LICENSE file.
Built with ❤️ by Precision Innovations
