WEFT
WEFT — WEFT Elaborates FPGA Toolchains
LLMクライアントに、Intel Quartus Prime 25.1 FPGAフローへの安全で構造化されたインターフェースを提供するMCPサーバーです。数秒でlintとシミュレーションを行い、非同期でコンパイルし、メガバイト単位のログの代わりにJSONとして結果を読み取ります。
名前はGNUスタイルの再帰的頭字語です。weft(横糸)は、縦糸を横切って織り込まれ布地を作る糸であり、FPGAファブリックにロジックを配線することはまさにその仕事です。
ステータス
WEFTはマイルストーンごとに建設中です。今日完成しているものは次のとおりです:
ツール | 状態 |
| 動作中 — VerilogおよびSystemVerilog用のVerilator、VHDL用のGHDL |
| 動作中 — Verilator、Icarus、GHDL、波形キャプチャ付き |
Quartusプロジェクト | 動作中 — |
Quartusコンパイル | 動作中 — 永続ジョブとしての |
| 動作中 — リソース、クロックごとのタイミング、ランク付けされたメッセージ |
ソースインデックス | 動作中 — |
OCR付きドキュメントRAG | 未実装 |
ドキュメント生成 | 未実装 |
デバイスプログラミング | 未実装 |
両方のトランスポートが動作します:ローカルクライアント用のstdio、LAN上のクライアント用の静的ベアラートークンの背後にあるStreamable HTTP。
Related MCP server: fpgaZeroMCP
MCPに馴染みがない場合、これは何のためのものか
テストベンチが失敗し、モデルの助けが必要だとします。今日、あなたはファイルをチャットウィンドウにコピーし、自分でVerilatorを実行し、その後に%Warning-WIDTHEXPANDの画面いっぱいの出力を貼り付け、回答を読み、手で修正を適用し、また繰り返します。設計は3ファイルの深さなので、3つすべてを貼り付けるか、モデルが省略した2つを推測するかのどちらかです。そして、それは自信を持って推測します。得られる回答は、貼り付けたテキストに関するものであり、必ずしもディスク上にあるものとは限りません。
MCP(Model Context Protocol)は、その運搬を排除します。サーバーは、ツールのリストと各ツールが受け取る引数を宣伝します。LLMクライアント(Claude Desktop、Claude Code、またはプロトコルを話す他のもの)は、そのリストをモデルの前に置きます。あなたは散文を入力し続けます。モデルはツールを選び、引数を入力し、クライアントが呼び出しを送信します。WEFTは遠端のサーバーです。モデルを保持せず、推論を実行せず、実行時にネットワーク呼び出しを行いません。
モデルがlintを呼び出すと、WEFTはすべてのパスをワークスペースルートに対して解決し、それを逃れるものを拒否し、おおよそ次のように実行します:
podman run --rm --network=none -v <workspace>:/work -w /work weft-tools \
verilator --lint-only -Isrc src/updown_counter.svVerilatorはいつも通り出力します。WEFTはそれをレコード(ファイル、行、重大度、メッセージ)に変換し、コンテナは消えます。simulateはVerilator、Icarus、GHDLを囲む同じループで、合格/不合格、ログの末尾、波形へのパスを返します。
境界は配管よりも重要です:モデルは何を試みるかを選択し、WEFTは何を実行できるかを選択します。遠端にはシェルはありません。モデルはフラグを発明できず、あなたが開いていないパスに到達できず、リストにないものを実行できません。
ツールをラップするもう一つの理由はサイズです。Quartusコンパイルはメガバイトの.rptを残しますが、あなたがそこから欲しかったのは、リソース行、クロックドメインごとのFmax、そして重要だった2つの警告です。ここでのツール結果は数キロバイトのJSONです。生のログはディスクに残り、実際に必要なときに名前で取得されます。
これらは何も設計しません。RTLを書いたり、タイミングをクローズしたり、机の上のボードを知ったりはしません。あなたが実行したであろうコマンドを実行し、推論するのに十分小さいものを返します。
どのように構成されているか
Quartusはホスト上で実行されます — WEFTは既にインストールされているものを駆動し、それをインストールしたりコンテナ化したりすることはありません。WEFTが実行する他のすべては、1つのPodmanイメージweft-toolsにあります:HDL作業用のVerilator、Icarus Verilog、GHDL、Verible、ドキュメントを読むためのTesseractとPoppler。コンテナは--network=noneで実行され、ワークスペース以外は何も見えません。
MCPクライアントが提供するすべてのパスは、ホスト上でもコンテナ内でも、ファイルシステムに到達する前に、設定されたワークスペースルートに対して解決およびチェックされます。
実行時にネットワークに到達するものはなく、テレメトリを報告するものもありません。
完全な設計(すべてのツールの引数と戻り値の形状、マイルストーン、厄介な部分の背後にある理由)はPROJECT.mdにあります。
要件
Quartus Prime 25.1(Lite、Standard、Pro)がインストールされ、ライセンスされていること
Podman、ルートレス
Python 3.11以降
ハードウェアプログラミング用の
jtagd(そのマイルストーンが実装されたら)
クイックスタート
Arch Linux
sudo pacman -S --needed podman python git
git clone https://github.com/FPGArtktic/weft-mcp.git
cd weft-mcp
podman build -t weft-tools -f containers/Containerfile.weft-tools .
pip install --user .Ubuntu 24.04 LTS
sudo apt update
sudo apt install podman uidmap python3 python3-pip git
git clone https://github.com/FPGArtktic/weft-mcp.git
cd weft-mcp
podman build -t weft-tools -f containers/Containerfile.weft-tools .
pip install --user .uidmapはpodmanのRecommendsに過ぎないため、通常のapt installでは取り込まれますが、--no-install-recommendsでは取り込まれません。ルートレスPodmanにはそれが必要です。
Ubuntu 22.04にはPython 3.10が付属しており、これはWEFTが必要とするものより低いです。24.04に移行するか、例えばuvで新しいインタープリタをインストールしてください。
uv venv --python 3.12 && uv pip install .イメージのビルド
イメージは決して配布されません — あなたがビルドします。これにより、WEFT自身の配布はGPL-3.0-onlyコードに留まり、混合ライセンスの下でサードパーティのバイナリの集合体を出荷することを避けます。podman buildがネットワークアクセスを必要とする唯一のステップです。その後はすべてオフラインで実行されます。
GHDLはビルド中にソースからコンパイルされるため、初回は時間がかかることが予想されます。
設定
WEFTは1つのTOMLファイルを読み取ります。デフォルトは~/.config/weft/weft.tomlです:
[workspace]
# Nothing outside this directory can be read or written.
root = "/home/you/fpga"
[container]
image = "weft-tools"
[quartus]
edition = "lite" # omit when only one edition is configured
[quartus.lite]
root = "/home/you/intelFPGA_lite/25.1std/quartus"
[quartus.pro]
root = "/opt/intelFPGA_pro/25.1/quartus"
# FlexLM variables are passed through to every Pro invocation.
env = { LM_LICENSE_FILE = "1800@licence-server" }
[jobs]
timeout_s = 7200
[http]
host = "127.0.0.1"
port = 8080
token = "put-a-long-random-string-here"Quartusのパスは常にここから取得されます。WEFTはそれらを推測せず、PATHを検索しません。Quartusのないマシンは単にセクションを省略します — lintとsimulateには必要ありません。
不明なキーは無視されるのではなく拒否されるため、タイプミスは静かに何もしないのではなく、起動時に失敗します。
実行
ローカルクライアント、stdio経由:
weft --transport stdioClaude DesktopまたはClaude Codeの場合は、MCPサーバーとして登録します:
{
"mcpServers": {
"weft": {
"command": "weft",
"args": ["--transport", "stdio", "--config", "/home/you/.config/weft/weft.toml"]
}
}
}LAN上、Streamable HTTP経由:
weft --transport httpすべてのリクエストはAuthorization: Bearer <token>を運ぶ必要があります。それ以外は401を受け取ります。設定に実際のトークンを設定してください — HTTPトランスポートはトークンなしでは起動を拒否します。
そもそもなぜHTTPトランスポートがあるのか
ローカルクライアントには必要ありません。stdioはよりシンプルで、漏れるトークンもありません。HTTPが存在するのは、外部への経路がないネットワーク上で、自分でホストするモデルの背後でこれを実行するための引き継ぎポイントだからです。OpenAI互換エンドポイントの背後で提供されるそのようなモデルは、同じ/mcpエンドポイントと通信し、サーバー側では何も変わりません。WEFTは実行時にネットワーク呼び出しを行わないため、インストールされたサーバーはそれ以上何も必要としません。
そのデプロイメント(推論クラスター、サービングスタック、イメージとホイールをギャップを越えて運ぶこと)の構築は、このリポジトリの一部ではありません。PROJECT.mdの付録Aは、それに必要なものを記録し、意図的にそこで止まります。
デモプロジェクト
examples/counter/は、SystemVerilog、Verilog-2001、VHDLで同時に書かれた小さなMAX 10カウンタです。3つの言語がポイントです:オープンソースのシミュレータは1つ以上を読むものはないため、このプロジェクトは、ツールが実際に混合階層を処理するのか、それとも単に主張するだけなのかを公平にテストします。
貢献
パッチは歓迎します。WEFTはLinuxカーネルの習慣に従います:コミットごとに1つの論理的な変更、subsystem: summaryの件名、理由を説明する本文、マージではなくリベース、そしてすべてにSigned-off-by:行を付けます。CONTRIBUTING.mdを参照してください。
著者
WEFTはMateusz Okulanisによって書かれ、維持されています — fpgartktic.github.io、@FPGArtktic、FPGArtktic@outlook.com。バグ報告、パッチ、意見の相違はすべて歓迎します — 特に最後のものは、私よりもこのツールチェーンを酷使したことがあるならば。
ライセンス
著作権 (C) 2026 Mateusz Okulanis.
GPL-3.0-only。完全なテキストはCOPYINGにあります。
WEFTはQuartusとコンテナ化されたツールを別々のプログラムとして呼び出し、それらのいずれも配布しません。
商標
Intel、Altera、Quartusはそれぞれの所有者の商標です。このプロジェクトはIntelまたはAlteraと提携しておらず、承認もスポンサーも受けていません。IntelまたはAlteraのコード、ファイル、ドキュメントを含まず、それらのソフトウェアをインストールも再配布もしません。
This server cannot be installed
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
- AlicenseCqualityDmaintenanceProvides programmatic access to Arcas OnlineEDA platform for electronic design automation, enabling formal verification, equivalence checking, power analysis, security verification, and FPGA design through natural language and automated workflows.5MIT
- AlicenseAqualityCmaintenanceProvides AI assistants with a complete FPGA toolchain for HDL linting, simulation, synthesis, and place-and-route across various hardware targets. It features a GitHub-backed IP core registry that enables users to search for and import MIT-licensed cores directly through their chat interface.151MIT
- AlicenseAqualityCmaintenanceWraps Quartus II 9.1 command-line tools into MCP tools, enabling AI agents to create projects, assign pins, generate simulation waveforms, run simulations, compile, read reports, and program devices.164MIT
- 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
Deterministic validation for AI-generated artifacts: JSON Schema, OpenAPI response, SQL syntax.
Proves AI-generated Python does what you asked: lint, types, security, sandbox run, exact fixes.
Compiles structured specs into SCORM 1.2/2004 e-learning packages. 30 tools, quality gate, no LLM.
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/FPGArtktic/weft-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server