fpgaZeroMCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GITHUB_TOKEN | No | GitHub personal access token — raises API rate limits | |
| USERCORES_PATH | No | Extra core search directories (OS path separator delimited) | |
| FPGAZERO_TMPDIR | No | Override temporary workspace root directory | |
| FPGAZERO_ALLOWED_DIRS | No | OS pathsep-separated list of extra directories that project_dir may read from | |
| FPGAZERO_ALLOWED_LICENSES | No | Comma-separated SPDX IDs for import_github_core |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| 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
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
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