mcp-server-gis-helper
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PORT | No | If set, selects HTTP transport for MCP | |
| DATABRICKS_APP_PORT | No | If set, selects HTTP transport for MCP | |
| GIS_HELPER_MAP_HOST | No | Bridge bind host (stdio mode) | 127.0.0.1 |
| GIS_HELPER_MAP_PORT | No | Bridge port (stdio mode) | 8765 |
| GIS_HELPER_TILE_URL | No | Leaflet basemap tile URL template | OpenStreetMap |
| GIS_HELPER_PUBLIC_URL | No | Origin the browser uses to reach the bridge (set behind a proxy/container) | http://<host>:<port> |
| GIS_HELPER_TILE_ATTRIBUTION | No | Tile attribution string | OSM |
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
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| gis_open_mapA | Open an interactive map so the user can draw GIS geometry, then capture it. Returns a Prefab app with (1) a link that opens a Leaflet drawing page in the browser and (2) a "Load drawn geometry" button. Workflow:
Use when: "let me draw a shape / area on a map", "I want to sketch a polygon". Don't use when: the user already has coordinates (use gis_validate_geometry). The returned app also surfaces the session_id in text so the agent can call gis_get_drawn_geometry directly if the user prefers not to click the button. |
| gis_get_drawn_geometryA | Retrieve the geometry a user drew and saved on the interactive map. Call this after gis_open_map once the user has drawn a shape and clicked "Save" on the map page. Geometry stored by the map is already validated and normalized (WGS84, closed rings). The returned "geometry" string can be passed directly to nfhl_screen_flood_zone, hydro_find_waterways, and other geometry-accepting GIS tools. Use when: "I drew a shape, get it", or wired to the "Load drawn geometry" button inside the gis_open_map app. session_id handling:
Returns when a shape has been saved: { "ready": true, "session_id": str, # the resolved session id "geometry": str, # compact GeoJSON string, ready to paste downstream "summary": { geo_type, crs_epsg, vertex_count, part_count, bbox, ... } } Returns when nothing has been saved yet: { "ready": false, "message": "No geometry saved yet ..." } Error responses:
|
| gis_validate_geometryA | Validate and normalize a GeoJSON geometry string for use with GIS servers. Checks that the geometry is a supported type with valid WGS84 [lon, lat] coordinates, unwraps Feature/FeatureCollection wrappers, and closes any unclosed polygon rings. Returns a compact, single-line GeoJSON string that can be passed directly to the FEMA NFHL (nfhl_screen_flood_zone) or USGS National Map (hydro_find_waterways, etc.) tools. Use when: you already have coordinates/GeoJSON and want to confirm it's valid and correctly formatted before querying another GIS server. Don't use when: you want to draw a shape interactively (use gis_open_map). Returns on success: { "valid": true, "geometry": str, # compact GeoJSON string, ready to paste downstream "summary": { # geo_type, crs_epsg, vertex_count, part_count, ... # bbox [minLon,minLat,maxLon,maxLat], approx area/length } } Error responses:
|
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| Prefab Renderer (gis_open_map) |
TDQS
Scored across 3 tools
Each tool has a distinct role in the workflow: gis_open_map initiates an interactive drawing session, gis_get_drawn_geometry retrieves the result, and gis_validate_geometry validates an existing GeoJSON string. There is no overlap in purpose, and the 'Use when' conditions clearly separate them.
All tool names follow a consistent 'gis_' prefix followed by a verb_noun pattern: open_map, get_drawn_geometry, validate_geometry. The naming is uniform, snake_case, and each verb clearly indicates the action.
Three tools is well-scoped for a GIS helper that focuses on geometry capture and validation. The count falls within the ideal 3-15 range, and each tool is necessary for the core workflow without redundancy.
The toolset covers the entire lifecycle of preparing user-drawn geometry for downstream GIS servers: open a map to draw, retrieve the drawn geometry, and validate/normalize it. There are no obvious gaps; session handling is gracefully managed by omitting the session ID, and the output is directly usable.