protogrid

Search / io.github.Maz2580/geospark

GeoSpark

R0· no sign-in

Verifiable geospatial tools: distances, topology, isochrones, Overture Maps, with sources.

v0.8.0 · active · repository · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality90strong
Trust97of 100
Uptime, 30 days98%
Latency p50921 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "geospark": {
      "type": "http",
      "url": "https://geospark.terrascout.app/mcp"
    }
  }
}
claude mcp add --transport http geospark https://geospark.terrascout.app/mcp
[mcp_servers.geospark]
url = "https://geospark.terrascout.app/mcp"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "geospark": {
      "type": "remote",
      "url": "https://geospark.terrascout.app/mcp",
      "enabled": true
    }
  }
}
{
  "mcpServers": {
    "geospark": {
      "type": "http",
      "url": "https://geospark.terrascout.app/mcp"
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=geospark&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vZ2Vvc3BhcmsudGVycmFzY291dC5hcHAvbWNwIn0%3D"
}
{
  "servers": {
    "geospark": {
      "type": "http",
      "url": "https://geospark.terrascout.app/mcp"
    }
  }
}
{
  "mcpServers": {
    "geospark": {
      "httpUrl": "https://geospark.terrascout.app/mcp"
    }
  }
}
extensions:
  "geospark":
    enabled: true
    name: "geospark"
    type: streamable_http
    uri: "https://geospark.terrascout.app/mcp"
    timeout: 300

Quality 90 / 100strong

protocol88 · weight 25
  • pass
    protocol.modernsupports 2026-07-28 (server/discover)
  • pass
    protocol.statelessanswers without a session
  • pass
    protocol.transportstreamable HTTP
  • warn
    protocol.list_ttltools/list declares ttlMs 0, so clients re-fetch it on every use
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene100 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • pass
    tools.description_lengthdescriptions are concise
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations21 of 21 tools declare readOnlyHint or destructiveHint
  • pass
    tools.directory_hintsevery tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
  • pass
    tools.token_costabout 4,897 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability75 · weight 15
  • warn
    stability.changes6 tool changes in 30 days
  • pass
    stability.rug_pullno tool changed its meaning under the same name
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

21 tools, about 4,897 tokens to load them all · tool set 3483dd95af53 · tools last changed 2026-10-25 · checked 2026-11-07 17:28 UTC

Tool changes

  • line_of_sightadded

    Whether A and B can see each other over the terrain (Copernicus 30 m DEM, curvature and refraction), the minimum clearance and where it occurs; with frequency_mhz, the first Fresnel zone clearance of a radio link (60% clear is the usual rule).

  • terrain_horizonadded

    The skyline the terrain makes around a point: for each azimuth, the elevation angle of the horizon and how far away the blocking terrain is (Copernicus 30 m DEM, Earth curvature and refraction). Use for solar-panel shading, valley sunlight, or what hills hide. ~10-60 s.

  • sun_timesadded

    Sunrise, solar noon, sunset and day length on a date for a flat horizon; with terrain=True, also the hours of direct sun once hills are taken into account.

  • sun_positionadded

    The Sun's apparent elevation and azimuth (from true north) at a place and time, and the shadow a vertical object casts on level ground (NOAA solar position, refraction included).

  • convert_heightadded

    Convert a height between the ellipsoid (GNSS, drones) and a national height datum with the official geoid model: AHD (AUSGeoid2020), ODN (OSGM15), NZVD2016 (NZGeoid2016), NAVD88 (GEOID18), or global EGM2008. Never estimate a geoid separation from memory: it is often tens of metres and varies by metres across a region.

  • transform_coordinatesadded

    Convert coordinates between CRSs as the official transformation does: GDA94 to GDA2020, MGA zones, British National Grid (OSTN15), NAD27 to NAD83 (NADCON), ITRF at an epoch, and any other EPSG pair. Uses national grids (downloaded once), refuses PROJ's ballpark approximations, and returns the operation and its stated accuracy. Use this instead of applying datum parameters yourself.

Full history: list_changes · trend: quality JSON.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 97 / 100

provenance90
liveness99
freshness100
hygiene100

+repository +namespace-matches-repo +website +reachable +uptime-98% +updated-16d-ago

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://geospark.terrascout.app/mcp streamable-httpnoneyes98%921 ms2026-07-282026-11-07

Tools (21)

calculate_distanceread-onlyExact geodesic distance between two places or geometries on the WGS84 ellipsoid. Use for any "how far" question instead of estimating. For NAMED places pass place_a and place_b; the server geocodes them, so never type coordinates for a place yourself. Use point_a/point_b only for coordinates the user gave or another tool returned. For lines and polygons the distance is between their nearest points. Returns metres and kilometres.
check_spatial_relationshipread-onlyGround-truth topology: does geometry_a <relationship> geometry_b? Use instead of guessing containment, overlap or adjacency. Invalid geometries (for example self-intersecting polygons) are refused with the reason.
convert_heightread-onlyConvert a height between the ellipsoid (GNSS, drones) and a national height datum with the official geoid model: AHD (AUSGeoid2020), ODN (OSGM15), NZVD2016 (NZGeoid2016), NAVD88 (GEOID18), or global EGM2008. Never estimate a geoid separation from memory: it is often tens of metres and varies by metres across a region.
geocoderead-onlyFind coordinates for an address or place name (OpenStreetMap Nominatim). Check `geospark.warnings` for ambiguous names (e.g. "Springfield") and ask the user which one they mean, or add a region.
get_active_firesread-onlySatellite active-fire detections near a point (NASA FIRMS; the server needs a FIRMS_MAP_KEY).
get_air_qualityread-onlyLatest PM2.5, NO2, O3 from the nearest monitoring stations (OpenAQ; the server needs an OPENAQ_API_KEY), with each station's data licence.
get_elevationread-onlyGround elevation in metres (Copernicus GLO-30, Open Elevation fallback), with its vertical datum and accuracy.
get_weatherread-onlyCurrent weather and a daily forecast for a point (Open-Meteo, no key needed).
isochroneread-onlyWhere can you get to from a point within N minutes on foot, by bike or by car? Returns one polygon per contour with its geodesic area (Valhalla over OpenStreetMap).
line_of_sightread-onlyWhether A and B can see each other over the terrain (Copernicus 30 m DEM, curvature and refraction), the minimum clearance and where it occurs; with frequency_mhz, the first Fresnel zone clearance of a radio link (60% clear is the usual rule).
location_reportread-onlyA dossier for a place: address, elevation, weather, and nearby amenities with exact distances, as a GeoJSON map layer listing every data source used. Takes ~10-30 s.
overture_featuresread-onlyOpen global map data from Overture Maps, no API key: points of interest (with categories), building footprints (height, floors, geodesic footprint area), road and path segments (geodesic length), or `divisions`, the administrative areas containing the point (country, region, city, neighbourhood). Results are nearest first, with distances in metres. Can take 5-20 s on a cold cache.
reverse_geocoderead-onlyFind the address or place at a coordinate (OpenStreetMap Nominatim).
routeread-onlyDriving route between two points (OSRM over OpenStreetMap): line geometry, distance in metres and duration in seconds.
select_siteread-onlyRank candidate sites in an area by geodesic distance to amenities you want nearby and away from ones to avoid (OpenStreetMap data). Takes ~10-30 s.
spatial_operationread-onlyCompute a buffer (shape-preserving, metres), geodesic area or length, centroid or convex hull. Returns the resulting geometry as GeoJSON with its measurements and units.
sun_positionread-onlyThe Sun's apparent elevation and azimuth (from true north) at a place and time, and the shadow a vertical object casts on level ground (NOAA solar position, refraction included).
sun_timesread-onlySunrise, solar noon, sunset and day length on a date for a flat horizon; with terrain=True, also the hours of direct sun once hills are taken into account.
terrain_horizonread-onlyThe skyline the terrain makes around a point: for each azimuth, the elevation angle of the horizon and how far away the blocking terrain is (Copernicus 30 m DEM, Earth curvature and refraction). Use for solar-panel shading, valley sunlight, or what hills hide. ~10-60 s.
transform_coordinatesread-onlyConvert coordinates between CRSs as the official transformation does: GDA94 to GDA2020, MGA zones, British National Grid (OSTN15), NAD27 to NAD83 (NADCON), ITRF at an epoch, and any other EPSG pair. Uses national grids (downloaded once), refuses PROJ's ballpark approximations, and returns the operation and its stated accuracy. Use this instead of applying datum parameters yourself.
travel_time_matrixread-onlyNetwork travel time (minutes) and distance (metres) from each origin to each destination. Note: points here are [latitude, longitude] pairs.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "io.github.Maz2580/geospark",
  "title": "GeoSpark",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://geospark.terrascout.app/mcp",
      "type": "streamable-http"
    }
  ],
  "version": "0.8.0",
  "repository": {
    "url": "https://github.com/Maz2580/geospark",
    "source": "github"
  },
  "websiteUrl": "https://geospark.terrascout.app",
  "description": "Verifiable geospatial tools: distances, topology, isochrones, Overture Maps, with sources."
}