Skip to main content
Glama

bhoonidhi-mcp

License: MIT

Сервер MCP, который позволяет ИИ-агенту искать, сохранять, скачивать и откладывать в корзину спутниковые сцены с портала Bhoonidhi Browse & Order (NRSC) на естественном языке. Агент может превратить фразу вроде «Sentinel-2 над Шиллонгом в прошлом январе» в реальный поиск по живому порталу, честно увидеть, что доступно для скачивания, сохранить поиск для повторного использования, посмотреть, что принесёт скачивание, и — после входа в систему — скачать сцены открытого доступа или отложить их в корзину.

Это тонкий адаптер над SDK bhoonidhi-downloader — тем же клиентом, который использует CLI bhd, — поэтому логика портала не дублируется.

Статус

Поиск и сохранение без входа; скачивание и корзина — со входом. Инструменты обращаются к полному архиву 41 спутниковой миссии и 79 сенсоров, ищут по живому порталу и сохраняют запросы в переиспользуемые slug — всё без учётных данных. Для скачивания сцен открытого доступа и добавления сцен в корзину Bhoonidhi требуется вход, который выполняется отдельно, с помощью bhd auth login (сервер переиспользует эту сессию).

Инструменты

Инструмент

Что делает

Вход

list_archive

Словарь спутников, сенсоров и поисковых токенов, поддерживаемых порталом, в реальном времени с Bhoonidhi.

нет

resolve_location

Превращает название места («Loktak Lake») в центроид и ограничивающую рамку. Отклоняет входные данные, которые не являются названиями мест.

нет

search_scenes

Поиск сцен на естественном языке по области и диапазону дат. Приводит неформальное название спутника к точным токенам и сообщает доступность каждой сцены (Ready / Archived / OnOrder / Priced). Не хранит состояние — ничего не сохраняется.

нет

preview_download

Сухой прогон: показывает, что принесёт скачивание результатов, а что будет пропущено, до начала скачивания.

нет

save_query

Сохраняет поисковый запрос (те же аргументы, что и search_scenes) в переиспользуемый slug, чтобы позже можно было скачать его или добавить в корзину.

нет

list_queries

Перечисляет сохранённые запросы в виде компактных сводок: slug, имя, диапазон дат, спутники, область и доступность.

нет

show_query

Возвращает один сохранённый запрос по slug и его сцены.

нет

remove_query

Удаляет сохранённый запрос по slug.

нет

auth_status

Сообщает, настроен ли вход. Никогда не обрабатывает пароль или токен.

нет

download_query

Скачивает сцены открытого доступа из сохранённого запроса в фоне, в фиксированный корневой каталог, заданный на сервере. Немедленно возвращает job_id.

да

download_status

Одноразовая проверка фонового скачивания по job_id: скачанные байты, скорость передачи, процент, когда размер известен, и детали по каждой сцене.

нет

download_wait

Блокирует выполнение до завершения скачивания (или предельного таймаута), затем сообщает результат — эффективный примитив, на котором фоновый наблюдатель строит цикл ожидания.

нет

cart_add

Добавляет сцены сохранённого запроса в корзину (маршрутизирует каждую на ready / on-order / priced).

да

cart_list

Перечисляет сцены, находящиеся в корзине.

да

cart_remove

Удаляет сцены из корзины.

да

Доступность имеет значение: сцена OpenData не обязательно готова к скачиванию. search_scenes и preview_download различают Ready (можно скачать сейчас) и Archived (открытые данные, но на портале может потребоваться запрос), чтобы агент не обещал лишнего.

Скачивание выполняется в фоне, независимо от диалога: download_query сразу возвращает job_id, и передача продолжается сама. Проверьте прогресс один раз с помощью download_status — он сообщает скачанные байты, скорость передачи и процент, когда размер известен, — или доведите задачу до конца с помощью download_wait, который блокирует выполнение до завершения (или до предельного таймаута), чтобы агент мог поручить фоновому наблюдателю и продолжать разговор, а не крутиться в цикле ожидания. Задача живёт только пока жив процесс сервера, поэтому, если скачивание оказывается большим, статус рекомендует выполнить отдельную команду bhd query download <slug>, которая останется у вас.

Установка

Сервер — это Python-пакет с консольной точкой входа bhoonidhi-mcp. Установите его из исходников с помощью uv:

git clone https://github.com/geovicco-dev/bhoonidhi-mcp
cd bhoonidhi-mcp
uv sync

Эта команда открывает bhoonidhi-mcp по пути .venv/bin/bhoonidhi-mcp. Сервер работает через stdio и запускается MCP-клиентом — вы указываете клиенту на эту команду.

Подключение клиента

Каждому MCP-клиенту нужно одно и то же: команда запуска. Используйте абсолютный путь к точке входа (надёжнее всего для GUI- и CLI-клиентов):

/path/to/bhoonidhi-mcp/.venv/bin/bhoonidhi-mcp

Claude Desktop / Claude Code

claude_desktop_config.json (или claude mcp add):

{
  "mcpServers": {
    "bhoonidhi": {
      "command": "/path/to/bhoonidhi-mcp/.venv/bin/bhoonidhi-mcp",
      "args": []
    }
  }
}

OpenCode

~/.config/opencode/opencode.json:

{
  "mcp": {
    "bhoonidhi": {
      "type": "local",
      "command": ["/path/to/bhoonidhi-mcp/.venv/bin/bhoonidhi-mcp"],
      "enabled": true
    }
  }
}

MCP Inspector (чтобы попробовать без агента)

npx @modelcontextprotocol/inspector /path/to/bhoonidhi-mcp/.venv/bin/bhoonidhi-mcp

Пример

Спросите агента простым языком:

«Какие сцены Sentinel-2 есть над Шиллонгом за январь 2024, и сколько из них я реально могу скачать?»

Агент вызывает resolve_location для Шиллонга, затем search_scenes и отвечает по результатам — например, что все сцены имеют статус Archived (открытые данные, но каждая может потребовать запроса на портале перед скачиванием), а не утверждает, что все готовы.

Примеры запросов для проверки

Скопируйте их в любого подключённого агента, чтобы понять, что он умеет.

Изучение архива

  • «Какие спутники и сенсоры есть у Bhoonidhi?»

  • «Какие сенсоры установлены на ResourceSat-2A и с каким разрешением?»

  • «Есть ли у Bhoonidhi радиолокационные спутники?»

Поиск сцен

  • «Найди сцены Sentinel-2 над Шиллонгом за январь 2024.»

  • «Покажи снимки Cartosat в радиусе 20 км от Бенгалуру за первую половину 2024.»

  • «Есть ли сцены Sentinel-1 над Сундарбаном за март 2024?»

  • «Какие снимки Landsat-8 покрывают национальный парк Казиранга прошлой зимой?»

  • «Найди сцены MODIS над Качским Ранном за декабрь 2023.»

Проверка доступности для скачивания

  • «Из этих сцен Sentinel-2 сколько я могу скачать прямо сейчас?»

  • «Какие из них нужно заказать или оплатить?»

Предпросмотр скачивания

  • «Покажи, что принесёт скачивание этих сцен.»

Сохранение поиска для повторного использования

  • «Сохрани этот поиск Sentinel-2, чтобы скачать его позже.»

  • «Покажи мои сохранённые поиски.»

  • «Покажи, что в поиске, который я сохранил как

  • «Удали сохранённый поиск

Скачивание и корзина (нужен вход — см. ниже)

  • «Я вошёл в Bhoonidhi?»

  • «Скачай сцены открытого доступа из моего сохранённого поиска

  • «Как идёт скачивание?»

  • «Скачай и сообщи, когда закончишь, — я продолжу работать.»

  • «Добавь платные сцены из в мою корзину.»

  • «Что у меня в корзине на этой неделе?»

Вход (для скачивания и корзины)

Поиск, сохранённые запросы и предпросмотры не требуют учётных данных. Скачивание сцен и добавление их в корзину — требуют. Выполните вход один раз, вне MCP — сервер переиспользует ту же сессию, которую записывает CLI bhd:

bhd auth login

MCP-сервер никогда не принимает имя пользователя или пароль в качестве аргумента инструмента, и auth_status никогда не возвращает ваш токен. Для headless-установки без интерактивного входа можно вместо этого задать BHOONIDHI_USERNAME / BHOONIDHI_PASSWORD в окружении сервера; сервер читает их только для установления сессии.

Конфигурация

Задаётся переменными окружения (все необязательные):

Variable

Default

Purpose

BHOONIDHI_MCP_GEOCODER_USER_AGENT

bhoonidhi-mcp/0.1

User-Agent, отправляемый в 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

(не задано)

Необязательный headless-вход. Предпочтительно bhd auth login; заполняйте эти переменные вне MCP, никогда не коммитьте их.

Разработка

uv sync
uv run pytest        # test suite
uv run ruff check .  # lint

Лицензия

MIT — см. LICENSE.

-
license - not tested
-
quality - not tested
A
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • MCP server for Mireye Earth — federal-source-cited geospatial data for any MCP-aware agent.

  • MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.

  • MCP server for Japan geodata: cadastral lot numbers (chiban) and reverse geocoding, for AI agents.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/geovicco-dev/bhoonidhi-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server