vunit-mcp
vunit-mcp
MCP (stdio) サーバーで、LLM/エージェントが VUnit (HDL ユニットテスト) プロジェクトを最初から最後まで操作できるようにします: テストの一覧表示、コンパイル、実行、レポートやテストごとのログの検査。
VUnit にはスタンドアロンの CLI がなく、VUnit.main() は sys.exit() を呼び出すため、サーバーは vunit をプロセス内で 実行 することはありません。代わりに、人間が実行するのとまったく同じように、プロジェクト自身の run.py をシェルアウトします。意図的な例外が 1 つあります: 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
Setup
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 ghdlConfiguration (env vars)
変数 | 意味 | デフォルト |
|
| — |
| プロジェクトディレクトリからの相対パスでの実行スクリプトのパス |
|
|
| サーバー自身のもの |
|
| VUnit 自動検出 |
| デフォルトの |
|
| 実行/コンパイルごとの最大秒数 |
|
| 追加の | 未設定 |
| 登録済みファイルのうち、コンテンツの変更がエクスポートキャッシュを無効化してはならないファイルの、カンマ区切りのパターン (ファイル名またはプロジェクト相対パス、またはディレクトリ名に対する fnmatch グロブ) — 生成された/揮発性のファイル用; 追加または削除は依然として無効化する | 未設定 (すべてをフィンガープリント) |
MCP client config (Claude Code)
{
"mcpServers": {
"vunit": {
"command": "/home/sebbe/git/vunit-mcp/.venv/bin/vunit-mcp",
"env": {
"VUNIT_MCP_PROJECT_DIR": "/path/to/your/vunit/project"
}
}
}
}Or with MCP Inspector for manual testing:
VUNIT_MCP_PROJECT_DIR=/path/to/project npx @modelcontextprotocol/inspector \
/home/sebbe/git/vunit-mcp/.venv/bin/python -m vunit_mcpスキル
このリポジトリにはエージェントスキル 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 を書き出す; 合格/不合格のサマリーと失敗したテストを返す |
| いいえ | 最後の実行の JUnit XML を再読み取り、再実行はしない; ログから導出されたテストごとの失敗チェック数 |
| いいえ | テストごとの |
| いいえ | 1 つのテストを実装するために必要なソースファイルの順序付きリスト (ライブラリごとにグループ化、コンパイル順、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 グロブ) は、最初のルールから除外されます — それらの mtime/サイズは追跡されません。これは、書き換えによってキャッシュが混乱する生成ファイルや揮発性ファイルのためです。ただし、名前と存在は依然として追跡されるため、追加または削除すると通常どおり無効になります。
新しいエクスポートを強制するには、.vunit-mcp-cache/export.json を削除してください。vunit_test_dependencies が使用するプロセス内プロジェクトモデルは、エクスポートコンテンツをキーとして、メモリ内に追加でキャッシュされます。
内部スキャフォールド
一部の VUnit の質問は、プロジェクト自身の run.py CLI では答えられません — 例: 「このテストを実装するにはどのファイルが必要か?」。そのような場合、vunit-mcp はキャッシュされた --export-json モデルから プロセス内 VUnit プロジェクト (「スキャフォールド」) を構築します: プロジェクトのライブラリとソースファイルが登録された実際の 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 行 を返し、その旨を明示します (例: "showing last 100 of 3421 lines"); より多く取得するにはlinesを増やします。明示的な「完全」読み取りでも ~24 KB (ファイルの末尾) に制限されます。vunit_compileは成功時には 10 行の末尾を返し、失敗時には エラー行の抜粋 (エラー/致命的/失敗行 + コンテキスト 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 組み込みライブラリのソース (インストールされたパッケージファイル) は、安定しておりプロジェクトの一部ではないため、カウントとして要約されます。
Development
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