geo-osiris-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GEO_API_URL | No | Geo Hub base URL | |
| GEO_MCP_HOST | No | Listener bind address (HTTP only) | |
| GEO_MCP_PATH | No | Streamable HTTP path | /mcp |
| GEO_MCP_PORT | No | Listener bind port (HTTP only) | |
| GEO_READ_TOKEN | No | Geo API geo.read bearer; server-side only (required in read mode) | |
| GEO_STAGE_TOKEN | No | Geo API geo.read + geo.stage bearer; server-side only (required in staging mode) | |
| GEO_HUB_MCP_MODE | No | read or staging; anything else aborts startup | read |
| GEO_MCP_TRANSPORT | No | stdio or authenticated Streamable HTTP (http) | stdio |
| GEO_MCP_ALLOWED_HOSTS | No | Exact allowed Host headers, comma-separated (HTTP only) | |
| GEO_MCP_CLIENT_TOKENS_FILE | No | Read-only JSON file containing client-token SHA-256 hashes (HTTP only) |
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 |
|---|---|
| healthA | Report MCP liveness, Geo Hub reachability and readiness, and mode. |
| list_layersA | List Geo Hub layers as compact summaries. |
| get_layerC | Return the complete generic configuration for one layer. |
| list_featuresB | List compact feature summaries for a layer. Omitting |
| get_featureB | Return one feature in full, including its ordered provenance. |
| list_importsC | List staged imports, optionally filtered by layer. |
| get_importB | Return one import summary with its CSV mapping. |
| list_import_rowsC | List import rows, optionally filtered by state (valid/invalid/candidate). |
| list_sourcesC | List configured external sources. |
| get_sourceB | Return one external source's configuration and health. |
| inspect_layerB | Bounded operational summary for a layer, by UUID or slug. |
| summarize_importC | Import status and commit readiness from backend aggregate state. |
| infer_csv_mappingB | Deterministic, local CSV mapping inference. No network, no staging. Returns coordinates, an external_id guess, typed property mappings, a confidence map, and explanatory notes for ambiguous signals. |
| compare_dataset_to_layerA | Advisory dataset-vs-layer comparison. With stage=false it performs zero writes and reports advisory-only signals. With stage=true (staging mode only) it creates exactly one staging import and previews bounded candidates; it never resolves, commits, publishes, or archives. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 14 tools
Most tools are clearly separated by resource and action (list_*, get_*, infer_*, compare_*). A few operational summaries like inspect_layer and summarize_import overlap somewhat with their get_* counterparts, but the descriptions provide enough distinction to avoid serious misselection.
Tool names overwhelmingly follow a consistent verb_noun snake_case pattern such as list_layers, get_feature, and list_import_rows. The only minor deviation is health, which is a single noun rather than a verb_noun form, but it is a conventional health-check name and does not create confusion.
Fourteen tools is well within the ideal range for a domain-specific server. Each tool covers a distinct resource or operation in the Geo Hub/import workflow, and none feel redundant or excessive.
The tool surface is strong for read-only inspection, listing, CSV inference, and advisory comparison. However, there are notable gaps around the import lifecycle: no tool commits, publishes, or archives an import, and there is no create/update/delete coverage for layers or sources, leaving the workflow incomplete for agents that need to act rather than only inspect.