Jt Mcp

io.github.qso-graph由 GitHub 账号 qso-graph 发布v0.2.0更新于 Nov 3, 2026

WSJT-X over UDP for AI apps: status, decodes, who is calling CQ, stations heard, WSPR. Read-only.

已验证STDIO仅桌面沟通与协作数据与分析

概览

AI 生成的概览

只读的 MCP 服务器,通过 UDP 监听 WSJT-X,让助手报告实时电台状态、CQ 呼叫、解码、已听到的电台和 WSPR 报告。

可以做什么
  • 报告每个 WSJT-X 实例的调谐频率、模式、DX 呼号与网格,以及发射是否启用
  • 列出谁在呼叫 CQ 及 CQ 类型,每台电台取最新一条
  • 读取近期解码并拆分为各部分,可按呼号、仅 CQ、SNR 或频段筛选
  • 汇总启动以来听到的电台:次数、最近 SNR、网格、模式与频段
  • 显示 WSPR 报告,含呼号、网格、功率、SNR 与漂移
  • 检查监听器本身:监听地址、允许的发送方、丢弃的数据报与各实例心跳
适用场景
适合运行 WSJT-X、JTDX 或兼容软件的火腿,希望用自然语言询问助手自己的电台正在听到什么、谁在呼叫 CQ,或为什么没有数据到达。它用于监控与问答,而不是操作电台。
运行要求
以 Python 包形式通过 uvx 在本机运行,无需安装。需在 WSJT-X 中把 UDP 服务器指向本服务器的地址和端口,默认 127.0.0.1:2237;若 2237 已被其他日志软件占用,需改用其他端口。WSJT-X 在另一台电脑上时,需设置绑定地址和允许的 IP 地址列表。无需账号或 API 密钥。
安装前请注意
设计上只读:从不向 WSJT-X 发送消息,因此无法应答呼叫、触发发射或更改设置。允许列表只能挡住其他机器;同一网络内 UDP 发送方地址可被伪造,伪造的数据报可能误导对 WSJT-X 状态的判断,但无法引发任何操作。一个 UDP 端口只能被一个程序监听,可能与现有日志软件冲突。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Jt Mcp,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

jt-mcp

[PyPI]

Ask an AI app what WSJT-X is hearing. WSJT-X sends what it is doing and every decode to a UDP Server address; jt-mcp listens there and answers: who is calling CQ, and what kind of CQ (DX, POTA, a contest, a region), who has been heard and how well, what WSJT-X is tuned to, recent decodes and WSPR spots.

Read-only, permanently. jt-mcp never sends WSJT-X a message, so it cannot answer a call, key your transmitter or change a setting. No write, no PTT, no transmit control — a permanent constraint, not a first-version limit. The tests assert it against the source.

WSJT-X first, and WSJT-X defines the protocol. The UDP message definitions come from the WSJT-X project — Network/NetworkMessage.hpp, at the schema WSJT-X states — because the project that owns a definition is its authority. The code is qso-graph-lib's, the same that qso-graph-sim plays WSJT-X's messages with. JTDX, WSJT-Z and MSHV are supported where they work with those definitions, and where one does not, its difference is not implemented here. JS8Call, whose API is its own, follows WSJT-X.

This server was js8call-mcp until 2026-10-29. Part of the qso-graph project.

Install

bash
uvx jt-mcp            # run it; nothing to install

Set up WSJT-X

In WSJT-X: File, Settings, Reporting, UDP Server: 127.0.0.1, port 2237 (WSJT-X's defaults). That is all jt-mcp needs when WSJT-X runs on the same PC.

Only one program can listen on a UDP port. If GridTracker, JTAlert or another logger already listens on 2237, give jt-mcp a different port (--udp-port) and point WSJT-X at that one.

Tools

ToolAnswers
jt_cqWho is calling CQ, and what kind: plain, DX, activity (POTA, SOTA, WWFF, IOTA), contest (TEST, FD, RU, WW), region (NA, EU, ...), or a frequency (CQ 290). The latest per station
jt_statusWhat each WSJT-X is doing: dial frequency and band, mode, DX call and grid, Tx enabled or transmitting, your call and grid
jt_decodesRecent decodes, each read into its parts (who is calling whom, grid, report, sign-off); filter by callsign, CQ only, SNR, band
jt_heardStations heard: how often, last SNR, last grid, mode and band
jt_wsprWSPR spots WSJT-X decoded: call, grid, power, SNR, drift
jt_diagnosticsThe listener: where it listens, who may send, what arrived, what was dropped and from where, each WSJT-X's version
get_version_infoService version and status

Times are UTC. Several WSJT-X instances (two radios, two bands) are kept apart by the Id each sends, such as WSJT-X - FT-991A.

Questions it will answer

"Who's calling CQ POTA on 20 m right now?"

"Any DX calling CQ in the last ten minutes, strongest first?"

"Has W9XYZ been heard, and how strong?"

"What is WSJT-X tuned to, and is Tx enabled?"

"Why isn't anything showing up?" — jt_diagnostics

Configure your MCP client

jt-mcp works with any MCP-compatible client. Add the server and restart the client.

Claude Desktop

Add to claude_desktop_config.json (~/Library/Application Support/Claude/ on macOS, %APPDATA%\Claude\ on Windows):

json
{  "mcpServers": {    "jt": {      "command": "uvx",      "args": ["jt-mcp"]    }  }}
Claude Code
bash
claude mcp add jt -- uvx jt-mcp
ChatGPT Desktop

Configure via Settings > Apps & Connectors, or in your agent definition, with the same command and args as above.

WSJT-X on another PC

By default jt-mcp listens on 127.0.0.1, this PC alone. For WSJT-X on another PC, give one address of this PC with --bind, and name each PC that may send with --allow:

json
"args": ["jt-mcp", "--bind", "192.168.1.50", "--allow", "192.168.1.40"]

and set WSJT-X's UDP Server to 192.168.1.50. Listening on every interface at once (0.0.0.0) is refused, --allow is required with a network address, and names are not accepted, only IP addresses. A datagram from anyone else is dropped unread and counted, and jt_diagnostics shows the count and the addresses.

What the allow list does not do. It keeps other machines out. It is not proof of who sent: a UDP sender's address can be forged by anything on the same network. What contains that is that jt-mcp only reads, so a forged datagram can mislead about what WSJT-X is doing and cannot make anything happen.

Options

jt-mcp [--bind ADDR] [--allow ADDR ...] [--udp-port N]       [--transport stdio|streamable-http] [--port N] [--version] [--help]
OptionDefault
--bind ADDR127.0.0.1where to listen for WSJT-X
--allow ADDRthis PCa PC that may send; repeatable; required with a network --bind
--udp-port N2237WSJT-X's UDP Server port
--transportstdiostreamable-http binds 127.0.0.1 only
--port N8031the streamable-http port

Licence

GPL-3.0-or-later. See LICENSE.

来源:README.md,提交 c9d0be6

工具

7

get_version_info

Get Version Info

Get this server's version, what it does, and where its work is tracked.

无需输入参数。

jt_status

Jt Status

What each running WSJT-X is doing now: dial frequency and band, mode, the station being worked (DX call and grid), whether Tx is enabled or transmitting, and your own call and grid.

输入参数instance

jt_cq

Jt Cq

Who is calling CQ, and what kind of CQ: plain, DX, an activity (POTA, SOTA, WWFF, IOTA), a contest (TEST, FD, RU, WW), a region (NA, EU, ...), or a frequency (CQ 290). The latest CQ per station, newest first.

输入参数bandcq_typeinstancemodifiersince_minutes

jt_decodes

Jt Decodes

Recent decodes, newest first, each read into its parts: CQ (with its type), or who is calling whom, with the grid, report or sign-off it carries.

输入参数bandlimitcq_onlymin_snrcallsigninstancesince_minutes

jt_heard

Jt Heard

Stations heard since this server started: how often, last SNR, last grid sent, mode and band, first and last heard.

输入参数sortlimitcallsignsince_minutes

jt_wspr

Jt Wspr

WSPR spots WSJT-X has decoded, newest first: call, grid, power, SNR, drift.

输入参数bandlimitcallsignsince_minutes

jt_diagnostics

Jt Diagnostics

The listener itself: where it listens, who may send, what has arrived, what was dropped and from where, and each WSJT-X instance's version and last heartbeat.

无需输入参数。

版本历史

1
  1. v0.2.0最新Oct 29, 2026

评分

已满足适用检查项的 90%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分
  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分