Skip to main content
Glama
stebubu

SaferPlaces MCP Server

by stebubu

SaferPlaces MCP Server

Server MCP che espone i processi di simulazione delle REST API di SaferPlaces come tool utilizzabili da Claude, per lanciare e monitorare simulazioni direttamente dalla chat.

Processi supportati (descrizioni lette live dal server, nei formati f=json e f=jsonld):

  • untrim-process — modello UNTRIM, water depth da pioggia e DEM

  • digital-twin-process — preparazione DEM (edifici, land use, extrusion, seamask)

  • terra-twin-process

Per aggiungere un processo basta inserire il suo id in PROCESS_IDS (e nel Literal associato) in cima a saferplaces_mcp.py.

Le credenziali (utente e token) vengono iniettate dal server nel body di ogni richiesta di esecuzione: non passano mai per la chat e Claude non le vede. I nomi dei campi (user e token, dentro inputs) sono verificati sulla descrizione live dei processi.

Tool esposti

Tool

Cosa fa

list_processes

Elenco dei processi disponibili sull'API

process_describe

Descrizione di un processo e dei suoi input (formato json o jsonld)

process_execute

Lancia un processo (asincrono di default, sincrono su richiesta)

job_status

Stato di un job (accepted / running / successful / failed)

job_results

Risultati di un job completato

list_jobs

Elenco dei job recenti

process_run_and_wait

Lancia un processo e attende il completamento (polling)

Related MCP server: MCP OpenAPI Connector

Struttura del repo

saferplaces_mcp.py    # il server MCP
requirements.txt      # dipendenze Python (fastmcp, httpx)
README.md

Configurazione

Il server richiede due variabili d'ambiente:

Variabile

Descrizione

SAFERPLACES_USER

Nome utente SaferPlaces

SAFERPLACES_TOKEN

Token associato all'utente

In cima a saferplaces_mcp.py ci sono tre costanti da verificare rispetto alla documentazione delle API:

  • USER_FIELD e TOKEN_FIELD: i nomi esatti dei campi del body in cui l'API si aspetta le credenziali (default: user e token).

  • CREDENTIALS_INSIDE_INPUTS: True se le credenziali vanno annidate dentro l'oggetto inputs del body (tipico delle OGC API Processes), False se vanno al livello principale.

Uso locale (Claude Code / Claude Desktop)

Richiede Python 3.10+.

python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

export SAFERPLACES_USER="tuo-utente"
export SAFERPLACES_TOKEN="tuo-token"

# test rapido: deve avviarsi senza errori (Ctrl+C per fermarlo)
python saferplaces_mcp.py

Collegamento a Claude Code (usa i percorsi assoluti):

claude mcp add saferplaces \
  -e SAFERPLACES_USER=tuo-utente \
  -e SAFERPLACES_TOKEN=tuo-token \
  -- /percorso/assoluto/.venv/bin/python /percorso/assoluto/saferplaces_mcp.py

Verifica con /mcp dentro Claude Code: il server saferplaces deve comparire tra quelli connessi.

Deploy remoto (connettore per Claude.ai)

In modalità remota il server gira su un hosting raggiungibile via HTTPS e si collega a Claude.ai da Impostazioni → Connettori → Aggiungi connettore personalizzato, incollando l'URL. Funziona da browser e da mobile, senza nulla in esecuzione in locale.

Il trasporto HTTP si attiva con la variabile d'ambiente MCP_TRANSPORT=http (la porta si imposta con PORT, default 8000).

Opzione A — FastMCP Cloud

  1. Carica questo repo su GitHub.

  2. Su fastmcp.cloud collega il repo: la piattaforma rileva l'oggetto mcp in saferplaces_mcp.py e lo deploya.

  3. Imposta SAFERPLACES_USER e SAFERPLACES_TOKEN tra le variabili d'ambiente del progetto.

  4. Copia l'URL HTTPS generato e incollalo nei connettori di Claude.ai.

Opzione B — hosting generico (Cloud Run, Render, Railway, ...)

Comando di avvio:

MCP_TRANSPORT=http python saferplaces_mcp.py

Imposta SAFERPLACES_USER, SAFERPLACES_TOKEN e (se richiesto dalla piattaforma) PORT tra le variabili d'ambiente del servizio.

Sicurezza

⚠️ Un server remoto con le credenziali configurate permette a chiunque ne conosca l'URL di lanciare simulazioni con il tuo account e consumare la tua quota. Prima di esporlo su internet, proteggilo con l'autenticazione (FastMCP supporta bearer token e OAuth — vedi la documentazione di FastMCP, sezione Auth). Non committare mai le credenziali nel repo.

Risoluzione problemi

  • ModuleNotFoundError: httpx / fastmcp → le dipendenze non sono installate nell'ambiente Python attivo: pip install -r requirements.txt.

  • Errore all'avvio su variabili d'ambiente → SAFERPLACES_USER o SAFERPLACES_TOKEN non impostate.

  • Errore di autenticazione dalle API → controlla USER_FIELD, TOKEN_FIELD e CREDENTIALS_INSIDE_INPUTS in cima a saferplaces_mcp.py: devono rispecchiare il body di una chiamata funzionante fatta a mano.

  • Timeout su simulazioni lunghe → per untrim_run_and_wait alza timeout_seconds; il timeout delle singole richieste HTTP (300 s) si regola nella creazione del client httpx.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Dynamically generates MCP tools from OpenAPI specifications, enabling AI assistants to interact with any REST API through natural language. Supports multiple APIs with authentication, parameter validation, and integration with Claude Desktop and LangChain.
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables Claude Desktop and other MCP clients to interact with any OAuth2-authenticated OpenAPI-based API through automatic tool generation from OpenAPI specifications, with built-in token management and authentication handling.
    7 npm
    3
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Wraps Claude Code as tools for MCP clients, enabling autonomous coding tasks via a 4-tool lifecycle with session management, async polling, and permission controls.
    4
    43 npm
    20
    MIT