GeoSpark
Server Details
Verifiable geospatial tools: distances, topology, isochrones, Overture Maps, with sources.
- Status
- Healthy
- Uptime
- 100.0% over the last 24 hours
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- Maz2580/geospark
- GitHub Stars
- 20
- Server Listing
- geospark
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 21 tools
Most tools target a distinct resource or operation, and the descriptions actively disambiguate the risky pairs (calculate_distance for geodesic vs route/travel_time_matrix for network distance; geocode vs reverse_geocode; get_elevation vs convert_height). Some residual overlap remains in the place-insight cluster — location_report, overture_features and select_site all surface nearby amenities/distances — and terrain_horizon vs line_of_sight are close cousins, but the descriptions give enough signal to choose.
Names are uniformly snake_case and mostly verb_noun (calculate_distance, get_elevation, transform_coordinates, check_spatial_relationship). A minority are bare nouns with no verb (geocode, isochrone, route, sun_times, terrain_horizon, overture_features), which is a minor convention break but still readable and unambiguous.
21 tools is on the heavy side; while the geospatial domain is genuinely broad (geodesy, routing, weather, solar, POI, imagery), each tool is a distinct capability, so no tool is clearly redundant. It sits at the upper edge where an agent must scan many similar-sounding options before committing.
Coverage is unusually broad: geocoding both ways, geodesic and network measurement, topology predicates, geometric operations, elevation, datum/CRS transformation, geoid heights, weather/air quality/fires, and solar analysis. Gaps are minor — no polygon overlay ops (clip/intersection/union), no multi-waypoint routing, and analysis results are GeoJSON-only with no map rendering — but all core workflows are reachable.
Available Tools
21 toolscalculate_distanceGeodesic distanceARead-onlyIdempotentInspect
Exact 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.
Inputs: place_a, place_b, point_a, point_b. Returns: units, places, status, warnings, +3 more
check_spatial_relationshipTopological relationshipARead-onlyIdempotentInspect
Ground-truth topology: does geometry_a geometry_b?
Use instead of guessing containment, overlap or adjacency. Invalid geometries (for
example self-intersecting polygons) are refused with the reason.
Inputs: geometry_a (required), geometry_b (required), relationship (required). Returns: holds, units, status, warnings, +2 more
convert_heightConvert height (geoid models)ARead-onlyIdempotentInspect
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.
Inputs: height_m (required), latitude (required), longitude (required), to_reference (required), +1 more. Returns: grids, units, method, status, +8 more
geocodeGeocode a placeARead-onlyIdempotentInspect
Find 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.
Inputs: query (required), limit. Returns: An RFC 7946 GeoJSON FeatureCollection; `geospark` holds status, units, warnings…
get_active_firesActive firesARead-onlyIdempotentInspect
Satellite active-fire detections near a point (NASA FIRMS; the server needs a FIRMS_MAP_KEY).
Inputs: latitude (required), longitude (required), days. Returns: query, units, status, channel, +4 more
get_air_qualityAir qualityARead-onlyIdempotentInspect
Latest PM2.5, NO2, O3 from the nearest monitoring stations (OpenAQ; the server needs an OPENAQ_API_KEY), with each station's data licence.
Inputs: latitude (required), longitude (required). Returns: query, units, status, channel, +4 more
get_elevationElevationARead-onlyIdempotentInspect
Ground elevation in metres (Copernicus GLO-30, Open Elevation fallback), with its vertical datum and accuracy.
Inputs: latitude (required), longitude (required). Returns: units, status, quality, latitude, +6 more
get_weatherWeatherARead-onlyIdempotentInspect
Current weather and a daily forecast for a point (Open-Meteo, no key needed).
Inputs: latitude (required), longitude (required), forecast_days. Returns: query, units, status, channel, +4 more
isochroneIsochrone (reachable area)BRead-onlyIdempotentInspect
Where 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).
Inputs: latitude (required), longitude (required), mode, minutes. Returns: An RFC 7946 GeoJSON FeatureCollection; `geospark` holds status, units, warnings…
line_of_sightLine of sightARead-onlyIdempotentInspect
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).
Inputs: lat_a (required), lat_b (required), lon_a (required), lon_b (required), +3 more. Returns: units, method, status, fresnel, +7 more
location_reportLocation reportARead-onlyIdempotentInspect
A 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.
Inputs: location (required), radius_m. Returns: An RFC 7946 GeoJSON FeatureCollection; `geospark` holds status, units, warnings…
overture_featuresOverture Maps featuresARead-onlyIdempotentInspect
Open 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.
Inputs: theme (required), latitude (required), longitude (required), limit, +2 more. Returns: An RFC 7946 GeoJSON FeatureCollection; `geospark` holds status, units, warnings…
reverse_geocodeReverse geocodeARead-onlyIdempotentInspect
Find the address or place at a coordinate (OpenStreetMap Nominatim).
Inputs: latitude (required), longitude (required). Returns: An RFC 7946 GeoJSON FeatureCollection; `geospark` holds status, units, warnings…
routeDriving routeARead-onlyIdempotentInspect
Driving route between two points (OSRM over OpenStreetMap): line geometry, distance in metres and duration in seconds.
Inputs: to_latitude (required), to_longitude (required), from_latitude (required), from_longitude (required). Returns: An RFC 7946 GeoJSON FeatureCollection; `geospark` holds status, units, warnings…
select_siteSite selectionARead-onlyIdempotentInspect
Rank 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.
Inputs: within (required), near, avoid, radius_m, +1 more. Returns: An RFC 7946 GeoJSON FeatureCollection; `geospark` holds status, units, warnings…
spatial_operationGeometry operationARead-onlyIdempotentInspect
Compute a buffer (shape-preserving, metres), geodesic area or length, centroid or convex hull.
Returns the resulting geometry as GeoJSON with its measurements and units.
Inputs: geometry (required), operation (required), radius_m. Returns: An RFC 7946 GeoJSON FeatureCollection; `geospark` holds status, units, warnings…
sun_positionSun position and shadowARead-onlyIdempotentInspect
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).
Inputs: time (required), latitude (required), longitude (required), tz, +1 more. Returns: time, units, method, status, +9 more
sun_timesSunrise, sunset and hours of sunARead-onlyIdempotentInspect
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.
Inputs: date (required), latitude (required), longitude (required), tz, +1 more. Returns: date, units, method, status, +11 more
terrain_horizonTerrain horizonARead-onlyIdempotentInspect
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.
Inputs: latitude (required), longitude (required), step_deg, max_distance_m, +1 more. Returns: units, method, status, highest, +10 more
transform_coordinatesTransform coordinates (official datums)ARead-onlyIdempotentInspect
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.
Inputs: source_crs (required), target_crs (required), coordinates (required), epoch. Returns: grids, units, method, status, +7 more
travel_time_matrixTravel-time matrixARead-onlyIdempotentInspect
Network travel time (minutes) and distance (metres) from each origin to each destination. Note: points here are [latitude, longitude] pairs.
Inputs: origins (required), destinations (required), mode. Returns: An RFC 7946 GeoJSON FeatureCollection; `geospark` holds status, units, warnings…
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
Related MCP Connectors
OpenStreetMap queries, maps/styles, search, routing, terrain, analysis, pipelines, and rendering.
Routing, geocoding, places, matrix and map tools for location-aware AI workflows.
Overture Maps places — business and point-of-interest locations (name, category, confidence…
Maps, geocoding and time zones for AI coding agents, on OpenStreetMap, with hard prepaid spend caps.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables LLMs to geocode and reverse geocode places, find nearby points of interest, search categories within an area, get turn-by-turn routing, suggest meeting points, and analyze neighborhoods, commutes, schools, EV charging, and parking through OpenStreetMap data services. It also serves place and map tile resources over stdio, SSE, or Streamable HTTP transports.12MIT
- AlicenseAqualityDmaintenanceGeospatial API tools for AI agents — geocoding, reverse geocoding, routing, isochrone, distance matrix, static maps, H3 hexagons, elevation, GPS map-matching, point-in-polygon, address normalisation, timezone lookup, and batch geocoding. Built on OpenStreetMap infrastructure. Cost-effective alternative to Google Maps API.1834 npmMIT
- AlicenseAqualityBmaintenanceQuery Overture Maps data — places (POIs), buildings, and administrative divisions — from MCP-compatible LLMs with token-efficient summaries.5368 npmMIT

MapSmithofficial
AlicenseAqualityBmaintenanceEnables AI agents to perform professional-grade geoprocessing tasks such as buffers, overlays, reprojections, and terrain analysis with deterministic tools and verifiable provenance.29102 PyPI2AGPL 3.0
Glama MCP Gateway
Add one secure layer between your agents and this server.