bhoonidhi-mcp

io.github.geovicco-dev由 GitHub 帳號 geovicco-dev 發布v0.3.0更新於 Oct 24, 2026

Search, save, and download satellite scenes from ISRO's Bhoonidhi portal in natural language.

概覽

AI 產生的概覽

讓助理用自然語言搜尋、儲存、預覽並下載 ISRO Bhoonidhi 入口網站的衛星影像。

可以做什麼
查詢入口網站支援的衛星、感測器與搜尋詞彙,並把地名解析為座標和邊界框。依區域和日期範圍搜尋影像,並回報每景的可用狀態(Ready、Archived、OnOrder、Priced)。預覽下載會取得哪些內容、略過哪些內容。依 slug 儲存、列出、檢視和刪除可重複使用的搜尋。在背景下載已儲存搜尋中的開放資料影像,並查詢或等待工作進度。把已儲存搜尋的影像加入 Bhoonidhi 購物車、列出購物車並移除項目。
適用情境
適合需要助理查找某地區某時段的 ISRO/NRSC 衛星影像、確認哪些實際可下載,並在對話中直接取得開放資料影像或把影像加入待訂購清單的情境。
執行需求
以本機 Python 套件(bhoonidhi-mcp)透過 stdio 執行,通常用 uvx 或本機 uv 檢出啟動。需要連線至 Bhoonidhi 入口網站和地理編碼服務。搜尋、預覽和儲存查詢不需登入;下載和購物車操作需要 Bhoonidhi 帳號,須透過 bhd 命令列在外部登入,或使用選用的 BHOONIDHI_USERNAME 和 BHOONIDHI_PASSWORD 環境變數。另有若干選用設定控制下載根目錄、平行數和結果上限。
安裝前請注意
下載和購物車操作使用你自己的 Bhoonidhi 帳號驗證;選用的 BHOONIDHI_USERNAME 和 BHOONIDHI_PASSWORD 變數保存憑證,應在外部設定且不要提交到程式庫。下載會把檔案寫入設定的根目錄,且背景工作僅在伺服器程序存活期間執行。購物車操作會改變入口網站上的狀態,付費或需訂購的影像只會被加入購物車,下單和付款需在 Bhoonidhi 完成。影像受 Bhoonidhi EULA 約束:發布時須標註 ISRO-IRS,且不得轉售原始資料。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 bhoonidhi-mcp,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

bhoonidhi-mcp

[PyPI] [MCP Registry] [License: MIT]

An MCP server that lets an AI agent search, save, download, and cart satellite scenes from ISRO's Bhoonidhi Browse & Order portal (NRSC) in natural language. An agent can turn a sentence like "Sentinel-2 over Shillong last January" into a real search against the live portal, see honestly what is available to download, save a search to reuse later, preview what a download would fetch, and — once logged in — download open-access scenes or stage them to the cart.

It is a thin adapter over the bhoonidhi-downloader SDK — the same client the bhd CLI uses — so no portal logic is duplicated.

Status

Search and save with no login; download and cart with one. The tools reach the full archive of 41 satellite missions and 79 sensors, search the live portal, and save searches to reusable slugs — all without credentials. Downloading open-access scenes and staging scenes to the Bhoonidhi cart need a login, done out of band with bhd auth login (the server reuses that session).

Tools

ToolWhat it doesLogin
list_archiveThe vocabulary of satellites, sensors, and search tokens the portal supports, live from Bhoonidhi.no
resolve_locationTurns a place name ("Loktak Lake") into a centroid and bounding box. Rejects inputs that are not place names.no
search_scenesNatural-language scene search over an area and date range. Resolves a casual satellite name to exact tokens, and reports each scene's availability (Ready / Archived / OnOrder / Priced). Stateless — nothing is saved.no
preview_downloadA dry run: shows what downloading the results would fetch, and what would be skipped, before anything is downloaded.no
save_queryPersists a search (same arguments as search_scenes) to a reusable slug, so it can be downloaded or staged to the cart later.no
list_queriesLists saved queries as compact summaries: slug, name, date range, satellites, area, and availability.no
show_queryReturns one saved query by slug, with its scenes.no
remove_queryDeletes a saved query by slug.no
auth_statusReports whether a login is configured. Never handles a password or token.no
download_queryDownloads a saved query's open-access scenes in the background, to a fixed server-configured root. Returns a job_id at once.yes
download_statusOne-off check of a background download by job_id: bytes downloaded, transfer rate, percent when the size is known, and per-scene detail.no
download_waitBlocks until a download finishes (or a capped timeout), then reports — the efficient primitive a background watcher loops on.no
cart_addStages a saved query's scenes to the cart (routes each to ready / on-order / priced).yes
cart_listLists scenes currently staged in the cart.yes
cart_removeRemoves scenes from the cart.yes

Availability matters: an OpenData scene is not necessarily staged for download. search_scenes and preview_download distinguish Ready (fetch it now) from Archived (open data, but may need a request on the portal first), so an agent does not over-promise.

Downloads run in the background, independent of the conversation: download_query returns a job_id at once and the transfer proceeds on its own. Check progress once with download_status — it reports bytes downloaded, a transfer rate, and a percent once the size is known — or follow a job to completion with download_wait, which blocks until it finishes (or a capped timeout) so an agent can delegate a background watcher and keep the conversation free instead of sleep-looping. A job lives only as long as the server process, so once a download proves large the status recommends running a standalone bhd query download <slug> command you own instead.

Install

The server is a Python package with a console entry point, bhoonidhi-mcp. The simplest way to run it is with uv — uvx fetches, builds, and launches it straight from the source, no clone or virtualenv needed:

bash
uvx --from git+https://github.com/geovicco-dev/bhoonidhi-mcp bhoonidhi-mcp

The first run builds from source; later runs start from cache. The server speaks stdio and is launched by an MCP client — you point the client at that command.

Prefer a local checkout (for development)? Clone and uv sync, then use .venv/bin/bhoonidhi-mcp as the command instead:

bash
git clone https://github.com/geovicco-dev/bhoonidhi-mcpcd bhoonidhi-mcpuv sync

Connecting a client

Every MCP client needs the same thing: the command to launch. Point it at uvx with the source and entry point as arguments.

Claude Desktop / Claude Code

claude_desktop_config.json (or claude mcp add):

json
{  "mcpServers": {    "bhoonidhi": {      "command": "uvx",      "args": ["--from", "git+https://github.com/geovicco-dev/bhoonidhi-mcp", "bhoonidhi-mcp"]    }  }}

OpenCode

~/.config/opencode/opencode.json:

json
{  "mcp": {    "bhoonidhi": {      "type": "local",      "command": ["uvx", "--from", "git+https://github.com/geovicco-dev/bhoonidhi-mcp", "bhoonidhi-mcp"],      "enabled": true    }  }}

MCP Inspector (to try it without an agent)

bash
npx @modelcontextprotocol/inspector uvx --from git+https://github.com/geovicco-dev/bhoonidhi-mcp bhoonidhi-mcp

Example

Ask an agent, in plain language:

"What Sentinel-2 scenes are over Shillong in January 2024, and how many can I actually download?"

The agent calls resolve_location for Shillong, then search_scenes, and answers from the result — for example, that all scenes are Archived (open data, but each may need a request on the portal before it will download), rather than claiming they are all ready.

Prompts to try

Copy these into any connected agent to get a feel for what it can do.

Discover the archive

  • "What satellites and sensors does Bhoonidhi have?"
  • "Which sensors does ResourceSat-2A carry, and at what resolution?"
  • "Does Bhoonidhi have any radar satellites?"

Search for scenes

  • "Find Sentinel-2 scenes over Shillong in January 2024."
  • "Show me Cartosat imagery within 20 km of Bengaluru in the first half of 2024."
  • "Any Sentinel-1 scenes over the Sundarbans in March 2024?"
  • "What Landsat-8 imagery covers Kaziranga National Park last winter?"
  • "Find MODIS scenes over the Rann of Kutch in December 2023."

Check what's available to download

  • "Of those Sentinel-2 scenes, how many can I actually download right now?"
  • "Which of these need to be ordered or paid for?"

Preview a download

  • "Preview what downloading those scenes would fetch."

Save a search to reuse

  • "Save that Sentinel-2 search so I can download it later."
  • "List my saved searches."
  • "Show me what's in the search I saved as <slug>."
  • "Delete the saved search <slug>."

Download and cart (needs a login — see below)

  • "Am I logged in to Bhoonidhi?"
  • "Download the open-data scenes from my saved search <slug>."
  • "How's that download going?"
  • "Download <slug> and let me know when it's done — I'll keep working."
  • "Add the priced scenes from <slug> to my cart."
  • "What's in my cart this week?"

Login (for downloads and cart)

Search, saved queries, and previews need no credentials. Downloading scenes and staging them to the cart do. Log in once, out of band — the server reuses the same session the bhd CLI writes:

bash
bhd auth login

The MCP server never takes a username or password as a tool argument, and auth_status never returns your token. For a headless setup with no interactive login, you can instead set BHOONIDHI_USERNAME / BHOONIDHI_PASSWORD in the server's environment; the server reads them only to establish a session.

Configuration

Set as environment variables (all optional):

VariableDefaultPurpose
BHOONIDHI_MCP_GEOCODER_USER_AGENTbhoonidhi-mcp/0.3User-Agent sent to Nominatim (its usage policy asks for a descriptive one).
BHOONIDHI_MCP_FUZZY_THRESHOLD88Score (0–100) a satellite-name match must clear to be confident; below it, candidates are returned for the agent to confirm.
BHOONIDHI_MCP_MAX_RESULTS50Maximum scenes returned inline by search_scenes.
BHOONIDHI_MCP_DOWNLOAD_ROOT~/DownloadsAllow-listed root every download writes under, as <root>/<slug>/. The agent cannot choose an arbitrary path.
BHOONIDHI_MCP_DOWNLOAD_PARALLEL4Parallel download workers.
BHOONIDHI_MCP_LARGE_DOWNLOAD_MB500Once a download's live byte total (or known size) passes this, the status flags it large and steers the agent to hand off or run a standalone command.
BHOONIDHI_USERNAME / BHOONIDHI_PASSWORD(unset)Optional headless login. Prefer bhd auth login; fill these out of band, never commit them.

Data usage and attribution

The imagery reached through this server belongs to ISRO/NRSC and is governed by the Bhoonidhi EULA, not by this project's MIT license — that license covers the code here, nothing else. What the EULA asks of you:

  • Use your own account. Downloads and cart actions authenticate with your own Bhoonidhi login, established out of band. The server never takes a password as a tool argument and never shares or bypasses a session.
  • Credit the source. Anything you publish from this data must carry the caption ISRO-IRS.
  • Don't resell the raw data. Scenes the portal marks as open data are free to use, publish, and build on. The original products just can't be redistributed commercially in their original form — derived and value-added products are fine.
  • Priced and on-order scenes go through the portal. This server never bypasses payment: priced and on-order scenes are only staged to the cart, and you complete any order and payment on Bhoonidhi.

Development

bash
uv syncuv run pytest        # test suiteuv run ruff check .  # lint

License

MIT — see LICENSE.

來源:README.md,提交 25a5b5a

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.3.0最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分