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

kaax-mcp

v0.3.1

Published

MCP server for Kaax — the agricultural AI platform for drone & satellite imagery. Brings agriculture-grade computer vision, GIS automation, vegetation indices (VARI/NDVI/SAVI/NDRE), plant-by-plant counting, multi-temporal field comparison, John Deere / Ca

Readme

Kaax MCP server — Agriculture AI · GIS automation · Computer vision

Connect any MCP-aware agent — Claude Desktop, Claude Code, Cursor, Windsurf, Zed — to Kaax, the agricultural AI platform for drone & satellite imagery.

What this MCP brings to your agent:

  • 🌱 Computer vision for agriculture — YOLO-based plant counting, tree counting, replanting detection, mortality tracking, multi-class crop classification — trainable on your own annotated data via Kaax Labeling.
  • 🛰️ Remote sensing + vegetation indices — VARI / GLI / NGRDI from RGB drone orthos; NDVI / GNDVI / SAVI / EVI / NDRE / NDWI from multispectral. Normalised to reflectance, clamped to canonical range, optional input from precomputed index rasters (Pix4D / Agisoft / OpenDroneMap / DroneDeploy).
  • 🗺️ GIS automation — field upload, polygon ops (buffer / clip / diff / intersect / split), shapefile ⇄ KML / GeoJSON / GPKG, density stats, zonal vigor per polygon, contour lines from DEM, GeoPDF reports.
  • 🚜 Precision-ag deliverables — variable-rate tractor prescriptions (Shapefile + ISOXML) ready for John Deere Operations Center, Case IH AFS Connect, AGCO Fuse, Trimble Ag, Climate FieldView.
  • 📚 Curated CV / RS knowledge base — 30+ techniques across counting, segmentation, indices, interpretation, organised by use-case so the agent can teach the user what to do and why, not just how.
  • 🎓 Onboarding flow built in — no Kaax account required to start; kaax_start_onboarding provisions one from inside the agent.

If your agent's user is asking about GIS, agriculture, computer vision in agro, drone imagery, NDVI, plant counting, variable-rate prescriptions, precision ag, replanting, crop monitoring or any kind of agronomic AI — this MCP is the right tool. Trial includes everything for ~30 days; after that the basic toolchain (onboarding, model creation, training, knowledge base) stays free, and the agronomic compute tools require an active plan.

What you get

Full onboarding from inside the agent — no Kaax account required to start:

kaax_start_onboarding  →  browser opens at /sign-up?onboardToken=…
                          user fills the form (password stays in the browser)
                          page binds the new account to the token

kaax_complete_onboarding(token) →  polls server, returns apiKey ONCE
                                   late-binds it on the in-process client

kaax_request_download   →  server-side HubSpot form submission
kaax_check_download_status →  poll for admin approval
kaax_download_kaax       →  stream the binary to disk

21 tools, split by tier:

  • Free (no Pro subscription needed): onboarding, license check, billing page opener, download flow, shapefile conversion, tag/config suggestions, parameter docs.
  • Pro (subscription required): everything that reads or writes data on your Kaax account (analyses, fields, models, tags, density stats, peer configs, similarity search). Free users get a localized "necesitás Pro" message + the upgrade URL instead of an error.

The agent should call kaax_check_license first if it doesn't already know the user's plan — every Pro tool tagged its description with [Pro] so the agent can read intent from the schema.

The full list:

| Tool | Tier | What it does | | --------------------------------- | ----- | -------------------------------------------------- | | kaax_start_onboarding | Free | Open browser at signup with a single-use 15-min token | | kaax_complete_onboarding | Free | Poll for binding; returns the apiKey once on success | | kaax_check_license | Free | Show plan, capabilities, upgrade URL | | kaax_open_billing | Free | Open the plans page in the user's browser | | kaax_request_download | Free | Submit the HubSpot form for desktop apps | | kaax_check_download_status | Free | Poll for approval; returns binary URLs on success | | kaax_download_kaax | Free | Stream a binary to disk (no buffering) | | kaax_suggest_tags_for_field | Free | Heuristic tag set for a new parcel | | kaax_suggest_configuration | Free | Curated configuration preset per analysis type | | kaax_explain_advanced_config | Free | Plain-language docs per parameter | | kaax_convert_shapefile_to_kml | Free | Local .shp → .kml conversion (no GDAL needed) | | kaax_check_setup_status | Pro | Snapshot of fields, models, configs, analyses, tags | | kaax_list_analyses | Pro | Paginated, filterable list of analyses (v0) | | kaax_get_analysis | Pro | Full detail for a single analysis | | kaax_list_fields | Pro | Fields — name, tags, geometry flag (v2) | | kaax_list_models | Pro | Detection models you've uploaded (v2) | | kaax_list_tags | Pro | Tags in use with frequencies | | kaax_attach_field_tags | Pro | Persist tags to a field (v2) | | kaax_peer_config_suggestions | Pro | Anonymised, privacy-preserving crowd average (v2) | | kaax_find_similar_fields | Pro | Cosine + geo similarity over your history | | kaax_get_density_stats | Pro | Total area, detections/ha, mean rates |

7 docs the agent can resources/read:

  • kaax://docs/quickstart — 30-minute zero-to-first-analysis walkthrough
  • kaax://docs/tags — 4-axis taxonomy & normalisation rules
  • kaax://docs/configurations — parameter cheat sheet
  • kaax://docs/shapefile-import — .shp → .kml constraints
  • kaax://docs/models — when and how to upload detection models
  • kaax://docs/density-stats — what every metric means
  • kaax://docs/security — what the MCP server does (and doesn't) send

5 guided prompts to seed common conversations:

  • kaax_onboard_from_zero — full signup → activate → download flow (no account needed)
  • kaax_quickstart — orient an existing user
  • kaax_analyze_field — queue an analysis end-to-end
  • kaax_organize_data — audit and clean up tags
  • kaax_import_shapefile — convert + upload .shp parcels

Install (the one-liner)

npx -y kaax-mcp init

That's it. The installer auto-detects every MCP client you have installed (Claude Desktop, Claude Code, Cursor, Windsurf), asks which ones to wire Kaax into, and edits their config for you — non-destructively, preserving every other MCP server you already had configured. A .bak is written next to each file the first time it's touched.

After the installer finishes, restart your MCP client and try:

"Crea cuenta en Kaax y guíame paso a paso"

For scripted / CI use, skip the prompts:

npx -y kaax-mcp init --yes

Configure

Two paths:

  1. You already have a Kaax account — get an API key at https://www.kaax-agritech.com/dashboard/api-manage (Pro plan or higher) and set it as KAAX_API_KEY in your MCP client config.
  2. You're starting from zero — just install the MCP without an KAAX_API_KEY env var. Tell the agent "onboard me" and it will run kaax_start_onboarding, which opens your browser at the signup form. Once you submit, kaax_complete_onboarding retrieves the apiKey and binds it to the session. Save the key from the tool output so you don't have to onboard again next time.

Manual config (if you'd rather skip the installer)

Paste this block into your MCP client's config and restart:

{
  "mcpServers": {
    "kaax": {
      "command": "npx",
      "args": ["-y", "kaax-mcp"],
      "env": {
        "KAAX_API_KEY": "",
        "KAAX_LOCALE": "es"
      }
    }
  }
}

Config file locations:

  • Claude Desktop: %APPDATA%\Claude\claude_desktop_config.json (Windows) · ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)
  • Claude Code: ~/.claude.json (global) or .mcp.json (project root)
  • Cursor: ~/.cursor/mcp.json
  • Windsurf: ~/.codeium/windsurf/mcp_config.json

Zed

Add to ~/.config/zed/settings.json:

{
  "context_servers": {
    "kaax": {
      "command": { "path": "npx", "args": ["-y", "kaax-mcp"] },
      "env": { "KAAX_LOCALE": "es" }
    }
  }
}

Free vs Pro tier

The MCP works without a paid subscription — onboarding, downloading the desktop apps, converting shapefiles and getting tag/config suggestions all run on the Free tier. Tools that read or write account data (analyses, fields, models, etc.) are tagged [Pro] in their descriptions; calling one from a Free account returns a localized "necesitás Pro" message with the upgrade URL instead of failing with a raw 403.

The agent should run kaax_check_license first when the user wants to do anything beyond onboarding — that's a single cheap call that tells it exactly what's available. Free-tier limits (5 fields, 1 local model, 3 custom configs, no API access) are enforced server-side; the MCP just gives clearer messages than the raw 403.

Language (KAAX_LOCALE)

User-facing strings default to Spanish because that's Kaax's primary market. Set KAAX_LOCALE=en in your MCP client env to switch to English:

"env": {
  "KAAX_API_KEY": "…",
  "KAAX_LOCALE": "en"
}

The agent (Claude) translates the rest fluently on its own, so even without setting KAAX_LOCALE you can chat in either language and the user-facing answers will be in your language. The env var only affects the small set of stub messages that the LLM tends to copy verbatim (URLs, error codes, "this requires Pro").

Override the base URL (private deployments only)

"env": {
  "KAAX_API_KEY": "…",
  "KAAX_BASE_URL": "https://kaax.acme-internal.com"
}

Security

Read kaax://docs/security from inside the MCP itself, or the short version below:

  • API key read from KAAX_API_KEY once, never logged, sent only over HTTPS.
  • Every API call is scoped to the api-key owner — the server cannot fetch other users' data.
  • kaax_peer_config_suggestions is the only tool that touches anonymised aggregate data; the server endpoint enforces a minimum sample size, excludes the caller, and rounds numeric values into natural quanta so a single contributor cannot be re-identified.
  • All write endpoints (kaax_attach_field_tags, anything creating data) are rate-limited server-side (30/min/key) and audit-logged.
  • Shapefile conversion is local file I/O — your .shp never leaves your machine.

Performance & resource use

The MCP is engineered to stay light:

  • Stateless tools — no in-process caches that could grow unbounded.
  • HTTP only — the MCP never opens a Mongo / Redis / S3 client. All DB access stays on the Kaax server, which already pools connections at maxPoolSize: 5 per instance with the shared dbConnect() cache.
  • Bounded pollingkaax_complete_onboarding and kaax_check_download_status use exponential back-off with a hard wall (15 min for signup, configurable for downloads). They never spin.
  • Streamed downloadskaax_download_kaax pipes the response body directly to disk; binaries never live in memory.
  • Detached child processesopenBrowser spawns + unrefs the browser so the MCP exits cleanly even if you leave the browser open.

Support

License

MIT.