Skip to main content
Glama
GSA-TTS

mcp-server-gis-helper

Official
by GSA-TTS

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
PORTNoIf set, selects HTTP transport for MCP
DATABRICKS_APP_PORTNoIf set, selects HTTP transport for MCP
GIS_HELPER_MAP_HOSTNoBridge bind host (stdio mode)127.0.0.1
GIS_HELPER_MAP_PORTNoBridge port (stdio mode)8765
GIS_HELPER_TILE_URLNoLeaflet basemap tile URL templateOpenStreetMap
GIS_HELPER_PUBLIC_URLNoOrigin the browser uses to reach the bridge (set behind a proxy/container)http://<host>:<port>
GIS_HELPER_TILE_ATTRIBUTIONNoTile attribution stringOSM

Capabilities

Features and capabilities supported by this server

CapabilityDetails
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

NameDescription
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:

  1. Call this tool (optionally center it with lat/lon/zoom).

  2. The user clicks "Open drawing map", draws a polygon/line/point, clicks Save.

  3. The user clicks "Load drawn geometry" (or you call gis_get_drawn_geometry with the session_id) to retrieve a compact GeoJSON string.

  4. Pass that GeoJSON to nfhl_screen_flood_zone, hydro_find_waterways, etc.

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:

  • If you know the exact id from the latest gis_open_map result, pass it.

  • If you don't have it (e.g. a later turn), OMIT session_id entirely and the most recently saved geometry is returned. Never pass a placeholder like "default" — that will fail.

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:

  • {"ready": false, "error": "Unknown or expired session ..."} — bad session_id.

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:

  • {"valid": false, "error": "..."} — invalid JSON, unsupported type, out-of-range coordinate (e.g. swapped lat/lon), or malformed BoundingBox.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription
Prefab Renderer (gis_open_map)

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/GSA-TTS/mcp-server-gis-helper'

If you have feedback or need assistance with the MCP directory API, please join our Discord server