mcp-perception
Geospatial AI MCP server — satellite imagery, embeddings, weather, GNS governance
Should I use this
Quality & Safety
Findings (1)
- LOWin gns_get_compliance_report
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"mcp-perception": {
"url": "https://packagesmcp-perception-production.up.railway.app/sse"
}
}
}Remote endpoints
https://packagesmcp-perception-production.up.railway.app/ssessehttps://packagesmcp-perception-production.up.railway.app/mcpstreamable-httpWhat it can do
Tool inventory
Tools (8)
🟢perception_fetch_tile(h3_cell, timestamp, max_cloud_cover, days_back)
Fetch the least-cloudy Sentinel-2 L2A tile covering a given H3 cell from Microsoft Planetary Computer. Returns signed COG band URLs for all 6 Prithvi/Clay spectral bands (B02 Blue, B03 Green, B04 Red, B8A NIR, B11 SWIR1, B12 SWIR2), plus tile metadata. The tile is cached in memory for subsequent perception_classify or perception_embed calls.
Input Schema
{
"type": "object",
"properties": {
"h3_cell": {
"type": "string",
"description": "H3 cell ID at any resolution."
},
"timestamp": {
"type": "string",
"description": "ISO 8601 datetime. Search back from this point. Defaults to now."
},
"max_cloud_cover": {
"type": "number",
"minimum": 0,
"maximum": 100,
"description": "Max cloud cover %. Default: 20."
},
"days_back": {
"type": "number",
"minimum": 1,
"maximum": 365,
"description": "Days to search back. Default: 30."
}
},
"required": [
"h3_cell"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢perception_classify(tile_id, task, h3_cell, write_to_spatial_memory)
Run Prithvi-EO-2.0-300M-TL-Sen1Floods11 flood classification on a Sentinel-2 tile previously fetched by perception_fetch_tile. Sends the 6-band chip to a RunPod endpoint and returns: dominant_class, flood_pixel_pct, confidence, class_counts, and the full perception_chain. The perception chain is written to Spatial Memory and a signed audit breadcrumb is dropped to the agent trail.
Input Schema
{
"type": "object",
"properties": {
"tile_id": {
"type": "string",
"description": "tile_id from perception_fetch_tile result (must be in session cache)."
},
"task": {
"type": "string",
"enum": [
"flood",
"landcover",
"burnscar",
"anomaly"
],
"description": "Classification task. Currently only \"flood\" is supported."
},
"h3_cell": {
"type": "string",
"description": "Override H3 cell. Defaults to the cell from the original fetch."
},
"write_to_spatial_memory": {
"type": "boolean",
"description": "Write perception chain to geiant_geometry_state. Default: true."
}
},
"required": [
"tile_id",
"task"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪perception_embed(tile_id)
[Sub-phase 4.2 — NOT YET IMPLEMENTED] Will generate Clay v1.5 embeddings.
Input Schema
{
"type": "object",
"properties": {
"tile_id": {
"type": "string",
"description": "tile_id from perception_fetch_tile result"
}
},
"required": [
"tile_id"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢perception_weather(h3_cell, timestamp, write_to_spatial_memory)
Query atmospheric conditions for an H3 cell at a given timestamp from Open-Meteo ERA5. Returns wind, precipitation, temperature. Writes to Spatial Memory and drops a signed audit breadcrumb.
Input Schema
{
"type": "object",
"properties": {
"h3_cell": {
"type": "string",
"description": "H3 cell ID at any resolution."
},
"timestamp": {
"type": "string",
"description": "ISO 8601 datetime for weather lookup. Defaults to now."
},
"write_to_spatial_memory": {
"type": "boolean",
"description": "Write weather context to geiant_geometry_state. Default: true."
}
},
"required": [
"h3_cell"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢gns_get_trust_score(agent_pk)
Get the current TierGate trust tier and score for an agent. Tiers: provisioned (0%) → observed (25%) → trusted (60%) → certified (85%) → sovereign (99%). Omit agent_pk to query the server's own agent.
Input Schema
{
"type": "object",
"properties": {
"agent_pk": {
"type": "string",
"description": "Ed25519 public key (64 hex chars). Omit for own agent."
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪gns_verify_chain(agent_pk)
Verify the cryptographic integrity of an agent's breadcrumb chain. Returns { is_valid, block_count, issues[] } plus epoch Merkle roots. A valid chain proves no audit records have been tampered with.
Input Schema
{
"type": "object",
"properties": {
"agent_pk": {
"type": "string",
"description": "Ed25519 public key (64 hex chars). Omit for own agent."
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪gns_roll_epoch
Roll all pending breadcrumbs into a new sealed epoch with a Merkle root. Returns { epoch_index, merkle_root, block_count, epoch_hash }. Call this at the end of a session to produce a tamper-evident compliance snapshot.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢gns_get_compliance_report(agentHandle)
Returns a full EU AI Act compliance report for a GNS agent, including trust score, chain verification, Merkle epoch proofs, delegation certificate, and regulatory status.
Input Schema
{
"type": "object",
"properties": {
"agentHandle": {
"type": "string",
"description": "GNS handle of the agent (e.g. energy@italy-geiant)"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Community
Evidence