RepeaterBook について
RepeaterBook Python Clientは、RepeaterBook.comのアマチュア無線中継局を検索する非公式Pythonライブラリ兼MCPサーバーです。無線愛好家や開発者、AIツール向けに、ローカル保存と位置・バンド・デジタルモードによる絞り込みを提供します。
主な機能
- 01位置から中継局を検索
- 02バンドとデジタルモードで絞り込み
- 03SQLiteへのローカル保存
- 04同期・検索・個別照会ツール
活用シーン
- 01旅行経路沿いの中継局を計画
- 02バンドやモードで中継局を検索
- 03アマチュア無線中継網を分析
MCP 対応
MCPサーバーは、データ同期、地理検索、中継局の個別照会、ローカルデータ消去のツールをクライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx repeaterbookREPEATERBOOK_APP_TOKENシークレットPer-user RepeaterBook 'rbuapp_' API token. Required: every export needs an approved token, and the server refuses to start without it. No application registration needed - log in to your RepeaterBook account, open https://www.repeaterbook.com/user/api_apps.php, find 'RepeaterBook Python Client' (App #114), and generate a token for it.REPEATERBOOK_WORKING_DIRWhere the SQLite database and HTTP cache live. Created if missing; a leading '~' is expanded.REPEATERBOOK_APP_CONTACTContact address used in the API User-Agent. Leave unset: it defaults to the address registered for App #114, and any other value returns 403 ua_mismatch. Set it only if you registered your own separate application with RepeaterBook.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
4掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| modes | any | いいえ | |
| state | any | いいえ | 米国、カナダ、メキシコの州、省、または準州。これらの国では強く推奨されます。API は最大 3500 行しか返さないため、国全体を検索すると通知なく切り捨てられます。それ以外の地域では `region` を使用してください。 |
| region | any | いいえ | 北米以外の国における地域(データソースが地域情報を提供している場合)。米国、カナダ、メキシコでは `state` を使用してください。 |
| country | any | いいえ | 国名(例:'United States'、'Switzerland')。'USA' など、曖昧さのない一般的な別名は解決されます。 |
詳細
RepeaterBook Python Client
非公式プロジェクトです。 RepeaterBook Python Clientは、コミュニティが独立して保守するライブラリおよびMCPサーバーであり、RepeaterBook.comとの提携、承認、または公式サポートを受けていません。「RepeaterBook」は、それぞれの所有者の商標です。公式ウェブサイトおよびAPIについては、https://repeaterbook.com/をご覧ください。
RepeaterBook Python Clientのドキュメントへようこそ!
RepeaterBook Python Clientは、RepeaterBook.com API(世界最大のアマチュア無線中継局データベース)への強力で便利なインターフェースを提供する、非公式のサードパーティ製PythonライブラリおよびModel Context Protocol(MCP)サーバーです。ライブラリとしてプログラムから中継局データをダウンロード、検索、分析したり、付属のMCPサーバーを実行して、AI エージェントやLLMツールに同じ中継局検索機能を提供したりできます。
特長
- 簡単なAPIアクセス:シンプルな非同期インターフェースで、RepeaterBook.comから中継局データをダウンロードできます
- 非公式MCPサーバー:中継局の同期、地理的検索、検索、およびローカルデータの消去を、型付きの4つのツールとして任意のMCPクライアントに提供します。MCPサーバーガイドをご覧ください
- ローカルデータベース:中継局情報をローカルのSQLiteデータベースに保存し、高速に検索できます
- 地理的検索:距離に基づくフィルタリングを使用して、指定した場所の近くにある中継局を見つけられます
- バンドフィルタリング:周波数帯(2m、70cmなど)で中継局を検索できます
- デジタルモードのサポート:DMR、P25、NXDNなどのデジタルモードでフィルタリングできます
- スマートキャッシュ:API応答を自動的にキャッシュして、負荷を軽減し、パフォーマンスを向上させます
- 型安全:mypyによる完全な型付けで、優れたIDEサポートを実現します
- Async/Await:ノンブロッキングI/Oにより、効率的なAPI操作が可能です
クイック例
RepeaterBook APIトークンが必要です。 アプリケーション登録は不要です。このライブラリはすでにRepeaterBook Python Client(App #114)として登録されています。RepeaterBookにログインし、API Applicationsを開いて、App #114を見つけ、トークンを生成してください。その後、
REPEATERBOOK環境変数として設定します(例:export REPEATERBOOK="rbuapp_...")。ライブラリのデフォルトのUser-Agentを使用してください。詳しくは認証ガイドをご覧ください。
import asyncio
import os
from repeaterbook import RepeaterBook, Repeater
from repeaterbook.services import RepeaterBookAPI
from repeaterbook.models import ExportQuery, Status
from repeaterbook.utils import LatLon, Radius
from repeaterbook.queries import filter_radius, square, band, Bands
import pycountry
async def find_nearby_repeaters():
# Download repeater data
api = RepeaterBookAPI(app_token=os.environ["REPEATERBOOK"])
brazil = pycountry.countries.get(name="Brazil")
repeaters = await api.download(query=ExportQuery(countries={brazil}))
# Store in local database
rb = RepeaterBook()
rb.populate(repeaters)
# Find DMR repeaters within 50km of São Paulo
sao_paulo = LatLon(lat=-23.5505, lon=-46.6333)
radius = Radius(origin=sao_paulo, distance=50)
nearby = rb.query(
square(radius),
Repeater.dmr_capable == True,
Repeater.operational_status == Status.ON_AIR,
band(Bands.CM_70) # 70cm band
)
filtered = filter_radius(nearby, radius)
# Display results (filter_radius returns repeaters sorted by distance)
from haversine import haversine
for rep in filtered[:5]:
distance = haversine(radius.origin, (rep.latitude, rep.longitude), unit=radius.unit)
print(f"{distance:.1f}km - {rep.frequency:.4f} MHz - {rep.callsign}")
asyncio.run(find_nearby_repeaters())
クイック例(MCP)
AI エージェントからRepeaterBookを操作したい場合は、非公式MCPサーバーを
mcpエクストラ経由でrepeaterbook-mcpコンソールスクリプトとして実行できます。MCP
クライアントからuvxを指定すれば、事前のインストールは不要です。
{
"mcpServers": {
"repeaterbook": {
"command": "uvx",
"args": ["--from", "repeaterbook[mcp]", "repeaterbook-mcp"],
"env": {
"REPEATERBOOK_WORKING_DIR": "~/.repeaterbook",
"REPEATERBOOK_APP_TOKEN": "rbuapp_..."
}
}
}
}
REPEATERBOOK_APP_TOKENには、上記のApp #114トークンを指定します。このトークンがないと
サーバーは起動しません。
これにより、安定したソース非依存の中継局仕様を返す4つのツール(sync_repeaters、search_repeaters、
get_repeater)と、ローカルストアおよび応答キャッシュを消去するclear_local_dataを利用できます。ツールの全リファレンス、フィルターの語彙、
設定オプションについては、**MCPサーバーガイド**をご覧ください。
ドキュメント
- はじめに - 初心者向けチュートリアル
- 使用ガイド - 包括的な使用例
- MCP サーバー - AI エージェント向けの非公式 MCP サーバーを実行
- 使用例 - 実際のユースケース
- アーキテクチャ - 内部の仕組みを理解する
- API リファレンス - API ドキュメント一式
- よくある質問 - よくある質問とトラブルシューティング
上流 API の詳細については、RepeaterBook.com の公式API ドキュメントをお読みください。
ユースケース
- AI エージェントとアシスタント:LLM が MCP 経由で会話形式で中継局を検索できるようにします
- 旅行計画:旅行ルート沿いの中継局を検索します
- 緊急通信:緊急通信に対応した中継局を特定します
- 無線機の設定:DMR などのデジタル無線機向けにコードプラグを生成します
- 通信範囲の分析:通信範囲の地図や統計情報を作成します
- ネットワーク分析:中継局ネットワークとインフラを分析します
- モバイルアプリ:中継局ディレクトリアプリケーションを構築します
- 調査:アマチュア無線中継局の傾向や分布を分析します
関連プロジェクト
- MicaelJarniac/opengd77 - OpenGD77 無線機の設定
- MicaelJarniac/ogdrb - OpenGD77 と RepeaterBook の連携
関連項目
- afourney/hamkit - アマチュア無線ツールキット
- desertblade/OpenGD77-Repeaterbook - OpenGD77 との連携
- TomHW/OpenGD77 - OpenGD77 ファームウェア
インストール
PyPI
repeaterbook は PyPI で入手できます:
# With uv (recommended)
uv add repeaterbook
# With pip
pip install repeaterbook
# With Poetry
poetry add repeaterbook
MCP サーバー
MCP サーバーは mcp extra に含まれています。ほとんどの MCP クライアントでは、インストール手順なしで uvx 経由で起動できます:
# Run on demand, no install (what MCP clients should use)
uvx --from "repeaterbook[mcp]" repeaterbook-mcp
# Or install it persistently
uv tool install "repeaterbook[mcp]"
# Or add it as a project dependency
uv add "repeaterbook[mcp]"
pip install "repeaterbook[mcp]"
GitHub
GitHub からコードの最新バージョンを直接インストールすることもできます:
# With uv
uv add git+https://github.com/MicaelJarniac/repeaterbook
# With pip
pip install git+https://github.com/MicaelJarniac/repeaterbook
# With Poetry
poetry add git+https://github.com/MicaelJarniac/repeaterbook
要件
- Python 3.11 以降
- 依存関係は自動的にインストールされます:
- aiohttp - 非同期 HTTP クライアント
- anyio - 非同期互換レイヤー
- attrs - 不変の設定クラス
- haversine - 距離の計算
- loguru - 構造化ログ
- pycountry - 国/地域コード
- pydantic - データ検証
- sqlmodel - 型安全な SQL ORM
- tqdm - プログレスバー
- yarl - URL の処理
- オプションの
mcpextra を指定すると、fastmcp、pydantic-settings、 およびpydantic[email](EmailStrの連絡先設定用)もインストールされます
コントリビューション
プルリクエストを歓迎します。大きな変更を行う場合は、まず issue を作成して、変更したい内容についてご相談ください。
必要に応じてテストも更新してください。
詳しくはCONTRIBUTINGをご覧ください。
貢献者 ✨
Micael Jarniac 🐛 💻 🖋 🔣 📖 💡 🤔 🚇 🚧 📆 💬 🔬 👀 🔧 ⚠️ 📓 | ada mancini 🐛 🤔 📓 | aaronjbrown 💻 📖 🤔 ⚠️ | Erica Morton 🐛 💻 📖 🔬 ⚠️ |
ライセンス
このプロジェクトは、MicaelJarniac/crustypy テンプレートを使用して作成されました。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。