Quartus
FreeNot checkedBridges AI assistants with Intel/Altera Quartus II for FPGA project workflows.
About
Bridges AI assistants with Intel/Altera Quartus II for FPGA project workflows.
README
A Model Context Protocol (MCP) server that gives Claude full access to Intel/Altera Quartus II 13.1 — create projects, compile designs, assign pins, run timing analysis, program FPGAs via JTAG, and more, all from a Claude conversation.
What You Can Do
Once connected, you can talk to Claude naturally:
"Create a new Cyclone IV project called
blink, add myblink.vfile, assign the clock to PIN_R8 and the LED to PIN_A15, then compile it and program my FPGA."
Claude will call the appropriate tools and report back results, errors, and warnings — no manual GUI clicks needed.
Requirements
| Requirement | Version |
|---|---|
| Quartus II | 13.1 (Web Edition or higher) |
| Python | 3.10 or later |
| Claude Code | Latest |
Note: Quartus II must be installed on the same machine running Claude Code. The default install path assumed is
C:\altera\13.1\. See Configuration if yours differs.
Installation
1. Clone this repository
git clone https://github.com/irumvag/quartus_mcp_server.git
cd quartus-mcp-server
2. Install the Python dependency
pip install mcp>=1.0.0
Or use the requirements file:
pip install -r requirements.txt
3. Verify Quartus is reachable
Open a terminal and confirm the Quartus shell responds:
C:\altera\13.1\quartus\bin64\quartus_sh.exe --version
You should see output like Version 13.1.0 Build 162 ....
Configuration
Option A — Project-level (recommended)
The repository already includes .claude/settings.json. Open it and update the path to point to quartus_mcp_server.py on your machine:
{
"mcpServers": {
"quartus": {
"command": "python",
"args": ["C:\\path\\to\\your\\quartus-mcp-server\\quartus_mcp_server.py"],
"env": {
"QUARTUS_ROOTDIR": "C:\\altera\\13.1\\quartus",
"QUARTUS_ROOTDIR_OVERRIDE": "C:\\altera\\13.1\\quartus"
}
}
}
}
If Quartus is installed in a different location, also update
QUARTUS_ROOTDIRandQUARTUS_ROOTDIR_OVERRIDEto match.
Option B — Global (available in all Claude Code sessions)
Edit (or create) C:\Users\YOUR_NAME\.claude\settings.json:
{
"mcpServers": {
"quartus": {
"command": "python",
"args": ["C:\\path\\to\\your\\quartus-mcp-server\\quartus_mcp_server.py"],
"env": {
"QUARTUS_ROOTDIR": "C:\\altera\\13.1\\quartus",
"QUARTUS_ROOTDIR_OVERRIDE": "C:\\altera\\13.1\\quartus"
}
}
}
}
If Quartus is not in C:\altera\13.1\
Open quartus_mcp_server.py and update line 22:
QUARTUS_BIN = r"C:\altera\13.1\quartus\bin64" # ← change this
Activate
Restart Claude Code. The tools will appear with the quartus__ prefix (e.g. quartus__compile_project).
Verifying the Connection
After restarting Claude Code, open a session in this project's directory and ask Claude:
"List the available Quartus device families."
Claude will call get_device_families and return a list like Cyclone IV E, Stratix V, etc. If it does, everything is working.
Available Tools (38)
Project Management
| Tool | Description |
|---|---|
create_project |
Create a new project (name, directory, family, device) |
open_project |
Open and verify an existing project |
close_project |
Close the current project |
get_project_info |
Read family, device, top-level entity |
list_projects |
Find all .qpf files in a directory tree |
archive_project |
Archive a project to a .qar file |
Compilation
| Tool | Description |
|---|---|
compile_project |
Run full or partial flow (full / map / fit / asm / sta) |
run_analysis_synthesis |
Run Analysis & Synthesis (quartus_map) |
run_fitter |
Run Fitter / Place & Route (quartus_fit) |
run_assembler |
Run Assembler — produces .sof and .pof files |
get_compilation_status |
Check last compile status and list output artifacts |
get_compilation_messages |
Extract errors and warnings from report files |
Timing Analysis
| Tool | Description |
|---|---|
run_timing_analysis |
Run Static Timing Analysis (quartus_sta) |
get_timing_summary |
Read the .sta.summary report |
get_clock_summary |
Get all clock names and periods |
get_timing_paths |
Get timing paths between two nodes |
Pin Assignments & Device
| Tool | Description |
|---|---|
get_device_families |
List all supported device families |
get_devices |
List all part numbers for a family |
get_pin_assignments |
Read all set_location_assignment entries |
set_pin_assignment |
Assign a signal to a pin (+ optional I/O standard) |
remove_pin_assignment |
Remove a pin location assignment |
get_global_assignments |
Read all set_global_assignment entries |
set_global_assignment |
Write a global assignment (e.g. SDC_FILE, TOP_LEVEL_ENTITY) |
JTAG / Programmer
| Tool | Description |
|---|---|
detect_jtag_devices |
Detect JTAG-connected devices |
get_programmer_cables |
List available cables (USB-Blaster, etc.) |
program_device |
Program an FPGA using the latest .sof via JTAG |
Reports & Analysis
| Tool | Description |
|---|---|
get_flow_summary |
Read the .flow.rpt compilation summary |
get_resource_usage |
Get LUT/register/memory utilization |
get_power_report |
Run quartus_pow and return the power report |
run_design_rule_check |
Run quartus_drc |
File Management
| Tool | Description |
|---|---|
list_project_files |
List source files registered in the .qsf |
add_file_to_project |
Add a file (VERILOG_FILE, VHDL_FILE, SDC_FILE, etc.) |
remove_file_from_project |
Remove a file from the .qsf |
read_qsf |
Read the raw .qsf settings file |
Tcl Scripting
| Tool | Description |
|---|---|
run_tcl_script |
Run a .tcl file through quartus_sh -t |
execute_tcl_command |
Run arbitrary inline Tcl code through quartus_sh |
Example Conversations
Create and compile a project:
You: Create a Cyclone IV E project called "counter" in C:\projects\counter using device EP4CE6E22C8
Claude: [calls create_project] ✓ Project created.
You: Add C:\projects\counter\counter.v to the project
Claude: [calls add_file_to_project] ✓ File added.
You: Compile it
Claude: [calls compile_project] ✓ Compilation successful. 0 errors, 3 warnings.
Check resource usage after compile:
You: How many logic elements does my design use?
Claude: [calls get_resource_usage] → 42 / 6272 logic elements (1%)
Assign pins from a pin table:
You: Assign clk to PIN_R8, reset to PIN_J15, led[0] to PIN_A15 with 3.3-V LVTTL
Claude: [calls set_pin_assignment × 3] ✓ All pins assigned.
Program the FPGA:
You: Program my FPGA via USB-Blaster
Claude: [calls detect_jtag_devices, then program_device] ✓ Programming successful.
File Structure
quartus-mcp-server/
├── quartus_mcp_server.py # MCP server — all 38 tools
├── requirements.txt # pip dependency (mcp>=1.0.0)
├── .claude/
│ └── settings.json # Registers server with Claude Code
└── README.md # This file
Troubleshooting
"Executable not found" errors
- Confirm Quartus is installed and
QUARTUS_BINinquartus_mcp_server.pypoints to yourbin64folder.
"No .qpf file found in directory"
- Pass the full path to either the
.qpffile or the directory that contains it.
Tools not appearing in Claude Code
- Make sure
.claude/settings.jsonis in the project directory you opened in Claude Code, or that you updated the global~/.claude/settings.json. - Restart Claude Code after any settings change.
Compilation hangs
- Full compilation has a 600-second timeout. Very large designs may exceed this. Edit
timeout=600intool_compile_projectto increase it.
mcp import error on startup
- Run
pip install mcpagain in the same Python environment Claude Code uses.
License
MIT — free to use, modify, and distribute.
Contributing
Pull requests are welcome. To add a new tool:
- Write the implementation function (
tool_your_name(...)) inquartus_mcp_server.py - Add a
Tool(...)entry to theTOOLSlist - Add a dispatch entry to
TOOL_HANDLERS - Update the table in this README
Installing Quartus
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/irumvag/quartus_mcp_serverFAQ
Is Quartus MCP free?
Yes, Quartus MCP is free — one-click install via Unyly at no cost.
Does Quartus need an API key?
No, Quartus runs without API keys or environment variables.
Is Quartus hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Quartus in Claude Desktop, Claude Code or Cursor?
Open Quartus on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
Fetch
Web content fetching and conversion for efficient LLM usage.
AWS KB Retrieval
Retrieval from AWS Knowledge Base using Bedrock Agent Runtime.
by modelcontextprotocolSpring AI MCP Server
Provides auto-configuration for setting up an MCP server in Spring Boot applications.
llm-analysis-assistant
A very streamlined mcp client that supports calling and monitoring stdio/sse/streamableHttp, and can also view request responses through the /logs page. It also
by xuzexin-hzCompare Quartus with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All ai MCPs
