mcpField
W
wsjtx-mcp

wsjtx-mcp

ローカル
github.com/sbrunner-atxゲーム・エンタメ16 週間前に更新

wsjtx-mcp について

wsjtx-mcpは、UDPメッセージプロトコル経由でWSJT-Xの微弱信号通信を操作するMCPサーバーです。アマチュア無線の運用者向けに、状態やデコードを継続監視し、コールサインで送信操作を制限します。

主な機能

  1. 01状態、デコード、完了したQSOの取得
  2. 02CQ/QRZデコードへの応答
  3. 03フリーテキスト設定と送信制御
  4. 04モード、受信設定、局位置の構成
  5. 05バンドアクティビティと構成の管理

活用シーン

  1. 01WSJT-Xの状態とデコードの確認
  2. 02受信したCQへの応答
  3. 03記録済みQSOをログツールへ渡すための取得

MCP 対応

MCPクライアントにWSJT-X操作ツールを提供し、UDPブロードキャストを監視して制御メッセージを送信します。コールサイン未設定時は受信専用となり、送信開始操作を拒否します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"sbrunner-atx-wsjtx": {
"command": "uvx",
"args": [
"wsjtx-mcp"
],
"env": {
"WSJTX_CALLSIGN": "<WSJTX_CALLSIGN>",
"WSJTX_HOST": "<WSJTX_HOST>",
"WSJTX_PORT": "<WSJTX_PORT>",
"WSJTX_MULTICAST": "<WSJTX_MULTICAST>",
"WSJTX_INSTANCE": "<WSJTX_INSTANCE>"
}
}
}
}
起動コマンドuvx wsjtx-mcp
設定が必要な環境変数
WSJTX_CALLSIGNOperator callsign — the single transmit gate. Blank = receive-only (refuses all transmit-initiating messages).
WSJTX_HOSTAddress to bind/receive WSJT-X UDP broadcasts on. For a remote WSJT-X use 127.0.0.1 with the mcp-host-bridge 'wsjtx' service and set the port to 2238.
WSJTX_PORTWSJT-X Settings → Reporting → UDP Server port. Default 2237. Enable 'Accept UDP requests' for control.
WSJTX_MULTICASTOptional multicast group to join so multiple UDP consumers can coexist. Blank = unicast.
WSJTX_INSTANCEOptional WSJT-X instance Id to target when several broadcast here.

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypiwsjtx-mcp0.1.3

ツール

14

掲載時のツール一覧 · 2 週間前に更新

このツールにパラメーターはありません。

詳細

wsjtx-mcp

Claude Desktop や MCP Inspector などの MCP クライアントから WSJT-X (FT8/FT4/JT65/MSK144/Q65/WSPR…)を操作する MCP サーバーです。

アマチュア無線の「操作 → ログ」トリオにおける弱信号通信の役割を担います。

  • fldigi-mcp — fldigi(XML-RPC)を介して幅広いデジタルモードを操作します。
  • n3fjp-mcp — N3FJP(TCP API)に交信記録を記録します。
  • wsjtx-mcp (このプロジェクト) — WSJT-X(UDP メッセージプロトコル)を介して、FT8/FT4 の弱信号通信を操作します。

⚠️ 実験的(v0.1)です。 送信はコールサインによって制限され、オペレーターが操作の主導権を保ちます。送信時の安全性のセクションをお読みください。

異なる点

WSJT-X はリクエスト/レスポンス API を提供していません。UDP 経由で状態(Status、Decode、QSOLogged、Heartbeat、…)をブロードキャストし、少数の受信制御メッセージに応答します。そのため、このサーバーはバックグラウンド UDP リスナーを実行し、データグラムを継続的に解析して、最新の状態、デコードのバッファ、完了した交信を保持します。これらを読み取り、制御メッセージを送って WSJT-X を操作します。

事前に知っておくべき点は次のとおりです。

  • UDP 経由でダイヤル周波数を制御することはできません。 Status からダイヤル周波数を読み取り、configure でモード/サブモード/Rx DF/T-R 周期を設定できますが、QSY はこのサーバーではなく、無線機制御(Hamlib/CAT または UI)の役割です。
  • 送信の開始と停止はできますが、「Enable Tx」は切り替えられません。 送信は CQ への応答(reply)、または send=true を指定した free_text で開始し、transmit halt で停止します。「Enable Tx」「Auto Seq」「Call 1st」「Hold Tx Freq」のチェックボックスを操作する UDP コマンドはありません。これらは UI の設定のままです。
  • reply でハンズフリーの交信ができるのは、WSJT-X の「Auto Seq」がオンの場合だけです。 reply は CQ のダブルクリックに相当します。Auto Seq が有効(FT8/FT4 では通常デフォルト)なら、WSJT-X は追加の操作なしに交信全体を進め、QSOLogged まで処理します。Auto Seq がオフの場合、reply で開始するのは最初の送信だけです。
  • サーチ・アンド・パウンスに最適で、RUN には向いていません。 API は CQ への応答(CQ/QRZ デコードのみ)を目的としているため、S&P は完全に自動化できます。一方、繰り返しCQ を呼び出す(RUN)サイクルを制御する適切な方法はありません。そのためには WSJT-X 独自の「Enable Tx」を使うか、各周期で free_text の CQ を再送信する必要があります。

要件

  • WSJT-X 2.1~3.x — UDP メッセージプロトコルは schema 3 / Qt_5_4 で、これらのリリース間で安定しています(WSJT-X 3.0.2 で実機検証済み)。
  • WSJT-X で、Settings → Reporting → UDP Server を設定します。
    • UDP Server = このサーバーを実行するホスト(デフォルト 127.0.0.1)、ポート 2237。
    • 制御を許可するには、Accept UDP requests = ON にします(デフォルトでは OFF です)。 デコード/状態の監視には不要ですが、コマンドの送信には必要です。

インストール(Claude Desktop)

最新リリースから wsjtx-mcp.mcpbをダウンロードしてダブルクリックするか、Claude Desktop の Settings → Extensions にドラッグします。設定フォームにコールサイン、ホスト、ポートを入力してください。docs/INSTALL.mdを参照してください。

設定

変数デフォルト用途
WSJTX_HOST127.0.0.1UDP アドレス。バインドしてリッスンします。
WSJTX_PORT2237WSJT-X UDP Server のポートです。
WSJTX_CALLSIGN(empty)オペレーターのコールサイン — 唯一の送信許可条件です。空欄の場合は受信専用です。
WSJTX_MULTICAST(off)他の UDP コンシューマーと共存するため、任意で参加するマルチキャストグループを指定します。
WSJTX_INSTANCE(auto)複数の WSJT-X インスタンスがブロードキャストしている場合に、対象とする WSJT-X Id を指定します。

ホスト/ポートはこのサーバーがリッスンする場所です。制御応答は、各データグラムの送信元アドレスに返されます。

ツール

ツール種類機能
status監視最新の Status スナップショットと、リスナー/インスタンスの健全性を確認します。
diagnostics監視ホスト/ネットワーク、バインド状態、データグラム数、ゲートの状態を確認します。
decodes監視/操作read / drain(新着をポーリング)/ clear_local / replay。RX プレーンです。
log監視バッファーされた完了済み QSO(QSOLogged + LoggedADIF)を N3FJP に送信します。
reply送信バッファーされた CQ/QRZ のデコードに応答します(WSJT-X の「Auto Seq」がオンの場合、QSO を自動で順次進行させます)。
free_textsend の場合は 送信Tx5 のフリーテキストメッセージを設定します。send=true の場合、無線機をキーイングします。
transmit制御halt / halt_auto — 送信を停止します(UDP では Tx を有効化できません)。
configure制御モード/サブモード/Rx DF/T-R 周期/周波数許容差/DX コールサイン+グリッドを設定します。ダイヤル周波数は設定できません。
clear制御Band Activity / Rx Frequency ウィンドウをクリアします。
highlight制御Band Activity 内のコールサインに色を付けるか、色をクリアします。
location制御セッションの Maidenhead グリッドを上書きします。
switch_config制御名前を指定して WSJT-X の設定を切り替えます。
annotate制御DX コールに Fox/Hound の並べ替え順序の注釈を設定します(限定的な用途、DX ペディション向け)。
wsjtx_call代替手段名前で任意のメッセージタイプを作成して送信します(ゲートは引き続き適用されます)。

送信の安全性

コールサインが唯一の送信ゲートです。これは fldigi-mcp と同じです。WSJTX_CALLSIGN が空の場合、サーバーは受信専用となり、送信を開始するすべてのメッセージを拒否します。対象は reply、send=true を指定した free_text、および wsjtx_call 経由のキーイングメッセージです。transmit halt、clear、configure、highlight、location、replay、すべての読み取りは常に利用できます(電波を発射するものではありません。halt は送信を停止します)。

このゲートに加えて、次の安全策があります。

  • 送信ごとの承認は Claude Desktop のツール権限プロンプトで行われます。人間が関与する制御に活用してください。
  • WSJT-X 独自の Tx Watchdog と、status に表示される Tx Enabled / Transmitting フラグも、追加の安全シグナルです。
  • Part 97 に基づく自動/リモート制御で運用する際の責任はオペレーターにあります。局の識別と、介入可能な制御オペレーターを確保してください。

他の UDP ツールとの同時実行

通常、1 台のホストで UDP 2237 を所有できるプロセスは 1 つだけです。JTAlert、GridTracker、または N1MM がすでに使用している場合は、WSJT-X のセカンダリ UDP サーバーをこちらに向けるか、複数のリスナーが共存できるマルチキャストグループ(WSJTX_MULTICAST)を使用するか、このサーバーを別のホストで実行してください。別のマシン上の WSJT-X に接続するには、mcp-host-bridge ツール(mcp-host-bridge install wsjtx --to <rig-host>)をインストールし、WSJTX_PORT=2238 を設定します。サンドボックス化された MCP クライアントがアクセスできるのはループバックだけで、ブリッジが LAN への中継を担います。docs/REMOTE-HOST.md を参照してください。

開発

uv sync
uv run ruff check .
uv run pytest

プロトコルコーデックは標準ライブラリのみで実装され、バイトフィクスチャに対するユニットテストも行われているため、テストの実行に WSJT-X は不要です。smoke_test.py では、稼働中の WSJT-X に受信専用で接続できることを確認します。実地検証済みのメッセージリファレンスは docs/WSJTX-API.md にあります。

ライセンス

MIT © 2026 Stefan Brunner (AE5VG)

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。