Vivado Red MCP

io.github.sinemortalPublished by GitHub account sinemortalv0.5.0Updated Nov 7, 2026

Drive AMD Vivado from AI assistants, with Red Pitaya STEMlab 125-14 build and deploy flows.

VerifiedSTDIODesktop only

Overview

Vivado Red's local MCP server; no sign-in required; STDIO; 93 tools.

No AI overview yet: these facts come from the registry entry and the server itself.

Installation

In SourceWeft

  1. Open Vivado Red MCP in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

vivado-red-mcp — Vivado MCP server, Red Pitaya edition

An MCP server that lets an AI assistant such as Claude drive AMD/Xilinx Vivado directly: create projects, build block designs, synthesize, implement, simulate, read timing/utilization reports and generate bitstreams — without opening the Vivado GUI.

It has first-class support for the Red Pitaya STEMlab 125-14 (Zynq xc7z010clg400-1): you can go from a natural-language description to a .bit.bin running on the board, using either pure RTL or the official RedPitaya-FPGA PS+PL (ARM + FPGA) backbone, and deploy it over SSH.

Forked from coreyhahn/vivado_mcp and heavily extended (93 tools): block design / IP Integrator, IP catalog, Hardware Manager, advanced reports, Red Pitaya RTL and PS+PL flows, SSH deploy.

Current version: 0.5.0 — see What's new and CHANGELOG.md.

Not to be confused with the unrelated vivado-mcp package on PyPI. This project is vivado-red-mcp: Python module vivado_red_mcp, command vivado-red-mcp.


Contents

What it can do

  • Persistent Vivado session — one Vivado process in Tcl mode is kept alive, so commands don't pay the 20–30 s startup each time.
  • Projects and design flow — create/open projects, add HDL and XDC files, synthesis, implementation, bitstream, run strategies.
  • Block design (IP Integrator) — ports, IP cores, RTL module cells, nets, PS7 presets, validation, wrapper generation.
  • Reports — timing (WNS/TNS/WHS/THS), utilization, clocks, power, DRC, methodology, QoR; returned as parsed values, not just raw text.
  • Simulation (xsim) — behavioral and post-synthesis/implementation, read signal values, breakpoints.
  • Red Pitaya — one-shot RTL build, full PS+PL build from the official RedPitaya-FPGA repo, bundled board constraints, .bit.bin generation, SSH deploy.
  • Raw Tcl — anything not covered by a tool can be run as Tcl (multi-line scripts supported).

Tested with

Status
Vivado 2026.1, Windows 11Validated end-to-end in 0.4.0: session, RTL and PS+PL Red Pitaya builds, reports, behavioral + post-synthesis xsim, block design, RedPitaya-FPGA tutorials (see below)
Vivado 2020.1, LinuxOriginal development target (0.3.x). Not re-tested on 0.4.0
Other Vivado releasesExpected to work (the generic tools use standard Tcl); not tested
Red Pitaya boardSTEMlab 125-14 (Z10) only for the Red Pitaya flows
Python3.10 – 3.12
MCP Python SDK1.x only (mcp>=1.0,<2, pinned automatically)

The RedPitaya-FPGA tutorials in prj/Examples (Led_blink, Knight_rider, Stopwatch, Frequency_counter) build to a bitstream through the server. Led_blink and Knight_rider rebuilt from scratch with MCP tools only produce byte-identical bitstreams to the tutorials' own scripts.

Requirements

  1. Python 3.10+
  2. AMD Vivado (the free edition is enough for the Red Pitaya xc7z010). When installing, you only need Vivado and, under devices, SoCs → Zynq-7000; Vitis Model Composer and DocNav are not needed.
  3. A Vivado license file — also for the free edition on 2025.x/2026.x. Without it Vivado refuses to start (a valid license was not found):
    • open the Vivado License Manager (<Vivado>/bin/vlm.bat on Windows, vlm on Linux);
    • Obtain License → on the AMD site tick Vivado Basic Tier License, Node Locked License (no charge, no expiry) → Generate Node-Locked License;
    • host ID: the MAC address of your network card (shown under View Host Information). The license is tied to the PC, not to the network you use;
    • load the received Xilinx.lic with Load License → Copy License.
  4. Vivado reachable by the server, either:
    • on PATH (Linux: source <Vivado>/settings64.sh; Windows: add <Vivado>\bin to PATH), or
    • by telling Claude the full path, which it passes to start_session (e.g. C:\AMDDesignTools\2026.1\Vivado\bin\vivado.bat).

pexpect (Linux/macOS) or pywinpty (Windows) is installed automatically.

Installation

1. Get the code and install it

bash
git clone https://github.com/sinemortal/vivado-red-mcp.gitcd vivado-red-mcppython -m venv .venv# Windows:      .venv\Scripts\activate# Linux/macOS:  source .venv/bin/activatepip install -e .

pip pins the MCP SDK to 1.x by itself. Do not upgrade mcp to 2.x: the server would not start ('Server' object has no attribute 'list_tools').

2. Register it with Claude Code

Once, for all your projects:

bash
claude mcp add --transport stdio --scope user vivado -- vivado-red-mcp

If vivado-red-mcp is not on PATH when Claude Code starts (typical with a virtual environment), point to the venv's Python instead:

bash
# Windowsclaude mcp add --transport stdio --scope user vivado -- "C:\path\to\vivado-red-mcp\.venv\Scripts\python.exe" -m vivado_red_mcp# Linux/macOSclaude mcp add --transport stdio --scope user vivado -- /path/to/vivado-red-mcp/.venv/bin/python -m vivado_red_mcp

Or share it with a single project through a .mcp.json at the project root:

json
{  "mcpServers": {    "vivado": {      "type": "stdio",      "command": "vivado-red-mcp"    }  }}

Check it with claude mcp list: vivado should show as connected.

3. Optional: disable the RedPitaya-FPGA auto-download

On startup the server downloads the RedPitaya-FPGA repo (source zip) into its working directory if it is missing, for the PS+PL flow. Set the environment variable VIVADO_MCP_NO_AUTOFETCH=1 to turn this off; the rp_fetch_repo tool can still download it on demand.

First steps

Talk to Claude in plain language, for example:

  1. "Start a Vivado session" (add the path if Vivado is not on PATH)
  2. "Open my project at C:/work/my_proj/my_proj.xpr"
  3. "Synthesize and implement it, then tell me if timing is met"
  4. "Show me the resource utilization"
  5. "Generate the bitstream"
  6. "Stop the Vivado session"

Claude picks the tools; you never have to call them by name.

Red Pitaya

Two flows, depending on whether you need the ARM processor:

FlowToolUse it for
RTL only (no PS7)create_redpitaya_project_rtlLogic clocked by the 125 MHz ADC clock: LEDs, counters, expansion-connector GPIO. One call does create → sources → XDC → synth → impl → bitstream → .bit.bin
PS + PLrp_fetch_repo → rp_setup_workspace → rp_build_projectDesigns that need the ARM, DDR or AXI. Reuses the PS7 block design shipped by RedPitaya-FPGA instead of reconfiguring the Zynq by hand

Example prompt:

Make an LED blinker at 1 Hz for the Red Pitaya using the 125 MHz ADC clock on led_o[0], build it and give me the .bit.bin.

To load the result on the board, ask Claude to use deploy_to_redpitaya (SSH, default credentials root/root; works with OS 1.04 xdevcfg and OS 2.00 fpgautil), or copy it yourself:

bash
scp led_blinker.bit.bin [email protected]:/tmp/ssh [email protected] 'cat /tmp/led_blinker.bit.bin > /dev/xdevcfg'

PS+PL and the RedPitaya-FPGA repo. The current upstream master targets Vivado 2025.1; older checkouts targeted 2020.1. Both layouts are supported. rp_setup_workspace copies the repo into a separate workspace and patches only that copy, so the scripts run on the Vivado you have installed (their exported block-design/IP scripts otherwise refuse any other release) and without a git checkout. Your downloaded repo is never modified. Details: get_vivado_doc redpitaya_ps_pl_flow.

Bundled board data (data/boards/):

  • red_pitaya_125_14_full.xdc — full pinout (ADC, DAC, LEDs, expansion connector, XADC), port names as in the official red_pitaya_top (adc_dat_i[ch][bit], dac_dat_o, exp_p_io, …); checked pin by pin against upstream sdc/red_pitaya.xdc.
  • red_pitaya_125_14_leds_min.xdc — 125 MHz differential ADC clock + 8 LEDs, for hello-world designs.
  • red_pitaya_125_14_info.json — part number and board metadata.

The RedPitaya tutorials (prj/Examples) use different port names (adc_dat_a_i, adc_clk_p_i, …) and a PS7 preset (cfg/red_pitaya.xml); use their own cfg/ files when rebuilding them.

More Italian prompt examples and the step-by-step low-level flow: USAGE.md.

What's new in 0.5.0

Renamed to vivado-red-mcp (package, Python module vivado_red_mcp, command vivado-red-mcp), so it no longer clashes with the unrelated vivado-mcp package on PyPI. If you installed an earlier version, reinstall it and re-register it with Claude Code using the new command (see Installation).

0.4.0

Works on Vivado 2026.1 and with the current RedPitaya-FPGA repo.

Fixed:

  • Server failed to start with MCP SDK 2.x → SDK pinned to 1.x.
  • Simulation never worked when the server was started by Claude Code on Windows (xsim: Spawn failed) → fixed.
  • Multi-line Tcl sent through run_tcl was silently corrupted on Windows → fixed.
  • get_timing_summary always returned empty values; get_utilization misread newer reports → both parse current Vivado output.
  • Reports right after a build failed with no message (No open design) → the latest completed run is opened automatically.
  • get_synthesis_errors_parsed always returned 0 errors → now reads the run logs, including failed IP runs.
  • launch_simulation modes rejected by recent Vivado → fixed.
  • generate_bitstream timed out after 300 s and didn't check the result → now verified, returns the .bit path.
  • Missing license (or any startup failure) now reports Vivado's own message in seconds instead of a generic error after 2 minutes.
  • Bundled red_pitaya_125_14_full.xdc had 6 wrong pins (ADC channel A MSB and dac_dat_o[8..12]) → corrected.
  • PS+PL flow broken by the new RedPitaya-FPGA layout → both layouts supported.

New tools: create_bd_port, add_module_to_bd, configure_bd_cell, set_run_strategy. Full list in CHANGELOG.md.

Troubleshooting

SymptomCause / fix
start_session fails with valid license was not foundVivado 2025.x/2026.x needs a license file even for the free edition — see Requirements
start_session cannot find VivadoPut <Vivado>/bin on PATH or give Claude the full path of vivado.bat / vivado
Server does not start: 'Server' object has no attribute 'list_tools'MCP SDK 2.x installed. Run pip install "mcp>=1.0,<2"
claude mcp list shows vivado as failedvivado-red-mcp not on PATH for Claude Code: register it with the venv's Python (see Installation)
A RedPitaya example fails synthesis with red_pitaya_pll ... port does not existUpstream issue in prj/Examples/Simple_moving_average (it pulls in rtl_250), not in this server
Occasional Could not open 'C' for writing in an IP runIntermittent Vivado issue with parallel out-of-context runs; re-run synthesis
Long paths on WindowsKeep projects in short paths; Vivado and IP generation hit the 260-character limit

Available tools

Session management

  • start_session - Start a persistent Vivado Tcl session (optional vivado_path)
  • stop_session - Stop the Vivado session
  • session_status - Session statistics
  • check_session_health - Detect a hung/dead session, optionally recover
  • get_host_status - Host CPU/memory status

Project management

  • create_project - Create a project on disk (default part xc7z010clg400-1)
  • open_project / close_project - Open or close an .xpr
  • get_project_info - Part, directory, top, …
  • add_sources / add_constraints - Attach HDL and XDC files

Design flow

  • run_synthesis - Run synthesis (verified run status)
  • run_implementation - Run place and route (verified run status)
  • generate_bitstream - Generate the bitstream (verified status + .bit path)
  • set_run_strategy - Set the synthesis/implementation run strategy

Reports & analysis

Report tools open the latest completed run automatically if no design is open.

  • get_timing_summary - WNS, TNS, WHS, THS, pulse width, met / not met
  • get_timing_paths - Detailed timing paths for failing/critical paths
  • get_utilization - LUTs, FFs, BRAMs, DSPs, IOs
  • get_clocks - Clock information
  • get_messages - Synthesis/implementation messages

Design queries

  • get_design_hierarchy - Module/instance hierarchy
  • get_ports - Top-level ports
  • get_nets / get_cells - Search nets and cells

Simulation (xsim)

  • set_simulation_top - Set the testbench module
  • launch_simulation - Behavioral, post-synthesis or post-implementation (functional/timing)
  • run_simulation / step_simulation / restart_simulation / close_simulation
  • get_simulation_time
  • get_signal_value / get_signal_values - Read signals
  • get_simulation_objects / get_scopes - Browse the hierarchy
  • add_signals_to_wave
  • add_breakpoint / remove_breakpoints
  • get_simulation_messages

Block design (IP Integrator) — Zynq / AXI

  • create_block_design - Create a block design and make it current
  • create_bd_port - Scalar, vector or interface ports
  • add_ip_to_bd - Add an IP core (VLNV) with CONFIG.* properties
  • add_module_to_bd - Add an RTL module as a module-reference cell
  • configure_bd_cell - Set CONFIG.* on an existing cell (e.g. PS7 board preset import)
  • connect_bd_net / connect_bd_intf_net - Wire pins/ports and AXI interfaces
  • auto_connect_axi - apply_bd_automation for AXI master ↔ slave
  • apply_ps7_preset - Zynq PS7 automation (FIXED_IO/DDR external)
  • validate_block_design - Run BD DRC
  • assign_bd_address - Auto-assign AXI address ranges
  • regenerate_bd_layout - Tidy the layout
  • save_bd_design / close_bd_design - Persist or close the BD
  • list_bd_cells - List cells
  • generate_bd_wrapper - make_wrapper + add to fileset + set as top

IP catalog

  • create_ip / configure_ip - Create and configure catalog IPs
  • generate_ip_target / synth_ip - Output products, out-of-context synthesis
  • upgrade_ip / report_ip_status - Upgrade and audit IP versions

Hardware Manager (JTAG)

  • open_hw_manager / close_hw_manager
  • connect_hw_server - Connect to hw_server (default localhost:3121)
  • program_device - Program a .bit over JTAG
  • refresh_hw_device - Re-read the JTAG chain

Advanced reports

  • report_power - Total/dynamic/static power
  • report_drc - DRC violations grouped by severity
  • report_methodology - UltraFast methodology checks
  • report_qor_assessment - QoR score
  • report_clock_interaction - Cross-clock paths
  • generate_full_report / read_report_section - Full reports to file, read them in pieces

Red Pitaya — RTL flow

  • list_boards / get_board_info - Bundled board metadata and XDC paths (no Vivado needed)
  • load_board_xdc - Add a bundled board XDC to the project
  • create_redpitaya_project_rtl - One-shot RTL build; returns bit_path, bin_path, parsed timing_summary and utilization
  • generate_cfgmem - .bit → .bit.bin for /dev/xdevcfg / fpgautil
  • get_synthesis_errors_parsed - Structured errors from the run logs, including failed IP runs

Red Pitaya — PS+PL flow

  • rp_fetch_repo - Download RedPitaya-FPGA (source zip, no git needed)
  • rp_setup_workspace - Isolated, patched copy of the repo to build in
  • rp_list_projects - List prj/* projects, flag the Z10-capable ones
  • rp_workspace_info - Which projects are already built
  • rp_create_custom_project - Clone a base project for your own PL logic
  • rp_build_project - Setup → synth → impl → bitstream → .bit.bin, with parsed timing

Red Pitaya — deploy (SSH, no Vivado needed)

  • deploy_to_redpitaya - Upload a .bit.bin and load it (xdevcfg on OS 1.04, fpgautil on OS 2.00)
  • ssh_redpitaya_exec - Run a shell command on the board

Documentation (offline)

  • list_vivado_docs / get_vivado_doc - Bundled topics (block_design, ps7_zynq, timing_constraints, synthesis_strategies, simulation_xsim, red_pitaya_125_14, redpitaya_ps_pl_flow, tcl_quoting, hw_manager, ip_integrator, pitfalls_2020_1), each with links to the AMD user guides

Raw Tcl and misc

  • run_tcl - Run any Tcl command or multi-line script
  • run_tcl_script - Source a .tcl file
  • request_feature / list_feature_requests

Architecture

┌─────────────────┐     MCP (JSON-RPC)     ┌─────────────────┐│   Claude Code   │◄──────over stdio──────►│  vivado-red-mcp     ││   (AI client)   │                        │  server         │└─────────────────┘                        └────────┬────────┘                                                    │ pexpect (Linux)                                                    │ pywinpty/ConPTY (Windows)                                                    ▼                                           ┌─────────────────┐                                           │ Vivado process  │                                           │  (-mode tcl)    │                                           └─────────────────┘

The server keeps one Vivado process in Tcl mode and talks to it through a pseudo-terminal, using the Vivado% prompt to know when a command has finished. Each tool family lives in its own module under tools/; see CLAUDE.md for the design conventions and known Vivado Tcl pitfalls.

Contributing

Issues and pull requests are welcome. There is no automated Vivado test in CI (it only checks that every tool has a handler); changes to the Vivado-facing code should be validated against a real Vivado install.

License

MIT — see LICENSE. Bundled third-party material (Red Pitaya board XDC files, 3-clause BSD) is listed in THIRD-PARTY-NOTICES.md.

Acknowledgments

Source: README.md at commit 79ff546

Tools

93

start_session

Start a persistent Vivado TCL session. Must be called before project/design tools. Vivado startup is ~30s; the session is reused across tool calls.

Parametersvivado_path

stop_session

Stop the Vivado TCL session and free resources.

Takes no parameters.

session_status

Get statistics for the current Vivado session (commands run, timing, errors).

Takes no parameters.

check_session_health

Verify the Vivado process is responsive. With auto_recover=true the session is restarted if it hangs.

Parametersauto_recover

get_host_status

Get host hostname, free memory, and session state. Useful to check there is enough RAM before launching synthesis/implementation.

Takes no parameters.

open_project

Open an existing Vivado project (.xpr file).

Parametersproject_pathrequired

close_project

Close the currently open project.

Takes no parameters.

get_project_info

Get name, part, target language, directory of the open project.

Takes no parameters.

create_project

Create a new Vivado project on disk in project mode. Defaults to the Red Pitaya STEMlab 125-14 part (xc7z010clg400-1). Call add_sources / add_constraints next, then run_synthesis.

Parametersnamerequiredpartforcedirectoryrequiredtarget_language

add_sources

Add HDL source files (.v/.sv/.vhd) to the current project. Optionally sets the top module and updates compile order.

Parametersfilesrequiredfilesetset_top

add_constraints

Add XDC constraint files to the current project.

Parametersfilesrequiredfileset

list_boards

List boards with bundled XDC + metadata. No Vivado session required.

Takes no parameters.

get_board_info

Get bundled metadata for a board: part, LED pinout, absolute XDC paths, default synth flags. Use the returned absolute_path values with add_constraints. No Vivado session required.

Parametersboardrequired

run_synthesis

Run synthesis on the current project (reset_run -> launch_runs synth_1 -> wait_on_run). Returns ground-truth status from the run object, not just text parsing.

Parametersjobstimeout

run_implementation

Run implementation (opt_design -> place_design -> route_design). Returns ground-truth status from the impl_1 run object.

Parametersjobstimeout

generate_bitstream

Generate bitstream — `launch_runs impl_1 -to_step write_bitstream` -> wait_on_run. Returns ground-truth run status and the .bit path.

Parameterstimeout

set_run_strategy

Set the strategy of a synthesis or implementation run (e.g. synth_1 'Flow_PerfOptimized_high', impl_1 'Performance_NetDelay_high'). On an unknown name, Vivado's error lists the valid strategies.

Parametersrunrequiredstrategyrequired

get_timing_summary

Get timing summary (WNS, TNS, WHS, THS). Returns parsed metrics by default. Use generate_full_report for raw output.

Parametersreport_typedetail_level

get_timing_paths

Get failing/critical timing paths. Returns structured summary by default; use detail_level=standard|full for the raw text too.

Parametersclockto_pinthroughfrom_pinnum_pathspath_typedetail_levelslack_threshold

get_utilization

Resource utilization (LUT/FF/BRAM/DSP/IO). Parsed only by default.

Parametersdetail_levelhierarchicalmodule_filterthreshold_percent

get_clocks

Get clock information and constraints (report_clocks).

Takes no parameters.

get_messages

Get Vivado messages filtered by severity (error/critical/warning/all).

Parametersseverity

get_design_hierarchy

Get the design hierarchy (modules and instances), optionally filtered.

Parametersmax_depthinstance_pattern

get_ports

Get top-level I/O ports of the design.

Takes no parameters.

get_nets

Search for nets by pattern (default '*').

Parameterslimitpattern

get_cells

Search for cells/instances by pattern.

Parameterslimitpattern

launch_simulation

Launch xsim in behavioral/post-synth/post-impl mode.

Parametersmode

run_simulation

Run the simulation for a specified time (e.g. 100ns, 1us, all).

Parameterstimerequired

restart_simulation

Restart the simulation from time 0.

Takes no parameters.

close_simulation

Close the current simulation.

Takes no parameters.

get_simulation_time

Get the current simulation time (current_time).

Takes no parameters.

get_signal_value

Get current value of a signal in simulation.

Parametersradixsignalrequired

get_signal_values

Get values of multiple signals matching a wildcard pattern (max 50).

Parametersradixpatternrequired

add_signals_to_wave

Add signals to the waveform viewer.

Parameterssignalsrequired

set_simulation_top

Set the top-level testbench module for simulation.

Parametersfilesettop_modulerequired

get_simulation_objects

List simulation objects in a scope (signals/ports/internal).

Parametersscopefilter

get_scopes

List child scopes (hierarchy) in the simulation.

Parametersparent

step_simulation

Step simulation by delta cycles.

Parameterscount

add_breakpoint

Add a breakpoint on signal edge or change.

Parameterssignalrequiredcondition

remove_breakpoints

Remove all breakpoints (remove_bps -all).

Takes no parameters.

get_simulation_messages

Get simulation log messages filtered by severity.

Parametersseverity

run_tcl

Execute a raw TCL command in Vivado. Use for advanced ops not covered by other tools.

Parameterscommandrequiredtimeout

run_tcl_script

Source a .tcl script file in the Vivado session (uses `source` under the hood). Helpful for replaying canonical Red Pitaya / Xilinx reference scripts.

Parameterspathrequiredtimeout

create_block_design

Create a new block design and make it current. Optionally sets the board_part property on the project beforehand (board_part requires the BSP to be installed in Vivado).

Parametersnamerequiredboard_part

save_bd_design

Save the currently open block design to disk.

Takes no parameters.

close_bd_design

Close the currently open block design (without deleting).

Takes no parameters.

list_bd_cells

List cells in the current block design (optionally filtered).

Parametersfilter

add_ip_to_bd

Add an IP core to the current block design (`create_bd_cell -type ip -vlnv ...`). If `config` is provided, the CONFIG.* keys are applied via set_property -dict.

Parametersvlnvrequiredconfigcell_namerequired

create_bd_port

Create a top-level port on the current block design. Scalar or vector (`from`/`to`) via create_bd_port, or an interface port when `vlnv` is given (create_bd_intf_port, e.g. the XADC 'xilinx.com:interface:diff_analog_io_rtl:1.0'). Port names must match the constraints (XDC) of the board.

Parameterstofrommodenamerequiredtypevlnvdirection

add_module_to_bd

Add an RTL module (Verilog/VHDL already in the project, see add_sources) to the current block design as a module-reference cell (`create_bd_cell -type module -reference`). Optional `config` sets its parameters, e.g. {'CONFIG.WIDTH': '8'}; string parameters keep their quotes, e.g. {'CONFIG.init': '"0011"'}.

Parametersconfigmodulerequiredcell_namerequired

configure_bd_cell

Set CONFIG.* properties on an existing block-design cell (set_property -dict). Use for settings that must be applied after creation or in a separate step, e.g. importing a PS7 board preset: {'CONFIG.PCW_IMPORT_BOARD_PRESET': '<path>/red_pitaya.xml'}.

Parametersconfigrequiredcell_namerequired

connect_bd_net

Connect two scalar pins/ports in the current block design.

Parameterspin_torequiredpin_fromrequired

connect_bd_intf_net

Connect two AXI/interface pins in the current block design.

Parametersintf_torequiredintf_fromrequired

auto_connect_axi

Use `apply_bd_automation -rule xilinx.com:bd_rule:axi4` to wire an AXI master to a slave (inserts AXI interconnect + clock/reset hookups).

Parametersslaverequiredmasterrequiredoptions

apply_ps7_preset

Apply the Zynq-7000 processing_system7 board preset to a PS7 cell — wires FIXED_IO / DDR / clocks per the board definition. Equivalent to clicking 'Run Block Automation' on a freshly added PS7 in the GUI.

Parameterscellapply_board_preset

validate_block_design

Run validate_bd_design and return parsed status. Failures include unconnected pins, conflicting CONFIG values, or missing assignments.

Takes no parameters.

regenerate_bd_layout

Regenerate the block design layout (cosmetic; useful before save).

Takes no parameters.

assign_bd_address

Auto-assign addresses in the BD address editor (assign_bd_address).

Takes no parameters.

generate_bd_wrapper

Generate the HDL wrapper for a block design and (by default) add it to sources_1 and set it as project top. Implements the canonical pattern: make_wrapper -files <bd> -top; add_files -norecurse <wrapper>; set_property top <wrapper> [current_fileset]; update_compile_order.

Parametersbd_namerequiredset_top

create_ip

Create an IP from the Xilinx IP catalog. Generates a .xci file in the project's IP sources fileset. Use configure_ip + generate_ip_target afterwards, then run synth_ip if you want out-of-context synthesis.

Parametersvendorip_namerequiredlibraryversionmodule_namerequired

configure_ip

Set CONFIG.* properties on an existing IP via set_property -dict.

Parametersconfigrequiredmodule_namerequired

generate_ip_target

Generate IP output products (synthesis + simulation by default).

Parameterstargetsmodule_namerequired

synth_ip

Run out-of-context (OOC) synthesis on an IP.

Parametersmodule_namerequired

upgrade_ip

Upgrade IP version (no-op if already at latest).

Parametersmodule_name

report_ip_status

Get a structured snapshot of the project's IP and their upgrade status.

Takes no parameters.

open_hw_manager

Open the Hardware Manager (no JTAG connection yet).

Takes no parameters.

close_hw_manager

Close the Hardware Manager.

Takes no parameters.

connect_hw_server

Connect to a hw_server (cs_server). Default URL is localhost:3121 — the value Vivado uses when running hw_server locally.

Parametersurl

refresh_hw_device

Refresh the currently selected hardware device (re-reads JTAG chain state). Call after re-plugging a cable.

Takes no parameters.

program_device

Program a .bit onto the first device on the JTAG chain. Sequence: open_hw_target -> set PROGRAM.FILE -> program_hw_devices. The hardware must already be connected (`open_hw_manager` + `connect_hw_server`).

Parametersbit_filerequiredprobes_file

report_power

Run report_power and return parsed totals (total/dynamic/static W) + a truncated raw block. Full output stored at /tmp/vivado_red_mcp/.

Takes no parameters.

report_drc

Run report_drc and return parsed violations list (severity/code/message). Use after place_design/route_design to catch design-rule problems.

Takes no parameters.

report_methodology

Run report_methodology (UltraFast methodology checks). Returns violation list grouped by severity.

Takes no parameters.

report_qor_assessment

Run report_qor_assessment (overall design quality score).

Takes no parameters.

report_clock_interaction

Run report_clock_interaction to find cross-clock paths (timed/async/unconstrained).

Takes no parameters.

load_board_xdc

Resolve a bundled board XDC and attach it to the current project. Standalone wrapper over get_board_info + add_constraints.

Parametersboardrequiredvariant

generate_cfgmem

Convert a .bit into a raw binary image (.bit.bin) loadable via /dev/xdevcfg on the Red Pitaya. Use after generate_bitstream.

Parametersoutputbit_filerequired

get_synthesis_errors_parsed

Return structured errors and critical warnings from a run's log (default: synth_1), plus those of every failed run (e.g. out-of-context IP runs). Use after run_synthesis fails to get a clean actionable list.

Parametersrunmax_items

create_redpitaya_project_rtl

One-shot composite: create project -> add HDL sources -> apply XDC -> synth -> impl -> write_bitstream -> generate .bit.bin. Stops on the first failing stage and returns a structured payload.

Parametersjobsnamerequiredboarddirectoryrequiredtop_modulerequiredsynth_flagsxdc_variantimpl_timeoutsynth_timeoutverilog_filesrequiredextra_xdc_files

rp_fetch_repo

Download the RedPitaya-FPGA repo from GitHub as a source zip and extract it (no git required, stdlib only). Returns repo_path to feed into rp_setup_workspace. Idempotent — pass force=true to redownload. No Vivado session required.

Parametersrefurlforcetimeoutdest_path

rp_setup_workspace

Copy a RedPitaya-FPGA repo into an isolated workspace so builds don't touch the pristine checkout. The copy is patched to run on the installed Vivado release (block-design version check) and without git. Idempotent — pass force=true to recopy. No Vivado session required.

Parametersforcerepo_pathrequiredworkspace_path

rp_list_projects

List projects under prj/ of a RedPitaya workspace or repo. Flags which are Z10-capable (have ip/system.tcl or legacy ip/systemZ10.tcl). No Vivado session required.

Parameterspathrequired

rp_workspace_info

Report workspace state: projects present and which already have a built bitstream.

Parametersworkspace_pathrequired

rp_create_custom_project

Clone an existing prj/<base> into prj/<name> inside the workspace, ready for custom PL logic. Returns the rtl/ dir and red_pitaya_top path to edit. No Vivado session required.

Parametersnamerequiredbase_projectrequiredworkspace_pathrequired

rp_build_project

Build a RedPitaya PS+PL project end-to-end: run the repo's project setup TCL (creates the PS7 block design from ip/system.tcl), then synthesis, implementation and write_bitstream, then generate the .bit.bin. Returns {stage, xpr_path, bit_path, bin_path, timing}. Requires start_session first.

Parametersjobsmodeldefinesprojectrequiredsynth_flagsimpl_timeoutsetup_timeoutsynth_timeoutworkspace_pathrequired

deploy_to_redpitaya

Copy a .bit.bin to a Red Pitaya over SSH/SCP and load it into the FPGA. Uses /dev/xdevcfg (works on Red Pitaya OS 1.04 + 2.00) or fpgautil (OS 2.00). No Vivado session required.

Parametershostrequiredportusermethodpasswordkeep_remoteremote_pathbit_bin_pathrequiredkey_filenameconnect_timeout

ssh_redpitaya_exec

Run an arbitrary shell command on a Red Pitaya over SSH and return stdout/stderr/exit code. Useful for status checks, dmesg reads, manual loader invocations.

Parametershostrequiredportusercommandrequiredpasswordexec_timeoutkey_filenameconnect_timeout

get_vivado_doc

Look up a topical Vivado documentation summary bundled with this server. Returns markdown content + upstream URL. Known topics: block_design, ps7_zynq, timing_constraints, synthesis_strategies, simulation_xsim, red_pitaya_125_14, redpitaya_ps_pl_flow, tcl_quoting, hw_manager, ip_integrator, pitfalls_2020_1.

Parameterstopicrequiredversion

list_vivado_docs

List the bundled Vivado documentation topics.

Takes no parameters.

request_feature

Submit a feature request for the Vivado MCP server (persisted on disk).

Parameterstitlerequiredpriorityuse_casedescriptionrequired

list_feature_requests

List all submitted feature requests.

Takes no parameters.

generate_full_report

Generate a full Vivado report to a file. Use when inline reports get truncated or you need the complete output. Returns a report_id usable with read_report_section.

Parametersoptionsoutput_filereport_typerequired

read_report_section

Read a section of a previously generated report. Provide report_id (from generate_full_report) or a direct file_path.

Parametersfile_pathnum_linesreport_idstart_linesearch_pattern

Version history

1
  1. v0.5.0LatestNov 3, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts