Skip to main content
Glama
kfy123bot

EDA Tools MCP Server

by kfy123bot

EDA Tools MCP Server

Implementation of the paper: MCP4EDA: LLM-Powered Model Context Protocol RTL-to-GDSII Automation with Backend Aware Synthesis Optimization

A comprehensive Model Context Protocol (MCP) server that provides Electronic Design Automation (EDA) tools integration for AI assistants like Claude Desktop and Cursor IDE. This server enables AI to perform Verilog synthesis, simulation, ASIC design flows, and waveform analysis through a unified interface.

Demo

https://github.com/user-attachments/assets/65d8027e-7366-49b5-8f11-0430c1d1d3d6

EDA MCP Server demonstration showing Verilog synthesis, simulation, and ASIC design flow

Related MCP server: Xcelium MCP Server

Features

  • Verilog Synthesis: Synthesize Verilog code using Yosys for various FPGA targets (generic, ice40, xilinx)

  • Verilog Simulation: Simulate designs using Icarus Verilog with automated testbench execution

  • Waveform Viewing: Launch GTKWave for VCD file visualization and signal analysis

  • ASIC Design Flow: Complete RTL-to-GDSII flow using OpenLane with Docker integration

  • Layout Viewing: Open GDSII files in KLayout for physical design inspection

  • Report Analysis: Read and analyze OpenLane reports for PPA metrics and design quality assessment

Prerequisites

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

1. 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

Alternative - OSS CAD Suite (Recommended): Download the complete toolchain from: https://github.com/YosysHQ/oss-cad-suite-build/releases

2. Icarus Verilog (Simulation)

macOS (Homebrew):

brew install icarus-verilog

Ubuntu/Debian:

sudo apt-get install iverilog

Windows: Download installer from: https://bleyer.org/icarus/

3. GTKWave (Waveform Viewer)

Direct Downloads (Recommended):

  • Windows: Download from SourceForge

  • macOS: Download from SourceForge or use Homebrew: brew install --cask gtkwave

  • Linux: Download from SourceForge or use package manager: sudo apt-get install gtkwave

Alternative Installation Methods:

# macOS (Homebrew)
brew install --cask gtkwave

# Ubuntu/Debian
sudo apt-get install gtkwave

# Build from source (all platforms)
git clone https://github.com/gtkwave/gtkwave.git
cd gtkwave
meson setup build && cd build && meson install

Direct Downloads:

Installation:

  1. Download and install Docker Desktop from the official website

  2. Launch Docker Desktop and ensure it's running

  3. Verify installation: docker run hello-world

Note: Docker Desktop includes Docker Engine, Docker CLI, and Docker Compose in one package.

5. OpenLane (ASIC Design Flow)

Simple Installation Method (Recommended):

# Install OpenLane via pip
pip install openlane

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

# Verify installation
docker run hello-world

Usage Example:

# Create project directory
mkdir -p ~/openlane-projects/my-design
cd ~/openlane-projects/my-design

# Create Verilog file (counter example)
cat > counter.v << 'EOF'
module counter (
    input wire clk,
    input wire rst,
    output reg [7:0] count
);
    always @(posedge clk or posedge rst) begin
        if (rst)
            count <= 8'b0;
        else
            count <= count + 1;
    end
endmodule
EOF

# Create configuration file
cat > config.json << 'EOF'
{
    "DESIGN_NAME": "counter",
    "VERILOG_FILES": ["counter.v"],
    "CLOCK_PORT": "clk",
    "CLOCK_PERIOD": 10.0
}
EOF

# Run the RTL-to-GDSII flow
python3 -m openlane --dockerized config.json

Key Benefits:

  • The --dockerized flag handles all tool dependencies automatically via Docker

6. KLayout (Layout Viewer)

Direct Downloads (Recommended):

Alternative Installation:

# macOS (Homebrew)
brew install --cask klayout

# Ubuntu/Debian
sudo apt install klayout

Installation

1. Clone and Build the MCP Server

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

2. Project Structure

mcp-EDA/
├── src/
│   └── index.ts          # Main server code
├── build/
│   └── index.js          # Compiled JavaScript
├── package.json
├── tsconfig.json
└── README.md

Configuration

Docker Desktop MCP Integration

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

Prerequisites

  • Docker Desktop 4.39.0+ installed and running

  • Claude Desktop installed

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"

    This automatically configures Claude Desktop and Cursor IDE with:

    {
      "mcpServers": {
        "MCP_DOCKER": {
          "command": "docker",
          "args": [
            "run",
            "-i",
            "--rm",
            "alpine/socat",
            "STDIO",
            "TCP:host.docker.internal:8811"
          ]
        }
      }
    }

Cursor IDE Setup

  1. Add Your EDA MCP Server:

    • Locate your Claude Desktop config file, 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

1. 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

2. 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

3. 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.)

4. 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

Support

For issues and questions:

  • Check the troubleshooting section above

  • Review MCP server logs

  • Test individual tools manually

  • Open an issue with detailed error messages and environment information


Note: This MCP server requires local installation of EDA tools. The server acts as a bridge between AI assistants and your local EDA toolchain, enabling sophisticated hardware design workflows through natural language interaction.

Cite

@misc{wang2025mcp4edallmpoweredmodelcontext,
      title={MCP4EDA: LLM-Powered Model Context Protocol RTL-to-GDSII Automation with Backend Aware Synthesis Optimization}, 
      author={Yiting Wang and Wanghao Ye and Yexiao He and Yiran Chen and Gang Qu and Ang Li},
      year={2025},
      eprint={2507.19570},
      archivePrefix={arXiv},
      primaryClass={cs.AR},
      url={https://arxiv.org/abs/2507.19570}, 
}

Available Tools

6 tools
read_openlane_reportsB

Read OpenLane report files for LLM analysis. Returns all reports or specific category for detailed analysis of PPA metrics, timing, routing quality, and other design results.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID from OpenLane run
report_typeNoSpecific report category to read (synthesis, placement, routing, final, etc.). Leave empty to read all reports.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It indicates this is a read operation (implied by 'Read') and specifies the return content (reports for PPA metrics, timing, etc.), but does not cover aspects like error handling, rate limits, authentication needs, or data format details. It adds some context but is incomplete for a tool with no annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two sentences that efficiently convey the tool's purpose and return scope. It is front-loaded with the main action and avoids unnecessary details, though it could be slightly more structured by explicitly separating purpose from output details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, no output schema, and 2 parameters with full schema coverage, the description is moderately complete. It covers the basic purpose and return content but lacks details on behavioral traits, error cases, and output structure, which are important for a read tool in a technical context like OpenLane analysis.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters ('project_id' and 'report_type') with clear descriptions. The description adds marginal value by mentioning 'all reports or specific category', which aligns with the schema's default behavior, but does not provide additional syntax, format, or usage details beyond what the schema specifies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Read') and resource ('OpenLane report files'), specifying the purpose as retrieving reports for LLM analysis. It distinguishes from siblings like 'run_openlane' or 'simulate_verilog' by focusing on reading existing reports rather than executing processes, though it doesn't explicitly contrast with other read-like tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by mentioning 'Returns all reports or specific category', suggesting it can be used for broad or targeted analysis. However, it lacks explicit guidance on when to use this tool versus alternatives like 'view_gds' or 'view_waveform', and does not specify prerequisites or exclusions, leaving usage context somewhat vague.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_openlaneA

Run complete ASIC design flow using OpenLane (RTL to GDSII). This process can take up to 10 minutes.

ParametersJSON Schema
NameRequiredDescriptionDefault
verilog_codeYesThe Verilog RTL code for ASIC implementation
design_nameYesName of the design (will be used for module and files)
clock_portNoName of the clock portclk
clock_periodNoClock period in nanoseconds
open_in_klayoutNoAutomatically open result in KLayout

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It discloses the time-consuming nature ('up to 10 minutes'), which is valuable behavioral context. However, it doesn't mention other important traits like whether it creates files/directories, requires specific permissions, handles errors, or provides progress feedback. The description adds some context but leaves significant gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is perfectly concise with two sentences that each earn their place: the first states the core purpose, the second provides critical behavioral context (time estimate). No wasted words, well-structured and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given this is a complex ASIC design tool with 5 parameters, no annotations, and no output schema, the description is incomplete. While it covers purpose and time estimate, it doesn't address what the tool returns (GDSII file? success status?), error handling, or prerequisites. For a tool of this complexity with no structured support, more context would be helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 5 parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema. According to scoring rules, when schema_description_coverage is high (>80%), the baseline is 3 even with no param info in description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verb ('Run') and resource ('complete ASIC design flow using OpenLane'), and distinguishes it from siblings by specifying the full RTL to GDSII process. This differentiates it from tools like synthesize_verilog (partial flow) or view_gds (viewing only).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context through the time estimate ('up to 10 minutes'), suggesting this is for full ASIC implementation rather than partial steps. However, it doesn't explicitly state when to use this vs. alternatives like synthesize_verilog or when not to use it (e.g., for quick simulations). The context is implied but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

simulate_verilogC

Simulate Verilog code using Icarus Verilog

ParametersJSON Schema
NameRequiredDescriptionDefault
verilog_codeYesThe Verilog design code
testbench_codeYesThe testbench code

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but lacks behavioral details. It doesn't disclose what the simulation does (e.g., runs tests, generates waveforms), potential outputs, error handling, or performance considerations like runtime or resource usage. The mention of 'Icarus Verilog' hints at the simulator but doesn't explain its implications.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero waste. It front-loads the core purpose and includes the tool name, making it easy to parse quickly. Every word earns its place without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description is incomplete for a simulation tool. It doesn't explain what the simulation returns (e.g., success/failure, waveforms, logs) or behavioral aspects, leaving gaps in understanding how to interpret results or handle errors. More context is needed for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters ('verilog_code' and 'testbench_code') adequately. The description adds no additional parameter semantics beyond what's in the schema, such as format examples or interdependencies. Baseline 3 is appropriate as the schema handles the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Simulate') and target ('Verilog code'), and specifies the tool used ('Icarus Verilog'). It distinguishes from siblings like 'synthesize_verilog' by focusing on simulation rather than synthesis. However, it doesn't explicitly contrast with 'view_waveform' which might display simulation results.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing both design and testbench code), nor does it clarify relationships with siblings like 'view_waveform' for analyzing simulation outputs. The description assumes context without explicit usage instructions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

synthesize_verilogC

Synthesize Verilog code using Yosys for various FPGA targets

ParametersJSON Schema
NameRequiredDescriptionDefault
verilog_codeYesThe Verilog source code to synthesize
top_moduleYesName of the top-level module
targetNoTarget technology (generic, ice40, xilinx, intel)generic

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It mentions the synthesis tool (Yosys) and target types, but doesn't disclose behavioral traits like whether it's read-only or destructive, expected runtime, output format, error handling, or resource requirements. For a synthesis tool with zero annotation coverage, this leaves significant gaps in understanding its operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero waste. It's front-loaded with the core purpose and includes key details (tool and target scope) without unnecessary elaboration. Every word earns its place, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of synthesis (a non-trivial EDA operation), no annotations, and no output schema, the description is incomplete. It doesn't cover what the tool returns (e.g., netlist, reports), success/failure conditions, or integration with sibling tools. For a tool with 3 parameters and significant behavioral implications, more context is needed to be fully helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all three parameters. The description adds no additional meaning beyond what's in the schema—it doesn't explain parameter interactions, default behaviors, or usage examples. Baseline 3 is appropriate when the schema does the heavy lifting, but the description doesn't compensate or enhance understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Synthesize') and resource ('Verilog code'), and specifies the tool used ('Yosys') and target scope ('various FPGA targets'). It distinguishes from siblings like simulate_verilog or run_openlane by focusing on synthesis rather than simulation or full flows. However, it doesn't explicitly differentiate from potential overlapping tools beyond the sibling list provided.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, when not to use it, or compare it to sibling tools like simulate_verilog (for verification) or run_openlane (for full implementation). Usage is implied by the purpose but lacks explicit contextual boundaries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

view_gdsC

Open GDSII file in KLayout viewer

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID from OpenLane run
gds_fileNoSpecific GDS filename (optional, auto-detected if not provided)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It states the tool opens a file in a viewer, implying a read-only operation, but doesn't disclose whether this requires specific software (KLayout), what happens if the file doesn't exist, whether it launches a GUI application, or any performance/rate limit considerations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero wasted words. It's appropriately sized for the tool's apparent complexity and gets straight to the point without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no annotations and no output schema, the description is insufficient. It doesn't explain what 'opening in KLayout viewer' means operationally, what the user experience will be, whether this blocks execution, or what happens on success/failure. Given the technical nature of GDSII files and KLayout, more context would be helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters thoroughly. The description doesn't add any meaningful parameter semantics beyond what's in the schema - it doesn't explain the relationship between project_id and gds_file, or provide context about auto-detection behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Open') and target resource ('GDSII file in KLayout viewer'), providing a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'view_waveform' which might also involve viewing operations in different contexts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description doesn't mention prerequisites, when this tool is appropriate, or what distinguishes it from sibling tools like 'view_waveform' or other viewing/analysis operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

view_waveformC

Open VCD waveform file in GTKWave viewer

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID from simulation (required)
vcd_fileNoVCD filename (default: output.vcd)output.vcd

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but only states the action without behavioral details. It doesn't disclose whether this opens a GUI viewer (implying interactive use), requires specific permissions, has side effects, or handles errors. For a tool with zero annotation coverage, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero waste—it directly states the tool's action and target. It's appropriately sized and front-loaded, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (opening a waveform viewer likely involves GUI interaction) and lack of annotations/output schema, the description is incomplete. It doesn't explain what happens after opening (e.g., viewer launch, return values), prerequisites, or error handling, leaving gaps for agent usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters fully. The description adds no additional meaning beyond implying 'vcd_file' is opened, which is redundant with the schema. Baseline 3 is appropriate as the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Open') and resource ('VCD waveform file in GTKWave viewer'), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'view_gds' (which likely opens a different file type), so it misses full sibling distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a simulation result), exclusions, or how it relates to siblings like 'simulate_verilog' (which might generate the VCD file). This leaves the agent with minimal context for tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 6 tool updatesv1.0.0
    • First observedread_openlane_reports
    • First observedrun_openlane
    • First observedsimulate_verilog
    • First observedsynthesize_verilog
    • First observedview_gds
    • First observedview_waveform

TDQS

A3.5/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose with no overlap: reading reports, running a full design flow, simulating, synthesizing, viewing GDSII files, and viewing waveforms. The descriptions specify unique actions and tools (OpenLane, Icarus Verilog, Yosys, KLayout, GTKWave), making misselection unlikely.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern (e.g., read_openlane_reports, run_openlane, simulate_verilog) with no deviations. The naming is uniform and predictable across the set, using snake_case throughout.

Tool Count5/5

With 6 tools, the count is well-scoped for an EDA server, covering key stages like simulation, synthesis, viewing, and analysis. Each tool earns its place by addressing a specific need in the ASIC/FPGA design workflow without being excessive or sparse.

Completeness4/5

The tool set covers major EDA operations: simulation, synthesis, viewing, and report analysis, with no dead ends. A minor gap exists in lacking explicit CRUD operations for design files (e.g., create/edit Verilog), but agents can work around this using the provided tools for core workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    F
    maintenance
    A comprehensive Model Context Protocol server that connects AI assistants to Electronic Design Automation tools, enabling Verilog synthesis, simulation, ASIC design flows, and waveform analysis through natural language interaction.
    6
    108
    -
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to analyze hardware simulation VCD waveforms and GTKWave save files, providing access to signal values, bus definitions, and groupings without loading entire files.
    5
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to drive Xilinx Vivado, Intel Quartus, and Anlogic TangDynasty for FPGA development, including project creation, synthesis, implementation, timing closure, and hardware programming through natural language.
    MIT

Latest Blog Posts

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/kfy123bot/mcp4eda-kfy'

If you have feedback or need assistance with the MCP directory API, please join our Discord server