{
  "markdown": "# OpenROAD MCP Server\n\n<!-- mcp-name: io.github.The-OpenROAD-Project/openroad-mcp -->\n\nA Model Context Protocol (MCP) server that provides tools for interacting with [OpenROAD](https://theopenroadproject.org/) and [ORFS](https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts).\n\n## About OpenROAD MCP\n\n**New here?** Check out the [Quick Start Guide](docs/QUICKSTART.md) to get your AI assistant analyzing designs in 5 minutes.\n\nOpenROAD 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.\n\nOpenROAD 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.\n\nWith this MCP server, your AI assistant can:\n- **Execute Commands** - Run interactive OpenROAD sessions with full PTY support.\n- **Manage Sessions** - Create, list, inspect, and terminate multiple physical design sessions.\n- **Track History & Metrics** - Access full command history and performance metrics for analysis.\n- **Visualize Reports** - List and read report images from ORFS runs directly in the chat.\n\n## Demo\n\n![OpenROAD MCP Demo](demo/video_gen/visual-tools.gif)\n\n[Watch full demo video](https://youtu.be/1J-Qtto-ssU)\n\n## Requirements & Installation\n\nTo use this MCP server, you need the server runtime, plus the underlying OpenROAD layout tools.\n\n### 1. Server Runtime\n- **Node.js 22+** is required to run the `npx` distribution.\n\n### 2. OpenROAD\n**OpenROAD** must be installed and available in your `PATH`.\n- [Official OpenROAD Installation Guide](https://openroad.readthedocs.io/en/latest/user/Build.html)\n\n### 3. OpenROAD-flow-scripts (ORFS)\n**ORFS** is optional but highly recommended for complete RTL-to-GDS flows and report visualization.\n- [Official ORFS Local Build Guide](https://openroad-flow-scripts.readthedocs.io/en/latest/user/BuildLocally.html)\n\n## Configuration\n\nFor platform-specific Node.js and C++ toolchain setup instructions, see the **[Cross-Platform Build Guide](docs/CROSS_PLATFORM.md)**.\n\nYou 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.\n\nOn 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.\n\n## Supported MCP Clients\n\nHere is the standard base configuration used across most clients:\n\n```json\n{\n  \"command\": \"npx\",\n  \"args\": [\"-y\", \"openroad-mcp\"]\n}\n```\n\nFind your specific client below for the exact configuration snippet and file location.\n\n<details><summary><b>Claude Code</b></summary>\n\n```bash\nclaude mcp add --transport stdio openroad-mcp -- npx -y openroad-mcp\n```\n\nOr add the standard config to `.mcp.json` / `.claude/settings.json`.\n\nIf a GUI-launched client still cannot find `openroad`, pass an override. Use `command -v` so you do not hard-code paths:\n\n```bash\nclaude mcp add \\\n  --env PATH=\"$(dirname \"$(command -v openroad)\"):${PATH}\" \\\n  --env ORFS_FLOW_PATH=\"${HOME}/OpenROAD-flow-scripts/flow\" \\\n  --transport stdio openroad-mcp \\\n  -- npx -y openroad-mcp\n```\n\nPut `--transport` between `--env` and the server name so the CLI does not treat the name as another `KEY=value` pair.\n</details>\n\n<details><summary><b>Claude Desktop</b></summary>\n\nAdd the standard config to:\n- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`\n- **Windows**: `%APPDATA%\\Claude\\claude_desktop_config.json`\n</details>\n\n<details><summary><b>Cursor</b></summary>\n\nAdd the standard config to `.cursor/mcp.json`.\n</details>\n\n<details><summary><b>GitHub Copilot (VS Code)</b></summary>\n\nAdd to `.vscode/mcp.json`. Requires `\"type\": \"stdio\"`:\n```json\n{\n  \"servers\": {\n    \"openroad-mcp\": {\n      \"type\": \"stdio\",\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"openroad-mcp\"]\n    }\n  }\n}\n```\n</details>\n\n<details><summary><b>Windsurf</b></summary>\n\nAdd the standard config to `~/.codeium/windsurf/mcp_config.json`.\n</details>\n\n<details><summary><b>Cline / Roo Code</b></summary>\n\nAdd the standard config to `cline_mcp_settings.json` (Cline) or `.roo/mcp.json` (Roo Code).\n</details>\n\n<details><summary><b>Continue / PearAI</b></summary>\n\nAdd to your respective `config.json` under `modelContextProtocolServers`:\n```json\n{\n  \"transport\": {\n    \"type\": \"stdio\",\n    \"command\": \"npx\",\n    \"args\": [\"-y\", \"openroad-mcp\"]\n  }\n}\n```\n</details>\n\n<details><summary><b>Zed</b></summary>\n\nAdd to `~/.config/zed/settings.json`:\n```json\n{\n  \"context_servers\": {\n    \"openroad-mcp\": {\n      \"command\": {\n        \"path\": \"npx\",\n        \"args\": [\"-y\", \"openroad-mcp\"]\n      }\n    }\n  }\n}\n```\n</details>\n\n<details><summary><b>Docker / MCP Registry / Others</b></summary>\n\nThe server is available on the [MCP Registry](https://registry.modelcontextprotocol.io) and via Docker:\n```bash\ndocker run --rm -i ghcr.io/the-openroad-project/openroad-mcp:latest\n```\nMost other standard STDIO clients are fully supported. Refer to your tool's MCP setup guide.\n</details>\n\n## Available Tools\n\nOnce configured, your AI assistant will have access to the following tools. For detailed parameters, schemas, and return formats, see the **[API Reference](docs/API.md)**.\n\n- `interactive_openroad_query`\n- `interactive_openroad_exec`\n- `create_interactive_session`\n- `list_interactive_sessions`\n- `terminate_interactive_session`\n- `inspect_interactive_session`\n- `get_session_history`\n- `get_session_metrics`\n- `list_report_images`\n- `read_report_image`\n\n## Troubleshooting\n\n- **The server fails to start**: Ensure you have Node.js 22+. Older versions will fail.\n- **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.\n- **Commands rejected with CommandBlocked**: You sent a state-modifying command to `interactive_openroad_query`. Use `interactive_openroad_exec` instead.\n- **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).\n\nTo get more detail, set `LOG_LEVEL=DEBUG` in the server's environment.\n\n## Development\n\nClone 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.\n\nThen run:\n```bash\ncd typescript\nnpm install\nnpm run build\n```\n\n**Testing:**\n```bash\nnpm run test             # unit tests\nnpm run test:integration # integration tests\nnpm run test:performance # performance benchmarks\n```\n\n**Linting & type checking:**\n```bash\nnpm run typecheck\nnpm run lint\n```\n\n## Contributing\n\nWe welcome contributions! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for detailed instructions on our development workflow and code standards.\n\n## License\n\nBSD 3-Clause License. See [LICENSE](LICENSE) file.\n\n---\n*Built with ❤️ by Precision Innovations*",
  "bytes": 7394,
  "sha": "90b3dfaecc64a97b40986aaf9d0b80aedec5802f16507c4610fcd0b4452ab9b4",
  "repo_slug": "luarss/openroad-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_luarss_openroad_mcp_3195c666/readme"
}