EDA Tools MCP server

Integrates with Electronic Design Automation tools to enable hardware design workflows including RTL synthesis, simulation, timing analysis, and physical layout generation for chip design tasks
Back to servers
Setup instructions
Provider
Nelly W
Release date
May 24, 2025
Language
Java
Stats
45 stars

The EDA Tools MCP Server provides a comprehensive interface that enables AI assistants like Claude Desktop and Cursor IDE to perform electronic design automation tasks, including Verilog synthesis, simulation, ASIC design flows, and waveform analysis through a unified Model Context Protocol (MCP) interface.

Prerequisites

Before using the MCP server, you need to install several EDA tools:

Yosys (Verilog Synthesis)

macOS (Homebrew):

brew install yosys

Ubuntu/Debian:

sudo apt-get update
sudo apt-get install yosys

From Source:

# Install prerequisites
sudo apt-get install build-essential clang bison flex \
    libreadline-dev gawk tcl-dev libffi-dev git \
    graphviz xdot pkg-config python3 libboost-system-dev \
    libboost-python-dev libboost-filesystem-dev zlib1g-dev

# Clone and build
git clone https://github.com/YosysHQ/yosys.git
cd yosys
make -j$(nproc)
sudo make install

Alternatively, you can download the complete OSS CAD Suite toolchain from GitHub.

Icarus Verilog (Simulation)

macOS (Homebrew):

brew install icarus-verilog

Ubuntu/Debian:

sudo apt-get install iverilog

GTKWave (Waveform Viewer)

macOS (Homebrew):

brew install --cask gtkwave

Ubuntu/Debian:

sudo apt-get install gtkwave

Docker Desktop

Download and install Docker Desktop for your platform from the official website.

After installation:

  1. Launch Docker Desktop and ensure it's running
  2. Verify installation: docker run hello-world

OpenLane (ASIC Design Flow)

# Install OpenLane via pip
pip install openlane

# Pull the Docker image
docker pull efabless/openlane:latest

# Verify installation
docker run hello-world

KLayout (Layout Viewer)

macOS (Homebrew):

brew install --cask klayout

Ubuntu/Debian:

sudo apt install klayout

Installation

Clone and Build the MCP Server

git clone https://github.com/NellyW8/mcp-EDA
cd mcp-EDA
npm install
npm run build
npx tsc   

Configuration

Docker Desktop MCP Integration

This method uses Docker Desktop's built-in MCP extension for the easiest setup experience.

Setup Steps

  1. Install Docker Desktop Extension:

    • Launch Docker Desktop
    • Go to "Extensions" from the left menu
    • Search for "AI Tools" or "Docker MCP Toolkit"
    • Install "Labs: AI Tools for Devs" extension
  2. Configure Docker MCP Connection:

    • Open the installed "Labs: AI Tools for Devs" extension
    • Click the gear icon in the upper right corner
    • Select the "MCP Clients" tab
    • Click "Connect" for "Claude Desktop" or "Cursor IDE"

Claude Desktop Setup

  1. Add Your EDA MCP Server:

    • Locate your Claude Desktop config file in Settings > Developer > Edit Config:
      • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
      • Windows: %APPDATA%\Claude\claude_desktop_config.json
    • Add your EDA server to the existing configuration:
    {
      "mcpServers": {
        "MCP_DOCKER": {
          "command": "docker",
          "args": [
            "run",
            "-i",
            "--rm",
            "alpine/socat",
            "STDIO",
            "TCP:host.docker.internal:8811"
          ]
        },
        "eda-mcp": {
          "command": "node",
          "args": [
            "/absolute/path/to/your/eda-mcp-server/build/index.js"
          ],
          "env": {
            "PATH": "/usr/local/bin:/opt/homebrew/bin:/usr/bin:/bin",
            "HOME": "/your/home/directory"
          }
        }
      }
    }
    
  2. Restart Claude Desktop and verify both servers are running in Settings > Developer.

Cursor IDE Setup

  1. Open Cursor Settings:

    • Press Ctrl + Shift + P (Windows/Linux) or Cmd + Shift + P (macOS)
    • Search for "Cursor Settings"
    • Navigate to "MCP" in the sidebar
  2. Add MCP Server: Click "Add new MCP server" and configure:

     {
      "mcpServers": {
        "MCP_DOCKER": {
          "command": "docker",
          "args": [
            "run",
            "-i",
            "--rm",
            "alpine/socat",
            "STDIO",
            "TCP:host.docker.internal:8811"
          ]
        },
        "eda-mcp": {
          "command": "node",
          "args": [
            "/absolute/path/to/your/eda-mcp-server/build/index.js"
          ],
          "env": {
            "PATH": "/usr/local/bin:/opt/homebrew/bin:/usr/bin:/bin",
            "HOME": "/your/home/directory"
          }
        }
      }
    }
    
  3. Enable MCP Tools:

    • Go to Cursor Settings → MCP
    • Enable the "eda-mcp" server
    • You should see the server status change to "Connected"

Usage Examples

Verilog Synthesis

Ask Claude: "Can you synthesize this counter module for an ice40 FPGA?"

module counter(
    input clk,
    input rst,
    output [7:0] count
);
    reg [7:0] count_reg;
    assign count = count_reg;
    
    always @(posedge clk or posedge rst) begin
        if (rst)
            count_reg <= 8'b0;
        else
            count_reg <= count_reg + 1;
    end
endmodule

Verilog Simulation

Ask Claude: "Please simulate this adder with a testbench"

// Design
module adder(
    input [3:0] a,
    input [3:0] b,
    output [4:0] sum
);
    assign sum = a + b;
endmodule

// Testbench will be generated automatically or you can provide one

ASIC Design Flow

Ask Claude: "Run the complete ASIC flow for this design with a 10ns clock period"

module simple_cpu(
    input clk,
    input rst,
    input [7:0] data_in,
    output [7:0] data_out
);
    // Your RTL design here
endmodule

What you get after completion:

  • runs/RUN_*/final/gds/design.gds - Final GDSII layout
  • runs/RUN_*/openlane.log - Complete execution log
  • runs/RUN_*/reports/ - Timing, area, power analysis reports
  • All intermediate results (DEF files, netlists, etc.)

Waveform Analysis

Ask Claude: "View the waveforms from the simulation with project ID: abc123"

Troubleshooting

Common Issues

  1. MCP Server Not Detected:

    • Verify the absolute path in configuration
    • Check that Node.js is installed and accessible
    • Restart Claude Desktop/Cursor after configuration changes
  2. Docker Permission Errors:

    sudo groupadd docker
    sudo usermod -aG docker $USER
    sudo reboot
    
  3. Tool Not Found Errors:

    • Verify tools are installed: yosys --version, iverilog -V, gtkwave --version
    • Check PATH environment variable in MCP configuration
    • On macOS, ensure Homebrew paths are included: /opt/homebrew/bin
  4. OpenLane Timeout:

    • The server has a 10-minute timeout for OpenLane flows
    • For complex designs, consider simplifying or running multiple iterations
  5. GTKWave/KLayout GUI Issues:

    • On macOS: GTKWave/KLayout may need manual approval in Security & Privacy settings
    • On Linux: Ensure X11 forwarding is working if using remote systems
    • On Windows: Ensure GUI applications can launch from command line

Debugging

  1. Check MCP Server Logs:

    • Claude Desktop: ~/Library/Logs/Claude/mcp*.log (macOS)
    • Cursor: Check the MCP settings panel for error messages
  2. Test Tools Manually:

    yosys -help
    iverilog -help
    docker run hello-world
    gtkwave --version
    klayout -v
    
  3. Verify Node.js Environment:

    node --version
    npm --version
    

How to install this MCP server

For Claude Code

To add this MCP server to Claude Code, run this command in your terminal:

claude mcp add-json "eda-mcp" '{"command":"node","args":["/absolute/path/to/your/eda-mcp-server/build/index.js"],"env":{"PATH":"/usr/local/bin:/opt/homebrew/bin:/usr/bin:/bin","HOME":"/your/home/directory"}}'

See the official Claude Code MCP documentation for more details.

For Cursor

There are two ways to add an MCP server to Cursor. The most common way is to add the server globally in the ~/.cursor/mcp.json file so that it is available in all of your projects.

If you only need the server in a single project, you can add it to the project instead by creating or adding it to the .cursor/mcp.json file.

Adding an MCP server to Cursor globally

To add a global MCP server go to Cursor Settings > Tools & Integrations and click "New MCP Server".

When you click that button the ~/.cursor/mcp.json file will be opened and you can add your server like this:

{
    "mcpServers": {
        "eda-mcp": {
            "command": "node",
            "args": [
                "/absolute/path/to/your/eda-mcp-server/build/index.js"
            ],
            "env": {
                "PATH": "/usr/local/bin:/opt/homebrew/bin:/usr/bin:/bin",
                "HOME": "/your/home/directory"
            }
        }
    }
}

Adding an MCP server to a project

To add an MCP server to a project you can create a new .cursor/mcp.json file or add it to the existing one. This will look exactly the same as the global MCP server example above.

How to use the MCP server

Once the server is installed, you might need to head back to Settings > MCP and click the refresh button.

The Cursor agent will then be able to see the available tools the added MCP server has available and will call them when it needs to.

You can also explicitly ask the agent to use the tool by mentioning the tool name and describing what the function does.

For Claude Desktop

To add this MCP server to Claude Desktop:

1. Find your configuration file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json

2. Add this to your configuration file:

{
    "mcpServers": {
        "eda-mcp": {
            "command": "node",
            "args": [
                "/absolute/path/to/your/eda-mcp-server/build/index.js"
            ],
            "env": {
                "PATH": "/usr/local/bin:/opt/homebrew/bin:/usr/bin:/bin",
                "HOME": "/your/home/directory"
            }
        }
    }
}

3. Restart Claude Desktop for the changes to take effect

Want to 10x your AI skills?

Get a free account and learn to code + market your apps using AI (with or without vibes!).

Nah, maybe later