Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

bhoonidhi-mcp

PYPI · BHOONIDHI-MCP · SCANNED SEP 20

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

Available components

+3 this week 75 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security100
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • Runs hatchling.build at install time, a recognised native-build step with no shell scripting around it. View diagnostics → Pass
  • 4 of 46 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency32
Schema Quality & AI Usability83
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 2401 tokens (~150/item across 16 items; 15 tools + 1 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management60
  • Stability observed for 18 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage67
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 0% of tool parameters carry a description.Fail
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 16 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Install

How do I install the bhoonidhi-mcp server?

bhoonidhi-mcp runs locally as a PyPI package, launched with uvx bhoonidhi-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

pypi · bhoonidhi-mcp

# add to Claude Code
claude mcp add geovicco-dev-bhoonidhi-mcp -- uvx bhoonidhi-mcp
// .cursor/mcp.json
{
  "mcpServers": {
    "geovicco-dev-bhoonidhi-mcp": {
      "command": "uvx",
      "args": [
        "bhoonidhi-mcp"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "geovicco-dev-bhoonidhi-mcp": {
      "command": "uvx",
      "args": [
        "bhoonidhi-mcp"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add geovicco-dev-bhoonidhi-mcp -- uvx bhoonidhi-mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "geovicco-dev-bhoonidhi-mcp": {
      "type": "local",
      "command": [
        "uvx",
        "bhoonidhi-mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add geovicco-dev-bhoonidhi-mcp --command uvx --arg bhoonidhi-mcp
# ~/.hermes/config.yaml
mcp_servers:
  geovicco-dev-bhoonidhi-mcp:
    command: "uvx"
    args: ["bhoonidhi-mcp"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "geovicco-dev-bhoonidhi-mcp": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "bhoonidhi-mcp"
      ]
    }
  }
}
# add to Vellum
assistant mcp add geovicco-dev-bhoonidhi-mcp -t stdio -c uvx -a bhoonidhi-mcp
// mcp.json
{
  "mcpServers": {
    "geovicco-dev-bhoonidhi-mcp": {
      "command": "uvx",
      "args": [
        "bhoonidhi-mcp"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 19 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.

  • 17 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 47 to 50. That category is still filling its 30-day observation window: 14 days of observed history at the previous scan, 15 at this one. The score rises as the window fills, whether or not the server changes.

  • 15 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 40 to 43. That category is still filling its 30-day observation window: 12 days of observed history at the previous scan, 13 at this one. The score rises as the window fills, whether or not the server changes.

  • 13 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.

  • 11 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 27 to 30. That category is still filling its 30-day observation window: 8 days of observed history at the previous scan, 9 at this one. The score rises as the window fills, whether or not the server changes.

  • 9 Sept 26 +3
    • Stability: unverified → 0.23 functional
  • 3 Sept 26 +15
    • Malware scan: unverified → pass security
  • 2 Sept 26 52

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 20 Sept 2026 · Analysed pypi/bhoonidhi-mcp@0.3.0

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem pypi

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
build_backend allowlisted hatchling.build

Background: Why install scripts are a supply-chain risk →

Dependencies 46 packages
Packages resolved 46
Stale 3
No linked repository 1
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 15 exposed · ~2,383 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
auth_status ~131

Report whether a Bhoonidhi login is configured for downloads and cart. Never asks for or returns a password or token. If credentials are set in the server's environment (BHOONIDHI_USERNAME / BHOONIDHI_PASSWORD) it establishes the session so the answer matches what a download or cart action would find. Returns authenticated=True with the username when a usable session exists, or authenticated=False with guidance to log in ('bhd auth login' out of band, or set those environment variables). Call this before download or cart actions to tell the user if a login is needed.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

cart_add ~118

Stage a saved query's scenes to the Bhoonidhi cart. Give the slug from save_query or list_queries. Each scene is routed to the cart its access type needs (ready / on-order / priced); select narrows to specific scenes (1-based indices or scene IDs). Needs a login (see auth_status). Use this for on-order and priced scenes; priced ones still need purchasing on the portal afterwards. Returns counts of what was staged and what failed.

NameTypeReqDescription
select
slugstringyes

No output schema declared.

No examples provided.

cart_list ~121

List scenes currently staged in the Bhoonidhi cart. Cart items are filed by the date they were added; with no window this shows today only, so pass since/until (ISO dates, e.g. "2026-08-10") or last (e.g. "1 week") to widen it. filter_by limits to a state: ready, archived, onorder, or priced. Needs a login (see auth_status).

NameTypeReqDescription
filter_by
last
since
until

No output schema declared.

No examples provided.

cart_remove ~106

Remove scenes from the Bhoonidhi cart. Two ways to address rows: pass slug to index a saved query's scenes, or omit it and let select index the merged cart itself (the same row numbers cart_list shows under the same since/until/last/filter_by window). Needs a login (see auth_status).

NameTypeReqDescription
filter_by
last
select
since
slug
until

No output schema declared.

No examples provided.

download_query ~276

Download a saved query's open-access scenes in the background. Give the slug from save_query or list_queries. Downloads run to a fixed, server-configured root (BHOONIDHI_MCP_DOWNLOAD_ROOT, default ~/Downloads), under a per-slug folder — you cannot choose an arbitrary path. select narrows to specific scenes (1-based indices or full scene IDs); omit it for the whole query. force re-downloads files already present. Needs a login (see auth_status). Priced and on-order scenes are skipped — stage those with cart_add instead. Returns immediately with a job_id: the download runs on its own and does NOT depend on this conversation, so never block by sleeping and re-polling. To follow it hands-free, delegate a background watcher that loops download_wait on the job_id and reports back, keeping you free to keep talking; the result's 'handoff' note says so. File sizes are unknown until each transfer starts (the portal reveals them only then); once a download proves large, download_status/download_wait flag it and 'large_download' offers a standalone command that outlives this session. Interrupted downloads restart from scratch (no resume support).

NameTypeReqDescription
forceboolean
select
slugstringyes

No output schema declared.

No examples provided.

download_status ~137

Check a background download started by download_query (one-off). Give the job_id from download_query. Returns the live state: running (with bytes_downloaded, mb_downloaded, rate_mb_s, percent when the total size is known, and per-scene detail), completed (with per-scene outcomes), or failed (with the error). Use this for a single progress check. To follow a job to completion without tying up the conversation, use download_wait from a delegated watcher instead. Jobs exist only while the server runs; an unknown id returns status="not_found".

NameTypeReqDescription
job_idstringyes

No output schema declared.

No examples provided.

download_wait ~146

Wait for a background download to finish, then report — for a watcher. Give the job_id from download_query. Blocks inside the server and returns as soon as the download completes or fails, or after timeout_s (capped at 120s) with the latest progress if still running. This is the efficient way to follow a job: a delegated background watcher calls it in a loop and stops when status is "completed" or "failed", so the main conversation is never blocked on sleeps. Prefer this over repeated sleep+download_status. An unknown id returns status="not_found".

NameTypeReqDescription
job_idstringyes
timeout_snumber

No output schema declared.

No examples provided.

list_archive ~70

List every satellite and sensor the Bhoonidhi portal supports. Returns the vocabulary of valid satellites, sensors, and exact search tokens, with each product's resolution and date coverage. Call this to discover what can be searched. Set refresh=True to bypass the local cache.

NameTypeReqDescription
refreshboolean

No output schema declared.

No examples provided.

list_queries ~77

List every saved query as compact summaries. Returns each saved query's slug, name, date range, satellites, area of interest, scene count, and a plain-English availability summary — but not the full scene lists (call show_query for one query's scenes). Use this to find the slug for a query the user saved earlier.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

preview_download ~287

Dry-run a download for a search: show what would be fetched, no login. Takes the same arguments as search_scenes, plus out_dir (where files would go) and force (preview re-downloading files already present). It runs the search and predicts, per scene, what a real download would do: would_download (staged, ready), may_404 (open data but archived — attempted but may fail until requested on the portal), already_here / already_elsewhere (a matching file exists), or skipped_on_order / skipped_priced (needs the portal). Use this before telling a user to download, so they know how many scenes are actually fetchable. Nothing is downloaded and no login is used. File sizes are not known until a download starts (the portal exposes them only in the download response headers), and interrupted downloads cannot be resumed — both are stated in the result's disclaimers.

NameTypeReqDescription
end_datestringyes
forceboolean
lat
lon
maxx
maxy
minx
miny
out_dirstring
product
radius_km
satellitestringyes
sensor
start_datestringyes

No output schema declared.

No examples provided.

remove_query ~60

Delete a saved query by slug. Give the slug from save_query or list_queries. Removes the saved query from disk; the scenes themselves are unaffected. Returns status="not_found" if no query has that slug.

NameTypeReqDescription
slugstringyes

No output schema declared.

No examples provided.

resolve_location ~84

Resolve a place name to a centroid and bounding box. Turns a place like "Shillong" or "Loktak Lake" into latitude/longitude and a bounding box (minx, miny, maxx, maxy) that search_scenes can use as its area of interest. Returns found=False when the place can't be resolved.

NameTypeReqDescription
namestringyes

No output schema declared.

No examples provided.

save_query ~256

Persist a search as a saved query and return a reusable slug. Takes the same arguments as search_scenes, plus an optional name and description. Unlike search_scenes (which is stateless and leaves nothing behind), this saves the search on the portal so it can be acted on later: the returned slug is what downloading and cart staging key off. Call this once the user has confirmed a search returns the scenes they want, then hand the slug to the bhd CLI (download / cart) until those actions land in-server. Returns status="ok" with the slug and the shaped saved query. If the satellite is ambiguous or the request is invalid, returns the same status="ambiguous_satellite" / "invalid_request" shapes as search_scenes, and saves nothing.

NameTypeReqDescription
description
end_datestringyes
lat
lon
maxx
maxy
minx
miny
name
product
radius_km
satellitestringyes
sensor
start_datestringyes

No output schema declared.

No examples provided.

search_scenes ~442

Search Bhoonidhi scenes for a satellite over an area and date range. The satellite may be a casual name ("Sentinel-2", "cartosat"); it is matched to the portal's exact tokens, and a constellation expands to all its platforms. Dates are ISO (YYYY-MM-DD). Give the area either as a bounding box (minx/maxx/miny/maxy) or a point with radius (lat/lon/radius_km) — typically from resolve_location. sensor narrows to one sensor on the matched satellite(s) (e.g. "SSAR", "LISS3"); product further narrows to one product under that sensor (e.g. "GCOV", "L2C-Chlorophyll") — see list_archive for the exact sensor/product names each satellite carries. The search is stateless and needs no login. If the satellite name is ambiguous, returns status="ambiguous_satellite" with candidate names instead of guessing. Each scene carries an "availability": Ready (downloadable now), Archived (open data but may need a portal request first), OnOrder (must be requested), or Priced (must be purchased). The result includes a plain-English "summary" of these counts and a "how_to_act" block. Tell the user clearly when scenes are Archived, OnOrder, or Priced and what each needs. This search is stateless: to act on these scenes, call save_query with the same arguments to persist them and get a <slug>, then download_query (open data) or cart_add (on-order / priced) on that slug — both need a login (see auth_status). Downloads cannot be resumed if interrupted (the portal has no range support).

NameTypeReqDescription
end_datestringyes
lat
lon
maxx
maxy
minx
miny
product
radius_km
satellitestringyes
sensor
start_datestringyes

No output schema declared.

No examples provided.

show_query ~72

Return one saved query by slug, with its scenes. Give the slug from save_query or list_queries. Returns the full saved query: its selections, area of interest, date range, and shaped scenes with availability. Returns status="not_found" if no query has that slug.

NameTypeReqDescription
slugstringyes

No output schema declared.

No examples provided.

Common questions

What is the bhoonidhi-mcp server?

bhoonidhi-mcp is listed in the public MCP registry as io.github.geovicco-dev/bhoonidhi-mcp. Search, save, and download satellite scenes from ISRO's Bhoonidhi portal in natural language. This page covers its PyPI package (bhoonidhi-mcp).

Is the bhoonidhi-mcp server safe to use?

bhoonidhi-mcp scores 75 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the bhoonidhi-mcp server expose?

bhoonidhi-mcp exposes 15 tools: list_archive, resolve_location, search_scenes, preview_download, save_query, and 10 more. Their descriptions and schemas cost roughly 2,383 tokens of context every time the server is loaded.

Is the bhoonidhi-mcp server still maintained?

bhoonidhi-mcp is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.