vunit-mcp
vunit-mcp
MCP-сервер (stdio), который позволяет LLM/агенту управлять VUnit-проектом (HDL-модульное тестирование) от начала до конца: перечислять тесты, компилировать, запускать и просматривать отчёты и журналы по каждому тесту.
У VUnit нет отдельного CLI, а VUnit.main() вызывает sys.exit(), поэтому сервер никогда не запускает vunit в собственном процессе — он обращается к run.py проекта, как это делал бы человек. Одно осознанное исключение: vunit_test_dependencies строит внутрипроцессную модель проекта, чтобы ответить на вопрос «какие файлы мне нужны для реализации этого теста?». vunit-hdl является жёсткой зависимостью этого пакета, поэтому импорт всегда доступен; он всё равно выполняется лениво, только при вызове этого инструмента.
Логотип
Кандидаты логотипов, все на основе официального значка VUnit (синий #0c479d, белое кольцо, рубленый V). SVG-исходники находятся в logos/; PNG — превью 400×400.
stamp — наклонный MCP-штамп | chip — буква V обнимает ИИ-чип |
robot — робот-друг в углу | wordmark — буква V с текстом MCP ниже |
:--: | :--: |
Related MCP server: Lupa MCP Server
Установка
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 ghdlКонфигурация (переменные окружения)
Переменная | Значение | По умолчанию |
| каталог, содержащий | — |
| путь к скрипту запуска относительно каталога проекта |
|
| интерпретатор, который выполняет | серверный |
| передаётся как | автоопределение VUnit |
| путь вывода |
|
| максимум секунд на запуск/компиляцию |
|
| дополнительные аргументы | не задано |
| разделённый запятыми список шаблонов (fnmatch-глобов по имени файла или пути относительно проекта, или имени каталога) зарегистрированных файлов, изменение содержимого которых не должно инвалидировать кэш экспорта — для генерируемых/изменчивых файлов; добавление или удаление таких файлов по-прежнему инвалидирует кэш | не задано (всё учитывается) |
Конфигурация 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"
}
}
}
}Или для ручного тестирования через MCP Inspector:
VUNIT_MCP_PROJECT_DIR=/path/to/project npx @modelcontextprotocol/inspector \
/home/sebbe/git/vunit-mcp/.venv/bin/python -m vunit_mcpНавык (Skill)
В этом репозитории есть навык агента — skills/vunit-mcp/SKILL.md, который объясняет LLM, когда и как использовать инструменты: какой инструмент отвечает на какой запрос, рецепты рабочих процессов («почему тест X упал?» → vunit_get_test_log), формат имени теста lib.entity[.proc] и конфигурацию VUNIT_MCP_*. Установите его рядом с сервером, чтобы агент подхватил его автоматически.
Claude Code
Симлинк сохраняет репозиторий как единственный источник истины (копирование через cp -r, если предпочитаете статическую установку):
# 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 загружает навыки из того же каталога ~/.claude/skills/:
ln -s /path/to/vunit-mcp/skills/vunit-mcp ~/.claude/skills/vunit-mcpИнструменты
Инструмент | Нужен симулятор | Описание |
| нет | конфигурация, версия vunit, доступность симулятора — вызывайте первым |
| нет | все тесты ( |
| нет | исходные файлы в порядке компиляции через |
| да | компиляция всех исходников ( |
| да | запуск тестов (паттерны, потоки, очистка, …); пишет JUnit XML; возвращает сводку pass/fail + упавшие тесты |
| нет | повторное чтение JUnit XML последнего запуска, без перезапуска; количество упавших проверок на тест, полученное из журналов |
| нет |
|
| нет | упорядоченный список исходных файлов, необходимых для реализации одного теста (сгруппирован по библиотекам, в порядке компиляции, встроенные модули VUnit сводно); кэширует модель проекта в |
| нет | файлы проекта, тесты и атрибуты через |
Кэш экспорта
vunit_export_json и vunit_test_dependencies не выполняют run.py --export-json при каждом вызове: экспортированная модель сохраняется в <project>/.vunit-mcp-cache/export.json вместе с отпечатком (fingerprint) её входных данных и используется из файла, пока отпечаток совпадает. Кэш инвалидируется, когда:
изменяется mtime или размер любого зарегистрированного исходного файла, или файл исчезает;
изменяется сам
run.py(покрывает добавление/удаление/перемещение файлов);изменяются
VUNIT_MCP_PYTHON,VUNIT_MCP_SIMULATORилиVUNIT_MCP_EXTRA_ARGS.
Файлы, соответствующие VUNIT_MCP_FINGERPRINT_EXCLUDE (разделённый запятыми список fnmatch-глобов по имени файла или пути относительно проекта, или имени каталога), освобождаются от первого правила — их mtime/размер не отслеживаются, для генерируемых или изменчивых файлов, чьи перезаписи приводили бы к частой инвалидации кэша. Но их имя и наличие по-прежнему отслеживаются, так что добавление или удаление такого файла инвалидирует кэш как обычно.
Чтобы принудительно получить свежий экспорт, удалите .vunit-mcp-cache/export.json. Внутрипроцессная модель проекта, используемая vunit_test_dependencies, дополнительно кэшируется в памяти по содержимому экспорта.
Внутренний каркас (scaffold)
На некоторые вопросы о VUnit нельзя ответить через собственный run.py проекта — например, «какие файлы мне нужны, чтобы реализовать этот тест?». Для таких случаев vunit-mcp строит внутрипроцессный VUnit-проект («каркас») на основе модели из --export-json: настоящий экземпляр VUnit с зарегистрированными библиотеками и исходными файлами проекта, используемый только для вызова внутреннего API VUnit (сегодня — get_implementation_subset через vunit_test_dependencies; в будущем — другие внутренние запросы).
Каркас никогда не запускается через CLI: экспортированная модель не содержит всех особенностей пользовательского run.py (пользовательские опции, атрибуты тестов, требования, …), поэтому всё, что компилируется или запускается, должно идти через собственный run.py проекта. Внутрипроцессный экземпляр живёт в project_model.InternalProject, кэшируется в памяти по содержимому экспорта и использует <project>/.vunit-mcp-cache как свою рабочую директорию (никогда — vunit_out проекта, который VUnit мог бы стереть).
Политика размера журналов
Вывод инструментов намеренно ограничен, чтобы оставаться дружелюбным к LLM — сырые журналы никогда не выгружаются целиком:
vunit_get_test_logвозвращает последние 100 строк по умолчанию и сообщает об этом (например, «показаны последние 100 из 3421 строк»); увеличьтеlinesдля большего объёма. Даже явное чтение «полностью» ограничено ~24 КБ (хвост файла).vunit_compileвозвращает хвост из 10 строк при успехе и выдержку со строками ошибок (строки error/fatal/failure + 2 строки контекста) при неудаче.Все прочие запасные варианты сырого вывода (упавший
run.py, неразбираемый вывод) обрезаются до 4 000 символов, сохраняя конец, где находятся ошибки и строки результатов.vunit_run_tests/vunit_get_reportвозвращают разобранную сводку JUnit (количество + имена упавших тестов), а не сырой вывод.vunit_export_jsonвстраивает JSON только если он меньше 8 000 символов; выше — возвращает количество и списки имён файлов/тестов.vunit_list_files/vunit_export_jsonперечисляют только файлы проекта; исходники встроенных библиотек VUnit (файлы установленного пакета) сводно представлены количеством, поскольку они стабильны и не являются частью проекта.
Разработка
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