Vivado MCP Native
English | 简体中文
A cross-platform Model Context Protocol (MCP) server for AMD/Xilinx Vivado. It lets MCP-compatible AI clients start and manage Vivado, open projects, run synthesis and implementation, inspect timing and utilization, control simulation, and execute Tcl commands.
This project uses a persistent subprocess Tcl session that works natively on Windows and Linux. It does not depend on the Unix-only pexpect transport.
[!IMPORTANT] Vivado is not included. Device support, licensed features, and available FPGA families are determined by the Vivado installation on the host machine.
[!WARNING] The name
vivado-mcpon PyPI belongs to a different project. Install this project asvivado-mcp-native.
Highlights
- Native launch of Windows
vivado.batandvivado.cmdfiles. - Direct Linux executable launch without an intermediate shell.
- One persistent Vivado Tcl process reused across MCP calls.
- UUID-framed command protocol that separates stdout, Tcl return values, return codes, and error stacks.
- UTF-8 hex transport for quotes, braces, backslashes, multiline Tcl, Unicode, and Windows paths.
- Full process-tree cleanup after command timeouts.
- Vivado discovery through
VIVADO_PATH, PATH, and common installation directories. - A
vivado-mcp-native-doctorcommand for checking the local Python-to-Vivado connection.
Requirements
| Component | Requirement |
|---|---|
| Operating system | Windows 10/11 or Linux |
| Python | 3.10–3.12 |
| Vivado | Local AMD/Xilinx Vivado installation |
| License | Appropriate for the operations and FPGA devices you use |
Installation
From PyPI — recommended
Install the isolated command-line application with pipx:
py -m pip install --user --upgrade pipx
py -m pipx ensurepath
py -m pipx install vivado-mcp-native
Linux:
python3 -m pip install --user --upgrade pipx
python3 -m pipx ensurepath
python3 -m pipx install vivado-mcp-native
Installed commands:
vivado-mcp-native— start the MCP server;vivado-mcp-native-doctor— check the local Vivado connection;vivado-mcp-winandvivado-mcp-win-doctor— compatibility aliases.
Install the latest source from GitHub
py -m pipx install --force "https://github.com/Arthurzxy/vivado_mcp_native/archive/refs/heads/master.zip"
Dedicated virtual environment
$venv = "$env:LOCALAPPDATA\vivado-mcp-native"
py -3.11 -m venv $venv
& "$venv\Scripts\python.exe" -m pip install --upgrade pip
& "$venv\Scripts\python.exe" -m pip install --upgrade vivado-mcp-native
Official MCP Registry
The server identity used by the official MCP Registry is:
io.github.Arthurzxy/vivado-mcp-native
Registry metadata is stored in server.json. The PyPI package uses the hidden mcp-name marker near the top of this README for package ownership verification. Version 0.2.1 is the first release prepared for official Registry publication.
Select the Vivado installation
VIVADO_PATH and the start_session tool's vivado_path argument may point to:
- the complete
vivado.bat,vivado.cmd,vivado.exe, or Linuxvivadolauncher; - the Vivado
bindirectory; - the Vivado version directory.
Example:
$env:VIVADO_PATH = "D:\Xilinx\Vivado\2025.2\bin\vivado.bat"
Without an explicit path, the server checks PATH and common Windows locations such as:
C:\Xilinx\Vivado\*\bin\vivado.bat
C:\AMD\Vivado\*\bin\vivado.bat
C:\Program Files\AMD\Vivado\*\bin\vivado.bat
Check the Vivado connection
vivado-mcp-native-doctor --vivado-path "D:\Xilinx\Vivado\2025.2\bin\vivado.bat"
The path may also be a Vivado bin directory or version directory. Machine-readable output is available with --json:
vivado-mcp-native-doctor --vivado-path "D:\Xilinx\Vivado\2025.2" --json
The diagnostic command resolves the launcher, starts a persistent Tcl session, queries Vivado and Tcl versions, checks Tcl command transport and Unicode handling, verifies session health, and closes Vivado cleanly. It does not open or modify a user project.
Configure an MCP client
Find the installed executable:
(Get-Command vivado-mcp-native).Source
Example configuration for a pipx installation:
{
"mcpServers": {
"vivado": {
"command": "C:\\Users\\you\\.local\\bin\\vivado-mcp-native.exe",
"env": {
"VIVADO_PATH": "D:\\Xilinx\\Vivado\\2025.2\\bin\\vivado.bat"
}
}
}
}
Example configuration for a virtual environment:
{
"mcpServers": {
"vivado": {
"command": "C:\\Users\\you\\AppData\\Local\\vivado-mcp-native\\Scripts\\python.exe",
"args": ["-m", "vivado_mcp"],
"env": {
"VIVADO_PATH": "D:\\Xilinx\\Vivado\\2025.2\\bin\\vivado.bat"
}
}
}
}
Using an absolute executable or Python path avoids depending on the MCP client's PATH environment.
Capabilities
| Category | Representative tools | Purpose |
|---|---|---|
| Session management | start_session, stop_session, session_status, get_host_status |
Start or stop Vivado and inspect session or host state |
| Project management | open_project, close_project, get_project_info |
Open .xpr projects and read project information |
| Design flow | run_synthesis, run_implementation, generate_bitstream |
Run synthesis, place-and-route, and bitstream generation |
| Reports | get_timing_summary, get_timing_paths, get_utilization, get_clocks, get_messages |
Read timing, resource, clock, and message reports |
| Design queries | get_design_hierarchy, get_ports, get_nets, get_cells |
Inspect hierarchy, ports, nets, and cells |
| Simulation | launch_simulation, run_simulation, restart_simulation, get_signal_value |
Control xsim and inspect signals |
| Advanced | run_tcl, generate_full_report, read_report_section |
Execute Tcl and read large reports |
Architecture
MCP-compatible client
│ MCP / stdio
▼
Vivado MCP server
│ persistent subprocess Tcl session
▼
AMD/Xilinx Vivado -mode tcl
Each command is transported as UTF-8 hex and wrapped with unique markers. The server extracts stdout, the Tcl result, return code, and error stack without relying on the localized Vivado% prompt.
Troubleshooting
Vivado does not start
Verify the launcher directly:
& "D:\Xilinx\Vivado\2025.2\bin\vivado.bat" -mode tcl
Then run vivado-mcp-native-doctor and check the path, installation, permissions, environment, and license configuration.
Chinese output is corrupted
Override the Windows output decoder when necessary:
$env:VIVADO_MCP_OUTPUT_ENCODING = "gbk"
Use utf-8, gbk, or the encoding that matches the Vivado Tcl console.
A command times out
The server terminates the Vivado process tree after a timeout to avoid a desynchronized session. Start a new session and use a larger timeout for long synthesis or implementation runs.
More Windows guidance is available in WINDOWS_INSTALL.md.
Security
run_tcl can execute arbitrary Tcl with the current user's permissions, including file operations and external process launches. Expose this server only to trusted MCP clients and review high-impact commands and paths.
License
This project is available under the MIT License.
Acknowledgments
- Original project created by Corey Hahn.
- Built on the Model Context Protocol.
- Integrates with AMD/Xilinx Vivado.
Metadata
Release files for vivado-mcp-native 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| vivado_mcp_native-0.2.1.tar.gz | 35.4 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| vivado_mcp_native-0.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 69.7 kB
Release files / vivado_mcp_native-0.2.1.tar.gz
| Download URL | vivado_mcp_native-0.2.1.tar.gz |
|---|---|
| Size | 35.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7bece8cee5e1fcf4a9676451aeeef263e8afd90603467e9bd22fe79edd8790bc
|
|
BLAKE2b-256 checksum How to use checksums |
8ea6d5828e49fb9d11c0f4d9fbf2fd15ed9d14c0f4e020e9b87b2348a3acee3e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.
Transparency logRelease files / vivado_mcp_native-0.2.1-py3-none-any.whl
| Download URL | vivado_mcp_native-0.2.1-py3-none-any.whl |
|---|---|
| Size | 34.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
20469d6f920f07a2075a420bb04d72bdebf9653137caa7445bfdb7af7bb0b8dd
|
|
BLAKE2b-256 checksum How to use checksums |
223c218836a69b768e7b162993cf3cd829260b7d45cf28d1a8b3c20a65589303
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.
Transparency logSecurity for vivado-mcp-native 0.2.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for vivado_mcp_native-0.2.1.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.