npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

bharatlas-mcp

v1.0.3

Published

MCP server for India's open geo data. Query layers, locate points, find nearby features, filter and group data.

Readme

bharatlas-mcp

npm license: MIT

Ask questions about India's geo data in natural language. This MCP server connects any LLM to bharatlas: open-licensed layers covering admin boundaries (state to village), city wards, forests, wildlife sanctuaries, rivers, canals, reservoirs, dams, groundwater (aquifers, extraction), eco-sensitive zones, agro-climatic and biogeographic zones, seismic zones, flood history, highways, airports, health facilities, pincodes, electoral constituencies, and community submissions.

Install

Add to your MCP client config:

{
  "mcpServers": {
    "bharatlas": {
      "command": "npx",
      "args": ["-y", "bharatlas-mcp"]
    }
  }
}

Where to put it:

| Client | Config file | |--------|------------| | Claude Code | .mcp.json (project root) or ~/.claude.json | | Claude Desktop | ~/Library/Application Support/Claude/claude_desktop_config.json | | Cursor | ~/.cursor/mcp.json | | Windsurf | ~/.codeium/windsurf/mcp_config.json | | VS Code | .vscode/mcp.json |

Tools

| Tool | What it does | |------|-------------| | list_layers | Discover layers by category, level, source, or text search | | get_layer_schema | Column names, types, distinct values. Call before querying. | | query_layer | Filter, select, group_by on any column. Runtime parquet reads. | | locate | Point-in-polygon: what state, district, ward, zone is this point in? | | nearby | Find features within a radius. Works for points, polygons, and lines. | | get_layer_detail | Download URLs in 5 formats (parquet, pmtiles, geojson, kml, shapefile) | | list_categories | Browse categories with layer counts | | list_submissions | Community-contributed layers under open licenses |

What you can ask

Counting and filtering

  • "How many national parks vs wildlife sanctuaries?" (101 vs 560)
  • "How many villages in Bengaluru Urban district?" (949)
  • "How many health facilities in Bihar?" (8,363: 3,232 sub-centres, 591 PHCs, 74 CHCs)
  • "How many wards does Chennai have vs Pune?" (200 vs 58)

Spatial

  • "What state, district, seismic zone is Bengaluru in?" (Karnataka, Bengaluru Urban, Zone II)
  • "Reservoirs within 50km of Bengaluru?" (12 found)
  • "Wildlife sanctuaries near Mysuru?" (Ranganathittu 15km, Nagarahole NP 60km)

Cross-layer

  • "Which airports in Karnataka are near water bodies?" (Hubballi: Unkal Lake 2.3km, 14 rivers)
  • "Which blocks are in district 571?" (10 blocks: Kunigal, Tumakuru, Gubbi...)
  • "Which villages in Madhya Pradesh are in eco-sensitive zones?" (narrows by district, then locates)

How it works

Thin wrapper over the bharatlas REST API. Each tool call becomes one or more API requests to Cloudflare Workers that read parquet files and PMTiles directly from R2 at runtime. No pre-computation, no API key, no auth.

The server sends instructions to the LLM at connection time that teach:

  • Schema-first pattern: check column names and sample values before querying (column names vary: state vs State_LGD vs stname)
  • Source preference: LGD for admin boundaries, with SOI/Bhuvan/geoBoundaries as alternates
  • Concept-to-layer mapping: "water bodies" = rivers + canals + reservoirs + wetlands + ramsar sites + dams; "groundwater" = aquifers + extraction stage
  • Spatial join workflow: locate for context, query for data, nearby for proximity

Links

License

MIT. Data: each layer carries its own open license (CC0, CC-BY, ODbL, GODL-India).