Skip to main content

Serveur MCP pour les informations de trafic en temps réel de Naolib (Nantes)

Project description

PyPI version Build Status GitHub release (latest by date)

Naolib MCP

Un serveur MCP pour obtenir les informations de trafic en temps réel de Naolib (Nantes Métropole) via le protocole SIRI.

Fonctionnalités

  • Recherche d'arrêts : Trouvez l'identifiant technique d'un arrêt à partir de son nom (avec recherche floue sur le cache NeTEx local).
  • Prochains passages : Horaires de passage en temps réel pour un arrêt (raw XML SIRI).
  • Perturbations : Alertes et incidents en temps réel (SIRI Situation Exchange).
  • Messages généraux : Annonces et avis de service (SIRI General Message).
  • Position des véhicules : Localisation GPS en direct des véhicules sur une ligne (SIRI Vehicle Monitoring).
  • Horaires estimés : Horaires estimés par ligne complète (SIRI Estimated Timetables).
  • État des équipements : Statut des ascenseurs, escaliers mécaniques, valideuses (SIRI Facility Monitoring).
  • Découverte des arrêts : Liste des arrêts disponibles (SIRI StopPointsDiscovery).
  • Découverte des lignes : Liste des lignes du réseau, groupées par mode (SIRI LinesDiscovery).
  • Vérification du service : Disponibilité SIRI (raw XML et SOAP).
  • Synchronisation Dynamique : Mise à jour automatique du catalogue des arrêts via les données NeTEx de Nantes Métropole.
  • Cache Intelligent : Optimisation des appels API avec un cache interne pour réduire la latence.
  • Rate Limiter : Respecte automatiquement la limite de 1 requête / 30 secondes sur l'accès libre.

Prérequis

  • Python 3.10+
  • Une clé API Naolib pour les fonctionnalités authentifiées (optionnel). Requestez-la sur le portail Naolib/Okina.

Installation via PyPI

pip install naolib-mcp

Configuration

Variables d'environnement :

  • NAOLIB_API_KEY — Clé API pour l'accès authentifié. Outils nécessitant une clé : get_stop_monitoring, get_vehicle_monitoring, get_estimated_timetables. Les autres outils sont en accès libre.
  • NAOLIB_BASE_URL — URL de base de l'API. Par défaut : https://api.okina.fr/gateway/sem/realtime. Pour staging : https://api.staging.okina.fr/gateway/sem/realtime.
  • NAOLIB_DATASET_ID — Identifiant du dataset (par défaut : NAOLIBORG).

Intégration (claude_desktop_config.json)

{
  "mcpServers": {
    "naolib-mcp": {
      "command": "uvx",
      "args": ["naolib-mcp"],
      "env": {
        "NAOLIB_API_KEY": "votre_cle_api_ici",
        "NAOLIB_BASE_URL": "https://api.okina.fr/gateway/sem/realtime"
      }
    }
  }
}

Pour staging :

{
  "mcpServers": {
    "naolib-mcp": {
      "command": "uvx",
      "args": ["naolib-mcp"],
      "env": {
        "NAOLIB_API_KEY": "votre_cle_api_staging_ici",
        "NAOLIB_BASE_URL": "https://api.staging.okina.fr/gateway/sem/realtime"
      }
    }
  }
}

Utilisation

Démarrer le serveur manuellement :

naolib-mcp

Outils MCP disponibles

search_stop (libre)

Recherche un arrêt par nom (fuzzy matching sur le cache NeTEx local).

search_stop("Jamet")
→ 1. **Jamet** → `FR_NAOLIB:Quay:50`

get_stop_monitoring (authentifié)

Prochains passages pour un arrêt (raw XML SIRI, nécessite une clé).

get_stop_monitoring("FR_NAOLIB:Quay:50", maximum_visits=5)
→ 🚊 **Ligne A** → Jamet | 08:37 ⚡

check_api_status (libre, rate limit)

Disponibilité du service SIRI (raw XML). Rate limit : 1 req / 30s.

check_api_status_soap (libre, rate limit)

Disponibilité du service SIRI (SOAP). Rate limit : 1 req / 30s.

get_traffic_alerts (libre, rate limit)

Perturbations et incidents en temps réel (SIRI Situation Exchange).

get_general_messages (libre, rate limit)

Messages généraux et avis de service (SIRI General Message).

get_vehicle_monitoring (authentifié)

Position GPS en direct des véhicules sur une ligne (SIRI Vehicle Monitoring).

get_vehicle_monitoring("Line:A")
→ 🚍 3 véhicule(s) sur `Line:A`
  🚌 `VEH-001` → Beaujoire — expire 14:50
     📍 47.218, -1.550 | cap: 45°

get_estimated_timetables (authentifié)

Horaires estimés pour tous les arrêts d'une ligne (SIRI Estimated Timetables).

get_facility_status (libre, rate limit)

Statut des équipements (ascenseurs, valideuses, etc.) à un arrêt ou sur tout le réseau (SIRI Facility Monitoring).

get_facility_status("FR_NAOLIB:Quay:50")
→ 🏗️ 2 équipement(s) — `FR_NAOLIB:Quay:50`
  ✅ `ELV-001` — elevator @ Station Jamet
  ❌ `ASC-002` — escalator: en panne

discover_stops (libre, rate limit)

Liste des arrêts disponibles dans le dataset Naolib, avec filtre optionnel (SIRI StopPointsDiscovery). Pour une recherche plus précise par nom, préférez search_stop().

discover_lines (libre, rate limit)

Liste des lignes du réseau Naolib, groupées par mode de transport (SIRI LinesDiscovery).

discover_lines()
→ 🚌 52 ligne(s) — toutes
  🚊 **Tram**
    • **Ligne A** → `FR_NAOLIB:Line:TM:A`
    • **Ligne 2** → `FR_NAOLIB:Line:TM:2`
  🚌 **Bus**
    • **Ligne C3** → `FR_NAOLIB:Line:BS:C3`

Protocole SIRI — notes techniques

L'implémentation suit la spécification SIRI 2.0 avec les points d'accès Okina :

Format Endpoint Auth Rate limit
Raw XML /anshar/services Libre + api-key 1 req / 30s (libre)
SOAP /anshar/ws/siri Libre + api-key 1 req / 30s (libre)
SIRI Lite /siri/2.0/{service}.json Libre + api-key 1 req / 30s (libre)

Les requêtes POST XML utilisent le header HTTP datasetId: NAOLIBORG. Les structures XML respectent le format <Siri><ServiceRequest>...</ServiceRequest></Siri>. Les endpoints SIRI Lite sont documentés dans le manuel ITR Okina v16 (Chap. 15).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

naolib_mcp-1.2.0.tar.gz (74.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

naolib_mcp-1.2.0-py3-none-any.whl (14.0 kB view details)

Uploaded Python 3

File details

Details for the file naolib_mcp-1.2.0.tar.gz.

File metadata

  • Download URL: naolib_mcp-1.2.0.tar.gz
  • Upload date:
  • Size: 74.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for naolib_mcp-1.2.0.tar.gz
Algorithm Hash digest
SHA256 a530ff49f9ea9e9995e117a452aff03c8764680ed9c5ee37951ea92fd40bb62b
MD5 0523ff8ad4cec4a92737241b00eed26f
BLAKE2b-256 c2109447d77b4c79980b8d09976cfa57867da22b43420d57e0c61124d6e6eb39

See more details on using hashes here.

Provenance

The following attestation bundles were made for naolib_mcp-1.2.0.tar.gz:

Publisher: publish.yml on alexandrerodenas/naolib-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file naolib_mcp-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: naolib_mcp-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 14.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for naolib_mcp-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 721446ca43c5331ce7f653db9b8752cdf92d8b5305f372e1d79f985ef8c6fa71
MD5 9ed67e3a93ed8f6a1783e4f40aa61ac1
BLAKE2b-256 73ab2a1ac4447a4ad2ad8b048753af92661e444d610766a91c674cea81e7a9e7

See more details on using hashes here.

Provenance

The following attestation bundles were made for naolib_mcp-1.2.0-py3-none-any.whl:

Publisher: publish.yml on alexandrerodenas/naolib-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page