Skip to main content
Glama
dinesh7wd

mcp-server-geo-optimizer

by dinesh7wd

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
NODE_ENVNoproduction hides unexpected error details from clientsdevelopment
OSRM_URLNohttp(s) OSRM endpointhttps://router.project-osrm.org
LOG_LEVELNodebug, info, warn, errorinfo
HTTP_RETRIESNoRetries for 5xx, 429, and network errors, 0-52
GEO_USER_AGENTNoUser-Agent sent on every outbound request. Recommended. Include contact details for Nominatim.
HTTP_TIMEOUT_MSNoOutbound HTTP timeout per attempt10000
CACHE_TTL_SECONDSNoIn-memory LRU TTL for geocoding and OSRM responses300
GEOCODING_API_KEYNoProvider API key. Required when GEOCODING_PROVIDER is google or mapbox. Redacted from all logs and error messages.
GEOCODING_PROVIDERNoGeocoding provider: nominatim (default), google, or mapboxnominatim
HAVERSINE_SPEED_KMHNoSpeed used to convert straight-line km to minutes when OSRM is not used40
OSRM_MAX_TABLE_SIZENoMax coordinates per OSRM table request, checked before any call100
PUBLIC_API_MIN_INTERVAL_MSNoMinimum spacing between requests to the public Nominatim and OSRM hosts, >= 10001000

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
optimize_routeA

Order stops for one or more vehicles (TSP/VRP) starting at waypoints[startIndex], with optional capacity and time windows in minutes after route start. Returns per-vehicle stop order (waypoint indices) with arrival/wait/departure minutes, distance in km, time-window violations and unassigned stops. Uses straight-line distances unless useOsrm is true.

geocodeA

Forward-geocode an address or reverse-geocode lat/lng using the configured provider (Nominatim by default, rate-limited to 1 request per second). Returns lat, lng and a display name.

distance_matrixA

Compute distances (km) and travel times (minutes) from each origin (rows) to each destination (columns). At most 2500 cells per request. haversine is local; osrm calls the configured OSRM server.

cluster_pointsA

Group geographic points with deterministic k-means (seeded) or DBSCAN (epsKm radius). Returns clusters with size, centroid (date-line safe) and member points; DBSCAN noise is returned as a cluster with noise=true.

boundary_checkA

Point-in-polygon, convex hull and bounding box for {lat,lng} points; handles the antimeridian. A bounding box that crosses the antimeridian has minLng > maxLng (RFC 7946).

geojson_utilsA

Validate GeoJSON (structure, coordinate ranges, closed rings), simplify lines and polygon rings (altitude preserved), or convert {lat,lng} points to a FeatureCollection.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a distinct geographic operation: geocoding, distance computation, route optimization, clustering, spatial boundary checks, and GeoJSON utilities. Boundaries are clear despite distance_matrix and optimize_route both involving distances, because their purposes and outputs differ substantially.

Naming Consistency3/5

All names use snake_case, but the conventions are mixed: geocode is a bare verb, distance_matrix and geojson_utils are noun phrases, boundary_check reverses verb/noun order, and optimize_route and cluster_points use verb_noun. This is readable but not a predictable pattern.

Tool Count5/5

Six tools is well-scoped for a geo-optimization server, covering the main operations without bloat. Each tool earns its place by handling a distinct stage of geographic analysis or routing.

Completeness4/5

The surface covers geocoding, distance matrices, route optimization, clustering, boundary checks, and GeoJSON processing, which is strong for the stated purpose. Minor gaps like isochrone generation or elevation lookup are not essential for core geo-optimizer workflows.

Maintenance

ActivityMaintained
ResponsivenessNo issues