netlogger-mcp について
netlogger-mcpは、アマチュア無線の運用者やリスナー向けに、MCP対応アシスタントからNetLoggerの情報を利用できるようにします。APIキーなしで現在と過去の交信を調べられ、キャッシュを使いサービスの呼び出し制限を守ります。
主な機能
- 01現在運用中のネットを検索
- 02ライブのチェックインと現在の交信先を表示
- 03過去のネットとチェックインを検索
- 04リクエスト用のコールサインを保存
- 05応答をキャッシュし呼び出し制限を順守
活用シーン
- 01現在運用中のネットを確認
- 02ライブ交信のチェックイン局を確認
- 03過去のネットのチェックインを振り返る
MCP 対応
NetLoggerの公開ネット情報とチェックイン情報をツールとしてMCPクライアントに提供し、ライブおよび過去の検索に対応します。APIキーは不要です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
6掲載時のツール一覧 · 今日に更新
このツールにパラメーターはありません。
詳細
netlogger-mcp
NetLogger 用の MCP サーバーです。現在オンエア中のネット、リアルタイムのチェックインリストと現在交信中の局、過去のネットとそのチェックイン情報を、MCP 対応の AI アシスタントから利用できます。
NetLogger の公開 XML Data Service(API 1.3)のデータを使用します。qso-graph プロジェクトの一部です。API キーは不要です。 コールサインは一度だけ尋ねられます(下記を参照)。
インストール
uvx netlogger-mcp # run it; nothing to install
ツール
| ツール | 説明 | 主なパラメーター |
|---|---|---|
netlogger_active_nets | 現在オンエア中のネット:周波数、バンド、モード、ネットコントロール局、ロガー、モニター数 | name_like |
netlogger_checkins | ライブ中のネットのチェックインリストと、現在交信中の局 | server_name, net_name |
netlogger_past_nets | 過去 N 日間に終了したネットと、過去のチェックイン情報に必要なネット ID | interval_days, name_like |
netlogger_past_checkins | 終了したネットのチェックインリスト | server_name, net_name, net_id |
netlogger_set_callsign | コールサインを保存します(初回使用時に一度だけ尋ねられます) | callsign |
get_version_info | サービスのバージョンと上流仕様のバージョン(稼働環境の識別情報) | — |
NetLogger とは?
NetLogger は、多くのアマチュア無線ネットで使われているログ記録プログラムです。ネットコントロール局またはロガーがチェックインリストを管理し、誰でもネットの進行状況をリアルタイムで確認できます。サーバーは公開 API を通じて、アクティブなネット、チェックインリスト、過去のネットを公開しています。
コールサイン
NetLogger は、ユーザーを識別できるよう、リクエストごとに問い合わせ元の局を受け取ります。
netlogger-mcp/<version> (KI7MT; +https://github.com/qso-graph/netlogger-mcp)
バージョンはインストール済みのものです。ここに記述するのではなく、パッケージから読み取ります。
初回使用時に、アシスタントがコールサインを尋ねて保存します。尋ねられるのは一度だけです。自分で設定するには、NETLOGGER_MCP_CALLSIGN=KI7MT を使用します。
コールサインは settings.json に保存されます。保存場所は、Linux では ~/.config/netlogger-mcp/、macOS では ~/Library/Application Support/netlogger-mcp/、Windows では %APPDATA%\netlogger-mcp\ です。
良き隣人ポリシー
NetLogger は寄付で運営される単一サーバーのサービスで、各コールの頻度を制限しています。この制限を守るため、以下の対策を行っています。
| 対策 | 詳細 |
|---|---|
| NetLogger のコール制限 | GetActiveNets は 1 分あたり 1 回、GetCheckins は 1 分あたり 3 回、GetPastNets は 1 分あたり 1 回、GetPastNetCheckins は 1 分あたり 10 回です。リクエストの送信前に確認し、送信後に確認することはありません。 |
| ユーザーごとの共有予算 | 実行するすべてのコピー(Claude Desktop、Claude Code、スクリプトなど)で、settings.json の隣にあるロックファイルを介して予算を共有します。 |
| 回答の共有 | 取得済みの回答もすべてのコピーで共有します。そのため、制限に達したコピーにはエラーの代わりに、別のコピーが最近取得した回答とその経過時間が返されます。 |
| レスポンスのキャッシュ | アクティブなネットは 60 秒、チェックインは 20 秒、過去のネットは 60 秒、過去のチェックインは 1 時間キャッシュされます。名前による絞り込みで追加のコールが発生することはありません。 |
| 回答の経過時間 | 各回答には as_of_utc(回答が返された時刻)と age_seconds(データの経過秒数)が含まれるため、データの取得時刻は as_of_utc から age_seconds を引いた時刻です。 |
| エラーより古い回答を優先 | 制限に達した場合、新しいリクエストを送信する代わりに、最後の回答とその経過時間を返します。 |
| 429 エラー時のバックオフ | いずれかのコールで「リクエストが多すぎます」が返された場合、少なくとも 1 分間、すべてのコールを停止します。NetLogger がそれ以上の時間を求めた場合は、その時間に従います。 |
| 過去のネットの期間 | 7 日を超える期間の過去のネットを取得するには、名前による絞り込みが必要です。これはサーバーを保護するための NetLogger のルールです。 |
| リクエストのタイムアウト | タイムアウトは 15 秒です。 |
| User-Agent ヘッダー | すべてのリクエストに、このプロジェクト名とコールサインが含まれるため、NetLogger の運営者は誰が問い合わせているかを確認できます。 |
バンドと周波数
NetLogger のバンドと周波数は、ロガーが入力した内容そのものです(「40M」、「75M」、「DMR」、「7033」、「3918 KHz」、「147.030 91.5」、「TG 3141」など)。入力どおりに返されます。それに加えて、テキストを確実に読み取れる場合に限り、frequency_mhz、band_adif(ADIF 3.1.7 のバンド列挙に基づく ADIF バンド)、tone_hz、talkgroup が返されます。アマチュアバンド以外の周波数(GMRS など)には、band_adif は付きません。
プライバシー
NetLogger のチェックインデータには住所と ZIP コードが含まれ、過去のネットには、それを開いたユーザーの IP アドレスが含まれています。これらが返されることは一切ありません。
クイックスタート
MCP クライアントの設定
netlogger-mcp は、MCP 対応のクライアントであればどれでも動作します。サーバー設定を追加して再起動してください。ツールが自動的に表示されます。
Claude Desktop
claude_desktop_config.json(macOS では ~/Library/Application Support/Claude/、Windows では %APPDATA%\Claude\)に追加します。
{
"mcpServers": {
"netlogger": {
"command": "uvx",
"args": ["netlogger-mcp"]
}
}
}
Claude Code
.claude/settings.json に追加します。
{
"mcpServers": {
"netlogger": {
"command": "uvx",
"args": ["netlogger-mcp"]
}
}
}
ChatGPT Desktop
{
"mcpServers": {
"netlogger": {
"command": "uvx",
"args": ["netlogger-mcp"]
}
}
}
Cursor
.cursor/mcp.json(プロジェクトレベル)または ~/.cursor/mcp.json(グローバル)に追加します。
{
"mcpServers": {
"netlogger": {
"command": "uvx",
"args": ["netlogger-mcp"]
}
}
}
VS Code / GitHub Copilot
ワークスペースの .vscode/mcp.json に追加します。
{
"servers": {
"netlogger": {
"command": "uvx",
"args": ["netlogger-mcp"]
}
}
}
Gemini CLI
~/.gemini/settings.json(グローバル)または .gemini/settings.json(プロジェクト)に追加します。
{
"mcpServers": {
"netlogger": {
"command": "uvx",
"args": ["netlogger-mcp"]
}
}
}
質問する
「現在交信中のネットはありますか?」
「80m のネットは実施中ですか?」
「郡の ARES ネットにチェックインしたのは誰ですか? 現在交信中なのは誰ですか?」
「過去 3 日間に実施されたネットはどれですか?」
「昨夜のネットのチェックインを見せてください。」
Python ライブラリとして使用する
同じコードは AI なしでも、同じ制限とキャッシュを使って動作します。ライブラリからコールサインを尋ねることはできないため、渡す必要があります。
from netlogger_mcp.netlogger import NetLoggerSource
nl = NetLoggerSource(callsign="KI7MT")
for net in nl.active_nets()["nets"]:
live = nl.checkins(net["server"], net["name"])
print(net["name"], "up now:", live["pointer_callsign"])
アプリでは、ADIF の PROGRAMID と PROGRAMVERSION を使ってアプリ名を指定することもできます。NetLoggerSource(callsign="KI7MT", program_id="MyLogger", program_version="1.0")。
ネットワーク接続なしでのテスト
NETLOGGER_MCP_MOCK=1 netlogger-mcp
MCP Inspector
netlogger-mcp --transport streamable-http --port 8014
開発
git clone https://github.com/qso-graph/netlogger-mcp.git
cd netlogger-mcp
uv sync --group dev
uv run pytest
ライセンス
GPL-3.0-or-later。adif_band.json は ADIF 3.1.7 のバンド列挙で、ADIF Developers Group の成果物(adif.org.uk)を変更せずに含めています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。