MCP server (FastMCP) to drive a GeoServer instance: REST admin + OGC WMS/WFS/WFS-T + SLD styles, with a Leaflet test UI.
24 tools with consistent naming (geo_* prefix, verb-noun pattern) and complete input schemas. Descriptions present but generic (avg ~80 chars, below 194-char baseline). All parameters typed and described. Output schemas not documented. Error handling minimal. Missing tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. No pagination guidance for list tools. Composition is sound, tools chain well via workspace/datastore/layer hierarchy.
Assign a style to a layer
Create a new PostGIS datastore in a workspace
Create a new SLD style
Create a new workspace in GeoServer
Delete a datastore from a workspace
Delete a published feature type (layer)
Delete a published layer
Delete an SLD style
Output schemas not documented. LLMs cannot plan downstream calls or extract required fields (e.g., what does geo_list_workspaces return? workspace names only, or full metadata?). Breaks tool chaining.
Tool annotations missing. Destructive tools (geo_delete_*) and read-only tools lack readOnlyHint/destructiveHint/idempotentHint. Agents cannot distinguish safe retries from irreversible operations.
Descriptions are generic and brief (avg ~80 chars vs 194-char baseline). Missing context on WHEN to use each tool and dependencies. E.g., 'List all workspaces' does not explain that you must list workspaces before creating datastores.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
Delete a workspace from GeoServer
Retrieve WMS/WFS capabilities document
Get the count of features in a layer
Get the bounding box of a published layer
Get detailed information about a published layer
Retrieve the SLD content of a style
List all datastores in a workspace
List feature types (tables) in a datastore
List all published layers in a workspace
List all SLD styles in a workspace or globally
List all workspaces in the GeoServer instance
Publish a feature type (table) as a layer
Generate an interactive Leaflet map HTML file
Query features from a layer using WFS GetFeature
Insert, update, or delete features via WFS-T
Generate a WMS map image
No pagination guidance. List tools (geo_list_*) accept no limit/offset/cursor parameters. If a GeoServer has 1000 workspaces, the response will be massive and blow context windows. No mention of result limits in descriptions.
No error recovery guidance. Descriptions do not explain what to do if a workspace/datastore/layer is not found, or if a delete fails due to dependencies. Agents have no fallback strategy.