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가 AI 칩을 감싼 모양 별 |
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 glob 또는 디렉터리 이름) — 생성되거나 휘발성이 있는 파일용이며, 추가/제거하면 여전히 무효화됨 | 미설정(모든 것 지문 인식) |
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_mcpSkill
이 저장소에는 에이전트 스킬인 skills/vunit-mcp/SKILL.md이 포함되어 있습니다. 이 스킬은 LLM에게 도구를 언제, 어떻게 사용할지 알려줍니다: 어느 요청에 어느 도구가 답하는지, 워크플로 레시피("테스트 X가 왜 실패했나?" → vunit_get_test_log), lib.entity[.proc] 테스트 이름 형식, lib.entity[.proc] 설정 등을 다룹니다. 서버 옆에 설치하면 에이전트가 자동으로 사용합니다.
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이 제대로 있는지, 시뮬레이터 가용성 — 가장 먼저 호출 |
| 아니요 |
|
| 아니요 |
|
| 예 | 모든 소스 컴파일( |
| 예 | 패턴, 스레드, clean 등의 테스트 실행; JUnit XML을 기록하고, 통과/실패 요약과 실패 테스트를 반환 |
| 아니요 | 마지막 실행의 JUnit XML을 재실행 없이 다시 읽음; 로그에서 도출한 테스트별 실패 검사 횟수 |
| 아니요 | 테스트별 |
| 아니요 | 하나의 테스트를 구현하는 데 필요한 소스 파일들의 순서 있는 목록(라이브러리별, 컴파일 순서, VUnit 내장은 요약); |
| 아니요 |
|
내보내기 캐시
vunit_export_json와 vunit_test_dependencies는 호출할 때마다
run.py --export-json을 다시 실행하지 않습니다. 내보낸 모델은 해당 입력의 지문과 함께
<project>/.vunit-mcp-cache/export.json에 기록되며, 지문이 일치하는 동안에는 해당 파일을 서비스합니다.
캐시는 다음 경우에 무효화됩니다:
등록된 소스 파일 중 하나라도 mtime 또는 크기가 변하거나 파일이 사라진 경우;
run.py자체가 변경된 경우(파일을 추가/제거/이동하는 것을 포함);VUNIT_MCP_PYTHON,VUNIT_MCP_SIMULATOR, 또는VUNIT_MCP_EXTRA_ARGS가 변경된 경우.
VUNIT_MCP_FINGERPRINT_EXCLUDE와 일치하는 파일들(파일 이름이나 프로젝트 상대 경로에 대한 쉼표로 구분된
fnmatch globs, 또는 디렉터리 이름)은 첫 번째 규칙에서 제외됩니다. 해당 mtime/size를 추적하지 않으며, 이런
생성/휘발 파일의 재작성은 캐시를 churn하지 않도록 하기 위한 것입니다. 그래도 파일의 이름과 존재 여부는
추적되므로 어떤 파일을 추가하거나 제거하면 평소와 같이 무효화됩니다.
새 내보내기를 강제로 생성하려면 .vunit-mcp-cache/export.json을 삭제하세요. vunit_test_dependencies가
사용하는 인프로세스(프로세스 내부) 프로젝트 모델은 추가로 메모리에 캐시되며, 내보낸 내용을 키로 사용합니다.
내부 뼈대(scaffold)
일부 VUnit 질문은 프로젝트 자체 run.py CLI로는 대답할 수 없습니다
— 예: "이 테스트를 구현하려면 어떤 파일이 필요할까?". 이러한 경우 vunit-mcp는 캐시된
--export-json 모델로부터 프로세스 내 VUnit 프로젝트("the scaffold")를 구축합니다: 실제 VUnit
인스턴스에 프로젝트의 라이브러리와 소스 파일이 등록된 것입니다. 이 인스턴스는 VUnit의 내부 API를 호출할 때만
사용됩니다(현재는 vunit_test_dependencies가 get_implementation_subset을 호출하고, 향후
추가 내부 질의도 여기에 기반하게 됩니다).
이 스캐폴드는 절대 CLI로 실행되지 않습니다: 내보내기 모델은 사용자의 run.py 특정 사항(사용자 정의
옵션? 테스트 속성, 요구사항 …)을 모두 포함하지 않으므로, 컴파일이나 실행을 필요로 하는 것은 반드시
프로젝트 자체 run.py를 통해야 합니다. 프로세스 내 인스턴스는 project_model.InternalProject에
있고 메모리에 캐시되며, 스크래치 디렉터리로 <project>/.vunit-mcp-cache를 사용합니다 (VUnit이
날려버릴 프로젝트의 vunit_out은 절대 사용하지 않습니다).
로그 크기 정책
도구 출력은 LLM 친화적으로 유지하기 위해 의도적으로 한계가 있습니다 — 원시 로그는 전체가 절대 던져지지 않습니다:
vunit_get_test_log는 기본적으로 마지막 100줄을 반환하고 이를 명시합니다(예: "3421줄 중 마지막 100줄을 보여줍니다"); 더 필요하면lines를 늘리세요. 명시적인 "full" 읽기도 ~24 KB(파일의 꼬리 부분)로 제한됩니다.vunit_compile은 성공 시 마지막 10줄을, 실패 시 오류 줄 문맥(error/fatal/failure 줄 + 문맥 2줄)을 반환합니다.그 밖의 원시 출력 폴백(fail한
run.py, 파싱 불가한 출력)은 꼬리 부분을 남기면서 4 000자까지 잘라냅니다. 끝부분에 오류와 결과 줄이 있기 때문입니다.vunit_run_tests/vunit_get_report는 원시 출력 대신 파싱된 JUnit 요약(개수 + 실패한 테스트 이름)을 반환합니다.vunit_export_json은 8 000자 미만일 때만 JSON을 인라인합니다; 그 이상은 개수 + 파일/테스트 이름 목록을 반환합니다.vunit_list_files/vunit_export_json은 프로젝트 파일만 나열합니다. VUnit의 내장(inner) 라이브러리 소스(설치된 패키지 파일)는 안정적이고 프로젝트의 일부가 아니므로 개수로만 요약됩니다.
개발
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