Skip to main content
Glama
lcapossio

fpgaZeroMCP

by lcapossio

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
GITHUB_TOKENNoGitHub personal access token — raises API rate limits
USERCORES_PATHNoExtra core search directories (OS path separator delimited)
FPGAZERO_TMPDIRNoOverride temporary workspace root directory
FPGAZERO_ALLOWED_DIRSNoOS pathsep-separated list of extra directories that project_dir may read from
FPGAZERO_ALLOWED_LICENSESNoComma-separated SPDX IDs for import_github_core

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}

Tools

Functions exposed to the LLM to take actions

NameDescription
lint_hdlA

Lint HDL source code using iverilog/verilator (Verilog/SystemVerilog) or ghdl (VHDL). Use linter='verilator' to enable -Wall checks including multidriven net detection.

lint_projectA

Lint multiple HDL files together so cross-module references resolve. Pass a dict of filename-to-source pairs. All files are compiled in one invocation of iverilog/verilator (Verilog/SystemVerilog) or ghdl (VHDL). Use linter='verilator' to enable -Wall checks including multidriven net detection.

synthesizeA

Synthesize HDL (Verilog, SystemVerilog, or VHDL) using Yosys or run LiteX backend. Provide source as: code (single string), files (dict of filename→source), or project_dir (path to HDL files on disk). Returns resource statistics and the list of inferred modules. Supported targets: generic, ice40, ecp5, gowin, xilinx, intel.

place_and_routeA

Synthesize HDL with Yosys then place-and-route with nextpnr in one step. Provide source as: code (single string), files (dict of filename→source), or project_dir (path to HDL files on disk). If backend=litex, runs LiteX build and ignores HDL inputs. Returns max frequency, critical path, resource utilization, bitstream, and full logs. Supported targets: ice40, ecp5, nexus, gowin. Common device/package values: ice40: device=hx1k|hx8k|up5k|lp1k package=tq144|qn84|sg48|cm81 ecp5: device=25k|45k|85k package=CABGA256|CABGA381 nexus: device=LIFCL-40-9BG400C (package embedded in device string) gowin: device=GW1N-UV4LQ144C6/I5 (package embedded in device string)

simulateA

Compile and simulate HDL using Icarus Verilog (iverilog + vvp) or GHDL (VHDL). Provide the design source and a separate testbench. Returns all $display/$monitor output (Verilog) or report output (VHDL) and any runtime errors.

list_ip_coresA

List all available IP cores in the registry. Optionally filter by category.

get_ip_coreB

Fetch the full manifest and HDL source files for a named IP core.

search_github_coresA

Search GitHub for open-source FPGA IP cores (MIT, BSD, Apache, GPL, etc). Returns repo names, star counts, descriptions and topics. Use import_github_core to download a result into the local registry.

import_github_coreA

Download an open-source GitHub repository and add it to the local IP core registry. Automatically uses FuseSoC CAPI2 metadata (.core file) if one exists in the repo. After import, the core is immediately available via get_ip_core and generate_ip.

import_fusesoc_coreA

Import a local FuseSoC CAPI2 .core file into the registry. HDL files referenced in the .core file must exist in the same directory. Useful when you already have FuseSoC cores checked out locally.

generate_ipB

Generate a parameterized instance of an IP core. Returns the HDL source files and a ready-to-paste Verilog instantiation snippet with the requested parameter values applied.

get_diagnosticsB

Return structured lint diagnostics (line, column, severity, message) for HDL source. Verilog/SystemVerilog: uses Verilator (primary) with verible-verilog-lint as fallback. VHDL: uses GHDL. All tools are part of OSS CAD Suite.

format_hdlA

Format HDL source code and return the result. Verilog/SystemVerilog: uses verible-verilog-format. VHDL: uses vsg (pip install vsg). Returns the formatted code and whether it changed.

litex_buildC

Run LiteX board target with --build. Returns logs and output directory.

litex_socA

Generate LiteX SoC without building gateware. Returns logs and output directory.

litex_flowA

Run a generic LiteX board target with caller-provided args.

start_buildA

Start a long-running build command in the background. Returns a build_id to check progress with build_status. Use for synthesis, place-and-route, LiteX builds, or any command that takes minutes.

build_statusA

Check the progress of a background build. Returns status (running/success/failed), elapsed time, and recent log output.

list_buildsA

List all tracked builds (running and finished) with status summary.

cancel_buildB

Cancel a running background build.

check_toolsA

Check which EDA tools are installed and reachable. Returns tool name, path, and version for each detected binary.

reload_registryA

Re-scan all core directories and rebuild the IP core cache. Call after adding cores to disk or editing config.json.

cleanup_build_logsA

Delete old build logs to reclaim disk space. Removes logs older than max_age_days, then trims oldest until under max_total_mb.

program_fpgaA

Flash a bitstream to an FPGA board using iceprog (ice40) or openFPGALoader (ecp5/gowin/nexus). Provide bitstream as base64 (from place_and_route output) or a file path on disk.

list_boardsA

List all known FPGA board presets with target, device, package, and clock frequency.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

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/lcapossio/fpgaZeroMCP'

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