vunit-mcp
vunit-mcp
Servidor MCP (stdio) que permite a un LLM/agente manejar un proyecto VUnit (pruebas unitarias HDL) de principio a fin: listar pruebas, compilar, ejecutar e inspeccionar informes y registros por prueba.
VUnit no tiene una CLI independiente y VUnit.main() llama a sys.exit(), por lo que el servidor nunca ejecuta vunit en el proceso: lo lanza al run.py del propio proyecto, exactamente como lo haría un humano. Una excepción deliberada: vunit_test_dependencies construye un modelo de proyecto en el proceso para responder "¿qué archivos necesito para implementar esta prueba?". vunit-hdl es una dependencia dura de este paquete, por lo que la importación siempre está disponible; aun así, se importa de forma perezosa, solo cuando se llama a esa herramienta.
Logo
Logotipos candidatos, todos basados en la insignia oficial de VUnit (azul #0c479d, anillo blanco, V gruesa). Las fuentes SVG están en logos/; los PNG son vistas previas de 400×400.
sello — sello de goma MCP inclinado | chip — la V sostiene un chip de IA |
robot — un robot amigo en la esquina | logotipo — V con texto MCP debajo |
:--: | :--: |
Related MCP server: Lupa MCP Server
Configuración
uv venv .venv
uv pip install -e . # installs vunit-mcp + mcp + pydantic + vunit-hdl
# compile/run also need a simulator, in the env that runs run.py
# (default: this same venv):
uv pip install ghdlConfiguración (variables de entorno)
Variable | Significado | Predeterminado |
| directorio que contiene | — |
| ruta del script de ejecución relativa al directorio del proyecto |
|
| intérprete que ejecuta | el propio del servidor |
| se pasa como | detección automática de VUnit |
| ruta de salida predeterminada |
|
| máximo de segundos por ejecución/compilación |
|
| argumentos adicionales de | sin establecer |
| patrones separados por comas (globos fnmatch sobre el nombre del archivo o la ruta relativa al proyecto, o un nombre de directorio) de archivos registrados cuyos cambios de contenido no deben invalidar la caché de exportación — para archivos generados/volátiles; agregarlos o eliminarlos aún lo hace | sin establecer (huella de todo) |
Configuración del cliente MCP (Claude Code)
{
"mcpServers": {
"vunit": {
"command": "/home/sebbe/git/vunit-mcp/.venv/bin/vunit-mcp",
"env": {
"VUNIT_MCP_PROJECT_DIR": "/path/to/your/vunit/project"
}
}
}
}O con MCP Inspector para pruebas manuales:
VUNIT_MCP_PROJECT_DIR=/path/to/project npx @modelcontextprotocol/inspector \
/home/sebbe/git/vunit-mcp/.venv/bin/python -m vunit_mcpHabilidad
Este repositorio incluye una habilidad de agente, skills/vunit-mcp/SKILL.md, que le dice al LLM cuándo y cómo usar las herramientas: qué herramienta responde a cada solicitud, recetas de flujo de trabajo ("¿por qué falló la prueba X?" → vunit_get_test_log), el formato de nombre de prueba lib.entity[.proc] y la configuración VUNIT_MCP_*. Instálala junto al servidor para que el agente la recoja automáticamente.
Claude Code
El enlace simbólico mantiene el checkout del repositorio como única fuente de verdad (copia con cp -r si prefieres una instalación estática):
# personal — available in every project
ln -s /path/to/vunit-mcp/skills/vunit-mcp ~/.claude/skills/vunit-mcp
# or project-local — available only in that project
mkdir -p <your-project>/.claude/skills
ln -s /path/to/vunit-mcp/skills/vunit-mcp <your-project>/.claude/skills/vunit-mcpMaki
Maki carga las habilidades desde el mismo directorio ~/.claude/skills/:
ln -s /path/to/vunit-mcp/skills/vunit-mcp ~/.claude/skills/vunit-mcpHerramientas
Herramienta | ¿Necesita simulador? | Descripción |
| no | config, versión de vunit, disponibilidad del simulador — llamar primero |
| no | todas las pruebas ( |
| no | archivos fuente en orden de compilación mediante |
| sí | compilar todas las fuentes ( |
| sí | ejecutar pruebas (patrones, hilos, limpiar, …); escribe JUnit XML; devuelve resumen de aprobado/fallido + pruebas fallidas |
| no | releer el JUnit XML de la última ejecución, sin re-ejecutar; recuentos de comprobaciones fallidas por prueba derivados de los registros |
| no |
|
| no | lista ordenada de archivos fuente necesarios para implementar una prueba (agrupados por biblioteca, orden de compilación, resumen de built-ins de VUnit); almacena en caché un modelo de proyecto en |
| no | archivos del proyecto, pruebas y atributos mediante |
Caché de exportación
vunit_export_json y vunit_test_dependencies no re-ejecutan run.py --export-json en cada llamada: el modelo exportado se escribe en <project>/.vunit-mcp-cache/export.json junto con una huella de sus entradas, y se sirve desde ese archivo mientras la huella coincida. La caché se invalida cuando:
cambia el mtime o el tamaño de cualquier archivo fuente registrado, o el archivo desaparece;
run.pyen sí cambia (cubre agregar/eliminar/reubicar archivos);cambian
VUNIT_MCP_PYTHON,VUNIT_MCP_SIMULATORoVUNIT_MCP_EXTRA_ARGS.
Los archivos que coinciden con VUNIT_MCP_FINGERPRINT_EXCLUDE (globos fnmatch separados por comas sobre el nombre del archivo o la ruta relativa al proyecto, o un nombre de directorio) están exentos de la primera regla: su mtime/tamaño no se rastrean, para archivos generados o volátiles cuyas reescrituras agitarían la caché. Su nombre y existencia aún se rastrean, por lo que agregar o eliminar uno invalida como de costumbre.
Para forzar una exportación nueva, elimina .vunit-mcp-cache/export.json. El modelo de proyecto en el proceso utilizado por vunit_test_dependencies se almacena en caché adicionalmente, en memoria, con clave por contenido de exportación.
Andamiaje interno
Algunas preguntas de VUnit no se pueden responder a través de la CLI del propio run.py del proyecto — por ejemplo, "¿qué archivos necesito para implementar esta prueba?". Para esas, vunit-mcp construye un proyecto VUnit en el proceso ("el andamiaje") a partir del modelo --export-json en caché: una instancia real de VUnit con las bibliotecas y archivos fuente del proyecto registrados, utilizada solo para llamar a la API interna de VUnit (hoy get_implementation_subset a través de vunit_test_dependencies; más consultas internas se basarán en ella).
El andamiaje nunca se ejecuta a través de la CLI: el modelo de exportación no contiene todos los detalles específicos del run.py del usuario (opciones personalizadas, atributos de prueba, requisitos, …), por lo que cualquier cosa que compile o ejecute debe pasar por el run.py del propio proyecto. La instancia en el proceso vive en project_model.InternalProject, se almacena en caché en memoria por contenido de exportación y usa <project>/.vunit-mcp-cache como su directorio de trabajo (nunca el vunit_out del proyecto, que VUnit borraría).
Política de tamaño de registros
La salida de las herramientas está deliberadamente limitada para que sea amigable para el LLM — los registros crudos nunca se vuelcan completos:
vunit_get_test_logdevuelve las últimas 100 líneas por defecto y lo dice (por ejemplo, "mostrando las últimas 100 de 3421 líneas"); aumentalinespara más. Incluso una lectura explícita "completa" está limitada a ~24 KB (la cola del archivo).vunit_compiledevuelve una cola de 10 líneas en éxito y un extracto de líneas de error (líneas de error/fatal/fallo + 2 líneas de contexto) en fallo.Todos los demás respaldos de salida cruda (
run.pyfallido, salida no analizable) se truncan a 4 000 caracteres, manteniendo el final donde viven los errores y las líneas de resultado.vunit_run_tests/vunit_get_reportdevuelven el resumen JUnit analizado (recuentos + nombres de pruebas fallidas) en lugar de la salida cruda.vunit_export_jsonincluye el JSON solo por debajo de 8 000 caracteres; por encima devuelve recuentos + listas de nombres de archivos/pruebas.vunit_list_files/vunit_export_jsonlistan solo los archivos del proyecto; las fuentes de biblioteca integradas de VUnit (archivos de paquete instalados) se resumen como un recuento, ya que son estables y no forman parte del proyecto.
Desarrollo
uv pip install -e ".[dev]"
uv run pytest tests/ # pure parsers — no simulator required
uv run ruff check src/ tests/
uv run mypy src/vunit_mcp/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 Servers
- FlicenseAqualityDmaintenanceEnables AI assistants to perform Electronic Design Automation (EDA) tasks including Verilog synthesis, simulation, ASIC design flows, and waveform analysis through a unified interface.6
- AlicenseAqualityBmaintenanceEnables AI assistants to run, list, and analyze Lupa test suites, returning structured JSON results for debugging.413Apache 2.0

squish-mcpofficial
FlicenseAqualityFmaintenanceEnables AI agents to run and create Squish test scripts and test suites and analyze the results.1913- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to drive Xilinx Vivado, Intel Quartus, and Anlogic TangDynasty for FPGA development, including project creation, synthesis, implementation, timing closure, and hardware programming through natural language.MIT
Related MCP Connectors
Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.
Project management MCP for AI agents with safe task reads and writes.
Cross-agent artifact workspace with provenance across Claude Code, Codex, Cursor, LangGraph.
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/ru551n/vunit-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server