bhoonidhi-mcp について
bhoonidhi-mcpは、ISROのBhoonidhiポータルで衛星シーンを検索・管理するMCPサーバーです。研究者や地理空間分野の利用者向けで、検索やクエリ保存、ダウンロードのプレビューはログイン不要ですが、ダウンロードとカート操作にはログインが必要です。
主な機能
- 01衛星アーカイブをリアルタイム検索
- 02場所と衛星名を解決
- 03シーンの利用可否を確認
- 04検索条件の保存と再利用
- 05バックグラウンドダウンロードの進捗確認
活用シーン
- 01場所と期間を指定して画像を検索
- 02すぐにダウンロードできるシーンを確認
- 03検索を保存し、後でダウンロードまたはカートに追加
MCP 対応
MCPクライアントに、アーカイブ情報、場所の解決、シーン検索、保存クエリ管理、ダウンロード、カート操作のツールを提供します。検索と保存はログイン不要で、ダウンロードとカート操作にはBhoonidhiのログインセッションを使います。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
15掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| refresh | boolean | いいえ |
詳細
bhoonidhi-mcp
AI エージェントが自然言語で、ISRO の Bhoonidhi Browse & Order ポータル(NRSC)から衛星画像を検索、保存、ダウンロードし、カートに追加できるMCPサーバーです。「昨年1月の Shillong 上空の Sentinel-2」のような文を、稼働中のポータルでの実際の検索に変換し、ダウンロード可能なデータを正直に表示できます。また、後で再利用できるよう検索を保存したり、ダウンロードで取得する内容をプレビューしたり、ログイン後にオープンアクセスの衛星画像をダウンロードしたり、カートに追加したりできます。
bhoonidhi-downloader SDK(bhd CLI と同じクライアント)を薄くラップしているため、ポータルのロジックは重複していません。
ステータス
ログインなしで検索と保存ができ、ログインするとダウンロードとカートへの追加ができます。 ツールは、41 の衛星ミッションと 79 のセンサーからなる全アーカイブにアクセスし、稼働中のポータルを検索して、再利用できるスラッグに検索を保存できます。いずれも認証情報は不要です。オープンアクセスの衛星画像のダウンロードと、Bhoonidhi のカートへの追加にはログインが必要です。ログインは別途 bhd auth login で行い、サーバーはそのセッションを再利用します。
ツール
| ツール | 機能 | ログイン |
|---|---|---|
list_archive | Bhoonidhi からリアルタイムで取得する、ポータルがサポートする衛星、センサー、検索トークンの一覧です。 | いいえ |
resolve_location | 地名(「Loktak Lake」など)を重心とバウンディングボックスに変換します。地名以外の入力は拒否します。 | いいえ |
search_scenes | エリアと日付範囲を指定して、自然言語でシーンを検索します。一般的な衛星名を正確なトークンに解決し、各シーンの利用可能状況(Ready / Archived / OnOrder / Priced)を報告します。ステートレスのため、何も保存されません。 | いいえ |
preview_download | ダウンロードを実行する前に、検索結果をダウンロードすると何が取得され、何がスキップされるかを表示するドライランです。 | いいえ |
save_query | 検索(search_scenes と同じ引数)を再利用可能なスラッグで保存し、後からダウンロードしたりカートに追加したりできるようにします。 | いいえ |
list_queries | 保存した検索を、スラッグ、名前、日付範囲、衛星、エリア、利用可能状況を含む簡潔な概要で一覧表示します。 | いいえ |
show_query | スラッグを指定して保存済みの検索を 1 件、シーンとともに返します。 | いいえ |
remove_query | スラッグを指定して保存済みの検索を削除します。 | いいえ |
auth_status | ログインが設定されているかどうかを報告します。パスワードやトークンを扱うことはありません。 | いいえ |
download_query | 保存済みの検索に含まれるオープンアクセスのシーンを、サーバーで設定された固定ルートにバックグラウンドでダウンロードします。すぐに job_id を返します。 | はい |
download_status | job_id を指定してバックグラウンドダウンロードを 1 回確認します。ダウンロード済みバイト数、転送速度、サイズが判明している場合は進捗率、シーンごとの詳細を表示します。 | いいえ |
download_wait | ダウンロードが完了するまで(または上限付きタイムアウトに達するまで)待機し、その後に結果を報告します。バックグラウンドの監視処理が繰り返し呼び出すのに適した効率的なプリミティブです。 | いいえ |
cart_add | 保存済みの検索に含まれるシーンをカートに追加します(各シーンを ready / on-order / priced に振り分けます)。 | はい |
cart_list | 現在カートに追加されているシーンを一覧表示します。 | はい |
cart_remove | カートからシーンを削除します。 | はい |
利用可能状況は重要です。OpenData のシーンが、必ずしもダウンロード用に追加されているとは限りません。search_scenes と preview_download は、Ready(今すぐ取得可能)と Archived(オープンデータですが、ポータルで先にリクエストが必要な場合があります)を区別するため、エージェントが過剰な約束をすることはありません。
ダウンロードは会話とは独立してバックグラウンドで実行されます。
download_query はすぐに job_id を返し、転送はそのまま進行します。
進捗を 1 回確認するには download_status を使用します。ダウンロード済みバイト数、転送速度、サイズが判明した時点での進捗率が表示されます。または、download_wait を使用してジョブの完了まで待機できます。完了するまで(または上限付きタイムアウトに達するまで)ブロックされるため、エージェントはバックグラウンドの監視処理に作業を委任して、スリープを繰り返すことなく会話を続けられます。ジョブはサーバープロセスが稼働している間だけ存在するため、ダウンロードの規模が大きいとわかった場合は、代わりに自分で管理するスタンドアロンの bhd query download <slug> コマンドの実行をステータスが推奨します。
インストール
このサーバーは、コンソールエントリーポイント bhoonidhi-mcp を備えた Python パッケージです。実行する最も簡単な方法は uv を使うことです。uvx はソースから直接取得、ビルド、起動するため、クローンや仮想環境は必要ありません。
uvx --from git+https://github.com/geovicco-dev/bhoonidhi-mcp bhoonidhi-mcp
初回の実行時にソースからビルドされ、以降の実行ではキャッシュから起動します。サーバーは stdio で通信し、MCP クライアントによって起動されます。クライアントにこのコマンドを指定してください。
ローカルのチェックアウトを使用する場合(開発向け)は、クローンして uv sync を実行し、代わりにコマンドとして .venv/bin/bhoonidhi-mcp を使用してください。
git clone https://github.com/geovicco-dev/bhoonidhi-mcp
cd bhoonidhi-mcp
uv sync
クライアントの接続
どの MCP クライアントでも必要なのは同じです。起動するコマンドを指定してください。ソースとエントリーポイントを引数として指定し、uvx を実行するよう設定します。
Claude Desktop / Claude Code
claude_desktop_config.json(または claude mcp add):
{
"mcpServers": {
"bhoonidhi": {
"command": "uvx",
"args": ["--from", "git+https://github.com/geovicco-dev/bhoonidhi-mcp", "bhoonidhi-mcp"]
}
}
}
OpenCode
~/.config/opencode/opencode.json:
{
"mcp": {
"bhoonidhi": {
"type": "local",
"command": ["uvx", "--from", "git+https://github.com/geovicco-dev/bhoonidhi-mcp", "bhoonidhi-mcp"],
"enabled": true
}
}
}
MCP Inspector(エージェントなしで試す場合)
npx @modelcontextprotocol/inspector uvx --from git+https://github.com/geovicco-dev/bhoonidhi-mcp bhoonidhi-mcp
使用例
エージェントに平易な言葉で質問します:
「2024年1月にシロン上空を通過したSentinel-2のシーンはどれくらいあり、実際にはそのうちいくつダウンロードできますか?」
エージェントはシロンについて resolve_location を呼び出し、続いて search_scenes を実行して、その結果に基づいて回答します。たとえば、すべてのシーンが Archived(オープンデータですが、ダウンロードする前にポータルでリクエストが必要な場合があります)であり、すべてすぐに利用できるとは限らないことを説明します。
試してみるプロンプト
接続済みのエージェントにコピーして、何ができるか試してみてください。
アーカイブを調べる
- 「Bhoonidhiにはどのような衛星とセンサーがありますか?」
- 「ResourceSat-2Aに搭載されているセンサーと、その解像度を教えてください。」
- 「Bhoonidhiにはレーダー衛星がありますか?」
シーンを検索する
- 「2024年1月にシロン上空を通過したSentinel-2のシーンを探してください。」
- 「2024年前半にベンガルールから20 km以内で撮影されたCartosat画像を表示してください。」
- 「2024年3月にスンダルバンス上空を通過したSentinel-1のシーンはありますか?」
- 「昨冬、カジランガ国立公園をカバーしたLandsat-8画像はありますか?」
- 「2023年12月にカッチ大湿地上空を通過したMODISのシーンを探してください。」
ダウンロード可能なデータを確認する
- 「これらのSentinel-2のシーンのうち、今すぐ実際にダウンロードできるのはいくつですか?」
- 「この中で、注文または支払いが必要なのはどれですか?」
ダウンロードをプレビューする
- 「これらのシーンをダウンロードすると何が取得されるか、プレビューしてください。」
検索を保存して再利用する
- 「このSentinel-2の検索を保存して、後でダウンロードできるようにしてください。」
- 「保存した検索の一覧を表示してください。」
- 「
<slug>という名前で保存した検索の内容を表示してください。」 - 「保存した検索
<slug>を削除してください。」
ダウンロードとカート(ログインが必要です。下記を参照)
- 「Bhoonidhiにログインしていますか?」
- 「保存した検索
<slug>からオープンデータのシーンをダウンロードしてください。」 - 「ダウンロードはどのくらい進んでいますか?」
- 「
<slug>をダウンロードして、完了したら知らせてください。作業を続けています。」 - 「
<slug>から有料のシーンをカートに追加してください。」 - 「今週のカートには何が入っていますか?」
ログイン(ダウンロードとカートに必要)
検索、保存済みクエリ、プレビューには認証情報は必要ありません。シーンのダウンロードとカートへの追加には必要です。別途、一度ログインしてください。サーバーは bhd CLI が書き込む同じセッションを再利用します:
bhd auth login
MCP サーバーがユーザー名やパスワードをツールの引数として受け取ることはなく、auth_status がトークンを返すこともありません。対話形式のログインができないヘッドレス環境でセットアップする場合は、代わりにサーバーの環境変数に BHOONIDHI_USERNAME / BHOONIDHI_PASSWORD を設定できます。サーバーはセッションの確立にのみこれらを使用します。
設定
環境変数として設定します(すべて任意です):
| 変数 | デフォルト | 用途 |
|---|---|---|
BHOONIDHI_MCP_GEOCODER_USER_AGENT | bhoonidhi-mcp/0.3 | Nominatimに送信するUser-Agent(利用ポリシーでは、内容がわかるものを指定するよう求められています)。 |
BHOONIDHI_MCP_FUZZY_THRESHOLD | 88 | 衛星名の照合で確度が高いと判断するために超える必要があるスコア(0~100)。これを下回る場合、エージェントが確認できるよう候補が返されます。 |
BHOONIDHI_MCP_MAX_RESULTS | 50 | search_scenes がインラインで返すシーンの最大数。 |
BHOONIDHI_MCP_DOWNLOAD_ROOT | ~/Downloads | ダウンロード先として許可されるルート。すべてのダウンロードは <root>/<slug>/ 以下に保存されます。エージェントが任意のパスを指定することはできません。 |
BHOONIDHI_MCP_DOWNLOAD_PARALLEL | 4 | 並列ダウンロードワーカー数。 |
BHOONIDHI_MCP_LARGE_DOWNLOAD_MB | 500 | ダウンロードの実際のバイト数の合計(または判明しているサイズ)がこの値を超えると、ステータスに大容量と表示され、エージェントに引き継ぎまたはスタンドアロンコマンドの実行を促します。 |
BHOONIDHI_USERNAME / BHOONIDHI_PASSWORD | (未設定) | 任意のヘッドレスログイン。bhd auth login を推奨します。これらは別途入力し、決してコミットしないでください。 |
データの利用と帰属表示
このサーバーを通じてアクセスする画像は ISRO/NRSC に帰属し、Bhoonidhi EULA に準拠します。このプロジェクトの MIT ライセンスの対象ではありません。このライセンスが適用されるのは、ここにあるコードだけです。EULA で求められることは次のとおりです。
- ご自身のアカウントを使用してください。 ダウンロードとカート操作は、別途作成したご自身の Bhoonidhi ログインアカウントで認証します。サーバーがツールの引数としてパスワードを受け取ることはなく、セッションを共有したり、回避したりすることもありません。
- データの出典を明記してください。 このデータを使用して公開するものには、必ずキャプション ISRO-IRS を付けてください。
- 生データを再販売しないでください。 ポータルでオープンデータとして表示されるシーンは、自由に利用、公開、改変できます。ただし、元の製品を元の形式のまま商業目的で再配布することはできません。派生製品や付加価値製品は問題ありません。
- 有料のシーンと注文処理中のシーンはポータルで手続きしてください。 このサーバーが支払いを回避することはありません。有料のシーンと注文処理中のシーンはカートに入れるところまでしかできません。注文と支払いは Bhoonidhi で完了してください。
開発
uv sync
uv run pytest # test suite
uv run ruff check . # lint
ライセンス
MIT — LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。