Vivado MCP Server
The Vivado MCP Server enables LLM clients to control a persistent AMD/Xilinx Vivado TCL session natively on Windows via the Model Context Protocol (MCP), avoiding repeated startup costs and without creating distracting command prompt windows.
Start a session (
start_session): Launch a persistent Vivado TCL session (vivado.bat -mode tcl), optionally specifying a custom path tovivado.bat. Reuses an existing session if one is already running.Execute TCL commands (
run_tcl_command): Send arbitrary TCL commands to the live Vivado session and retrieve the output. Auto-starts a session if none is active. Supports an optional per-command timeout.Check session status (
session_status): Retrieve the current status and statistics of the running session (e.g., uptime, command counts).Stop the session (
stop_session): Gracefully terminate the Vivado process and free associated resources.
Allows controlling an AMD/Xilinx Vivado TCL session for FPGA design, including starting sessions, executing TCL commands, checking status, and stopping sessions.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Vivado MCP Serverrun the TCL command: synth_design -top top_module"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Vivado MCP Server (Windows-Native)
Vivado MCP Server is a Model Context Protocol (MCP) server that lets LLM clients control a persistent AMD/Xilinx Vivado TCL session on Windows.
It is designed to avoid the pexpect dependency and run reliably on native
Windows by using subprocess.Popen plus a background stdout reader thread.
Why use this
Persistent Vivado process to avoid repeated startup cost.
Windows-native process handling (no POSIX pseudo-terminal requirement).
Clean tool API for MCP clients.
No command prompt popup windows (
CREATE_NO_WINDOW).
Related MCP server: Vivado MCP Server
Requirements
Windows 10/11
Python 3.10+
Vivado installed locally
uv(recommended) orpip
Quick install
Option A: local development install (uv)
git clone <your-repo-url>
cd vivado-mcp-win
uv syncOption B: install from package index (when published)
pip install vivado-mcp-winVivado path configuration
The server resolves vivado.bat in this order:
start_sessiontool argumentvivado_pathEnvironment variable
VIVADO_BAT_PATHPATH lookup (
vivado.batorvivado)Fallback
C:\VIVADO\2025.2\Vivado\bin\vivado.bat
Recommended: set VIVADO_BAT_PATH explicitly.
PowerShell example:
$env:VIVADO_BAT_PATH = "C:\Xilinx\Vivado\2025.2\bin\vivado.bat"Run the MCP server
From source checkout:
uv run vivado-mcpFrom installed package:
vivado-mcpNote: this is a stdio MCP server, so it waits for MCP messages from a client. Running it directly in a terminal will appear idle.
MCP client configuration
Use the vivado-mcp command as a stdio server in your MCP client config.
Generic example:
{
"mcpServers": {
"vivado": {
"command": "vivado-mcp",
"args": [],
"env": {
"VIVADO_BAT_PATH": "C:\\VIVADO\\2025.2\\Vivado\\bin\\vivado.bat"
}
}
}
}If your client runs inside this repository, you can also use:
{
"mcpServers": {
"vivado": {
"command": "uv",
"args": ["run", "vivado-mcp"],
"env": {
"VIVADO_BAT_PATH": "C:\\VIVADO\\2025.2\\Vivado\\bin\\vivado.bat"
}
}
}
}Exposed MCP tools
start_session: starts or reuses a persistent Vivado session.run_tcl_command: executes TCL in the live session.session_status: returns session status and metrics.stop_session: stops the running session.
Development
Install dev dependencies:
uv sync --group devRun lint:
uv run ruff check .Run tests:
uv run pytestPublish checklist
Update project URLs in
pyproject.toml.Bump version.
Build package:
uv buildPublish (example with trusted publisher or token):
uv publishTroubleshooting
Error
Vivado executable not found: setVIVADO_BAT_PATHor passvivado_pathtostart_session.Session timeout on startup: increase startup timeout in code or ensure Vivado installation is healthy and licensed.
Import errors in editor for
mcp.*: runuv syncand ensure VS Code uses the project virtual environment.
Available Tools
4 toolsrun_tcl_commandA
Send an arbitrary TCL command to the persistent Vivado session and return its output. Auto-starts a session if none exists.
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | The TCL command to execute in Vivado. | |
| timeout | No | Optional per-command timeout in seconds. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses the auto-start behavior, which is a key trait. However, it does not mention potential side effects of arbitrary TCL commands, error handling, or session state management, leaving some behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary action followed by the auto-start note. Every word is purposeful, with no redundancy or unnecessary details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (2 parameters, no output schema), the description covers the main inputs and outcome. It lacks details on output format, but the statement 'return its output' is sufficient for a command execution tool with sibling tools managing sessions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters. The description adds little beyond stating 'arbitrary TCL command' and 'persistent Vivado session,' but does not enhance parameter meaning beyond the schema definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Send an arbitrary TCL command to the persistent Vivado session and return its output,' which specifies the verb (send, return) and resource (TCL command to Vivado session). It distinguishes from sibling tools (session_status, start_session, stop_session) by focusing on command execution.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by stating 'Auto-starts a session if none exists,' suggesting this tool can be used without manually starting a session. However, it does not explicitly mention when to use alternatives like session_status or start_session, leaving some implicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_statusA
Return status/statistics for the current Vivado session.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations; description simply says 'Return status/statistics' without detailing what data is returned or behavioral aspects like permissions or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with purpose, no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema; description lacks details on return format or content, but tool is simple with zero parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters, so schema coverage is complete. Baseline 4 applies as per rules.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'Return' and resource 'status/statistics for the current Vivado session', distinguishing it from sibling tools like run_tcl_command, start_session, stop_session.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use vs alternatives, but the purpose is implied and siblings suggest different use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_sessionA
Start a persistent Vivado TCL session (vivado.bat -mode tcl). Optionally override the vivado.bat path. Reuses an existing session if one is already running.
| Name | Required | Description | Default |
|---|---|---|---|
| vivado_path | No | Full path to vivado.bat, e.g. C:\VIVADO\2025.2\Vivado\bin\vivado.bat |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears full responsibility for behavioral disclosure. It reveals that sessions are persistent and that an existing session may be reused, which is critical. However, it does not detail side effects (e.g., what happens if the path differs from an existing session) or specify security/permissions, leaving some gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words. It front-loads the core action and then adds the optional parameter note. Every sentence contributes meaning, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional parameter, no output schema), the description covers the essential aspects: action, parameter, and reuse behavior. It does not describe return values, but in context, this is acceptable. A slightly more detailed note on session id or status upon success could improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% coverage for the single parameter vivado_path. The description adds value by stating it is optional and provides an example, clarifying its purpose beyond the schema description. It does not elaborate on defaults or behavior when omitted, but the added context is sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool starts a persistent Vivado TCL session with an explicit command example. It uses a specific verb ('Start') and resource ('Vivado TCL session'), and the sibling tools (run_tcl_command, session_status, stop_session) indicate it is the session initialization tool, distinguishing it effectively.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use the optional vivado_path parameter and mentions session reuse, providing context for typical use. However, it does not explicitly state when to avoid using this tool (e.g., if a session is already running from a different path) or compare to alternatives, which would improve guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_sessionB
Stop the running Vivado session and free resources.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must fully convey behavioral traits. It mentions 'free resources' but omits critical details: whether the stop is immediate or graceful, if it saves state, or if it errors on no active session. The description is too minimal to ensure safe invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that conveys the core action without any filler. It is optimally concise while remaining clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no params, no output schema, no annotations), the description is incomplete. It does not address error states, idempotency, or whether it should be called only when a session is active. More context is needed for reliable use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so description coverage is trivially 100%. No additional parameter meaning is needed, meeting the baseline of 4 for no-param tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Stop' and the target 'the running Vivado session', distinguishing it from sibling tools like 'start_session' and 'session_status'. It is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. It does not mention prerequisites (e.g., a session must be started first) or conditions under which stopping is appropriate. The description simply states the function without contextual usage advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
4 tool updates
v0.1.0- First observed
run_tcl_command - First observed
session_status - First observed
start_session - First observed
stop_session
TDQS
Each tool targets a distinct aspect: running commands, querying status, starting, and stopping the session. No ambiguity between them.
All tools use consistent snake_case verb_noun naming (run_tcl_command, session_status, start_session, stop_session), following the same pattern.
For a Vivado session manager, 4 tools is slightly thin but covers the essential lifecycle and command execution. Could be expanded with project or file operations.
The set covers session management and command execution fully. Missing an explicit health check or reset, but most workflows are supported.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for Pentest-Tools.com: run scans, manage findings and reports via your preffered LLM.
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
- QuallaaOAuthcom.quallaa
Talk to your public-facing AI from any MCP client — Claude, ChatGPT, Cursor, Cline, Windsurf.
Related MCP Servers
- FlicenseCqualityCmaintenanceAn AI-centric MCP server that enables automated Xilinx Vivado workflows, including project management, synthesis, implementation, and timing analysis. It allows AI agents to drive hardware design processes while integrating directly with the official Vivado GUI for visual context.154-
- AlicenseBqualityDmaintenanceA Model Context Protocol (MCP) server that enables AI assistants like Claude to directly interact with AMD/Xilinx Vivado FPGA development tools.4059MIT
- FlicenseBqualityBmaintenanceA Model Context Protocol server that lets AI clients operate AMD Vivado through safe, workflow-level tools while allowing the user to watch and interact with the Vivado GUI.21-
- -licenseNot gradedqualityNot gradedmaintenanceManages a persistent Fusion Compiler session via PTY, enabling Tcl command execution and common EDA queries through an MCP interface.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/Emanuel-Clearfield/Vivado_MCP_Windows'
If you have feedback or need assistance with the MCP directory API, please join our Discord server