annecy-sig-mcp
MCP officiel · Ville d'Annecy

Le SIG d'Annecy en langage naturel.

annecy-sig-mcp est un serveur MCP (Model Context Protocol) qui rend les données géographiques publiques de la Ville d'Annecy interrogeables depuis n'importe quel assistant IA compatible : Cursor, Claude Desktop, Continue, n8n, ChatGPT MCP… Lecture seule, allowlist stricte, jamais d'écriture vers le SIG.

Vérification de l'état du service… 28 couches SIG 16 outils MCP Open source · MIT

Pour qui ?

Pas besoin d'être développeur. Le serveur est ouvert à toute personne ou organisation qui veut interroger le SIG d'Annecy via une IA.

Citoyens · Particuliers

Trouvez ce que vous cherchez en posant la question

WC publics, parkings, bornes électriques, équipements sport… interrogez le SIG comme vous parleriez à un ami.

Où sont les WC publics ouverts maintenant à 500 m de la mairie ?
Agents Ville · DSI · Élus

Pilotez et auditez vos données SIG sans coder

Inventaires, qualité, briefs open data, dashboards internes — tout depuis votre IA, sans ouvrir ArcGIS.

Génère le rapport qualité de la couche bornes électriques au format markdown.
Développeurs · Intégrateurs

Branchez votre agent IA aux données Annecy en 5 min

Endpoint HTTP MCP standard, sortie JSON typée, schémas Zod stables, contrats versionnés. Aucun ETL à écrire.

Endpoint : https://mcp.leadalpes.fr/api/mcp

Pourquoi un MCP ? Le portail SIG existe déjà.

Toutes les données exposées par ce MCP sont déjà publiques sur portailsig.annecy.fr. Le MCP n'ajoute aucune nouvelle donnée — il les rend simplement conversables par une IA.

Langage naturel

Plus besoin de connaître les services ArcGIS, ni la syntaxe where, ni les coordonnées Lambert-93. Vous demandez, l'IA traduit.

Intégration IA standard

Compatible avec tout client MCP : Cursor, Claude Desktop, Continue, n8n, agents custom. Un seul endpoint, n+1 IA branchées.

Sortie structurée

Réponses JSON normalisées et typées (Zod), pas de JSON ArcGIS brut. Champs sensibles filtrés systématiquement.

Démarrer en 3 étapes

Compter ~10 minutes au total : le temps d'obtenir un jeton et de configurer votre client.

1

Demander un jeton d'accès (gratuit)

Envoyez un mail court précisant votre cas d'usage. La réponse contient le jeton Bearer à utiliser dans la config — et l'aide à l'intégration si besoin.

damien.credoz@annecy.fr

2

Configurer votre client MCP

Le serveur parle le standard MCP Streamable HTTP. Toute application qui sait parler MCP fonctionne : Cursor, Claude Desktop, Continue, n8n, Copilot Studio, agents OpenAI / Anthropic SDK, scripts curl… Choisissez votre client ci-dessous, copiez la config, c'est tout.

Microsoft Copilot Studio supporte MCP nativement. La configuration se fait dans l'interface, sans fichier à éditer.

  1. Dans Copilot Studio, ouvrir l'agent cible → onglet ToolsAdd a toolModel Context Protocol.
  2. Renseigner l'URL du serveur :
    https://mcp.leadalpes.fr/api/mcp
  3. Authentication : API Key en en-tête HTTP → Header name: Authorization · Header value: Bearer VOTRE_TOKEN_RECU_PAR_MAIL. Stocker le jeton dans une Power Platform secret variable, jamais en clair.
  4. Save puis Test. L'agent doit voir 17 outils disponibles (dont citizen_query, l'outil haut-niveau recommandé pour les questions en langage naturel).

Pour un agent Info SIG Annecy prêt à coller (identité, instructions système, garde-fous citoyen, exemples adverses) : examples/copilot-studio-instructions.md ↗.

Éditez .cursor/mcp.json à la racine du projet (ou ~/.cursor/mcp.json pour usage global) :

{
  "mcpServers": {
    "annecy-sig": {
      "url": "https://mcp.leadalpes.fr/api/mcp",
      "headers": {
        "Authorization": "Bearer VOTRE_TOKEN_RECU_PAR_MAIL"
      }
    }
  }
}

Puis Settings → MCP dans Cursor : activez annecy-sig. Vous devez voir 17 outils (dont citizen_query).

Éditez le fichier de config Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json sur macOS, %APPDATA%\Claude\claude_desktop_config.json sur Windows) :

{
  "mcpServers": {
    "annecy-sig": {
      "url": "https://mcp.leadalpes.fr/api/mcp",
      "headers": {
        "Authorization": "Bearer VOTRE_TOKEN_RECU_PAR_MAIL"
      }
    }
  }
}

Redémarrez Claude Desktop. Vérifiez l'icône MCP en bas du chat.

Tout client MCP Streamable HTTP fonctionne (Continue, n8n, Copilot Studio, agent custom Python ou TypeScript…). Test rapide en curl pour lister les outils :

curl -sS https://mcp.leadalpes.fr/api/mcp \
  -H "Authorization: Bearer VOTRE_TOKEN" \
  -H "Accept: application/json, text/event-stream" \
  -H "MCP-Protocol-Version: 2024-11-05" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Devrait retourner les 17 outils publics.

3

Posez vos questions

Quelques exemples concrets à essayer dès la première session :

« Liste les bornes de recharge véhicules électriques d'Annecy. »
« Combien de places PMR à 300 m de la place du Pâquier ? »
« Y a-t-il des travaux en cours à proximité de l'Hôtel de Ville ? »
« Génère un brief open data pour la couche WC publics. »
« Donne-moi un rapport qualité de la couche stations vélonecy. »

17 outils MCP exposés

Tous en lecture seule, sortie JSON structurée, schémas typés (Zod) versionnés schemaVersion: *.v1.

Assistant citoyen (V1.2) — recommandé en priorité

citizen_query

Outil haut-niveau : prend une question en français, choisit la bonne couche, refuse les demandes hors périmètre (RGPD, données nominatives) et répond sans jamais demander serviceKey/layerId à l'utilisateur. Idéal pour Copilot Studio & Claude.

Découverte du catalogue

list_services

Inventaire des services ArcGIS allowlistés (équipements, mobilité, travaux).

list_layers

Couches d'un service avec compteurs et niveau d'accès (public / internal).

describe_layer

Schéma détaillé d'une couche : champs publics, géométrie, sémantique.

recommend_layers_for_intent

Découverte par intention citoyenne (matching lexical déterministe en français).

Requêtes spatiales et attributaires

query_layer

Filtrage attributaire (ArcGIS where), pagination, champs validés contre f=pjson.

search_nearby

Recherche spatiale par lat/lng/rayon — Lambert-93 ou WGS-84 transparents.

count_layer

Comptage rapide avec where optionnel (utile pour dashboards).

detect_data_quality_issues

Heuristiques qualité : champs vides, doublons, géométries manquantes.

Travaux — vue citoyenne filtrée

list_public_works

Travaux publics, IDs opaques, géométrie réduite, jamais de référence interne.

search_public_works_nearby

Travaux à proximité d'un point — sortie sanitisée pour usage public.

Inventaires & rapports

inventory_all_layers

Snapshot complet du périmètre : tailles, fraîcheur, sensibilité.

recommend_open_data_candidates

Identifie les couches éligibles à une publication open data.

generate_inventory_report

Rapport markdown d'inventaire — utile pour gouvernance & reporting.

generate_open_data_brief

Note de cadrage open data prête à exporter.

generate_chatbot_readiness_report

Auto-évaluation : ce qui est exploitable par un agent conversationnel.

generate_layer_action_plan

Plan d'action par couche : quoi corriger, quoi documenter, prioriser.

3 outils internal (list_current_works, list_late_works, generate_internal_dashboard_brief) sont volontairement non exposés sur ce transport HTTP public. Ils restent accessibles uniquement en stdio local par la DSI Annecy avec installation dédiée.

28 couches du SIG Annecy couvertes

Périmètre allowlist validé manuellement. Schémas resynchronisés chaque jour via cron CI vs. portailsig.annecy.fr.

À savoir. Toutes ces couches sont déjà publiquement accessibles sur le portail SIG d'Annecy. Le MCP n'ajoute aucune donnée et n'expose aucun champ sensible (created_user, last_edited_*, GLOBALID, url_pj, etc. — bloqués par dénylist). Il les rend simplement conversables via une IA.
Équipements 11 couches · service EQUIPEMENTS
NomAccèsSource ArcGIS
Administration (id 0)PublicMapServer/0 ↗
Établissements scolaires (id 1)PublicMapServer/1 ↗
Accueils petite enfance (id 2)PublicMapServer/2 ↗
Équipements sénior (id 3)PublicMapServer/3 ↗
Cimetière (id 4)PublicMapServer/4 ↗
WC publics (id 5)PublicMapServer/5 ↗
Équipements culturels (id 6)PublicMapServer/6 ↗
Jardins partagés (id 7)PublicMapServer/7 ↗
Vergers communaux (id 8)PublicMapServer/8 ↗
Équipements sport (id 9)PublicMapServer/9 ↗
Salles municipales (id 10)PublicMapServer/10 ↗
Mobilité & stationnement 16 couches · service MOBILITE
NomAccèsSource ArcGIS
Horodateurs (id 1)PublicMapServer/1 ↗
Parking relais (id 2)PublicMapServer/2 ↗
Stations vélonecy (id 3)PublicMapServer/3 ↗
Parking convoyeurs de fond (id 4)InternalMapServer/4 ↗
Places hôtel (id 5)PublicMapServer/5 ↗
Places livraison (id 6)PublicMapServer/6 ↗
Parking moto (id 7)PublicMapServer/7 ↗
Places PMR (id 8)PublicMapServer/8 ↗
Bornes recharge véhicules électriques (id 9)PublicMapServer/9 ↗
Stationnement vélos (id 10)PublicMapServer/10 ↗
Stationnements hors parking en ouvrage (id 11)PublicMapServer/11 ↗
Stationnement horodateurs zones longue durée (id 12)PublicMapServer/12 ↗
Stationnement zone bleue (id 13)PublicMapServer/13 ↗
Stationnement horodateurs bords de lac été (id 14)PublicMapServer/14 ↗
Stationnement horodateurs zones courtes durée (id 15)PublicMapServer/15 ↗
Annecy Parking (id 16)PublicMapServer/16 ↗
Travaux 1 couche · service TRAVAUX
NomAccèsSource ArcGIS
Travaux (id 3) Vue citoyenne filtrée MapServer/3 ↗

La couche brute travaux est internal. Sur le transport HTTP public, l'accès se fait uniquement via les outils dédiés list_public_works et search_public_works_nearby qui renvoient une vue public-light (IDs opaques, géométrie réduite, jamais de référence interne ni de pièce jointe).

Voir le registre source complet sur GitHub ou consulter le catalogue détaillé des données.

Sécurité & gouvernance

Conçu pour exposer de la donnée publique sans risque de fuite ni de side-effect.

Lecture seule, allowlist d'hôtes Aucune requête sortante hors portailsig.annecy.fr. Aucune route POST/PUT/DELETE vers ArcGIS dans le code.
Authentification Bearer obligatoire Le transport HTTP refuse toute requête sans Authorization: Bearer valide. Comparaison à temps constant.
Mode internal verrouillé HTTP Toute tentative d'élévation côté HTTP retourne 403. Le mode internal est exclusivement réservé au transport stdio local DSI.
Sanitation systématique Champs sensibles (created_user, last_edited_*, url_pj, GLOBALID…) bloqués par filtre dénylist au moment de la génération du registre.
Pas de cookies, pas de sessions Stateless complet. Aucun stockage côté serveur. Aucun tracking utilisateur.
Pas d'écriture ArcGIS Le serveur ne peut techniquement pas modifier le SIG : pas de credentials d'éditeur, pas de méthodes applyEdits, pas de chemin code l'autorisant.

Détail complet du modèle de menace, périmètre et procédure de divulgation responsable : SECURITY.md ↗

Questions fréquentes

Si votre question n'est pas listée, écrivez à damien.credoz@annecy.fr.

Qui peut demander un accès ?

Tout le monde : citoyens, journalistes, chercheurs, autres collectivités, développeurs, étudiants, agents de la Ville d'Annecy, partenaires métropolitains. Le service est ouvert à tout usage légitime des données publiques du SIG.

Précisez simplement votre cas d'usage dans votre demande pour qu'on puisse vous orienter au mieux.

Comment obtenir un jeton d'accès et de l'aide à la configuration ?

Envoyer un mail à damien.credoz@annecy.fr en précisant le client MCP envisagé (Cursor, Claude Desktop, n8n, agent custom, autre). La réponse contient le jeton Bearer (à placer dans MCP_PUBLIC_READ_TOKEN) et un coup de main rapide pour la configuration si besoin.

Combien ça coûte ?

Rien. Le code est open source (licence MIT) et l'instance hébergée sur mcp.leadalpes.fr est mise à disposition gratuitement.

Si votre usage devient massif (dizaines de milliers de requêtes/jour), prévenez-nous pour qu'on dimensionne ensemble.

Mes requêtes sont-elles loguées ?

Côté serveur : seuls les logs techniques agrégés (compteur d'appels par outil, dernière erreur) sont retenus, sans contenu des requêtes ni identifiant utilisateur. Voir /api/health.

Côté client (Cursor, Claude Desktop…) : les logs dépendent de leur propre politique de confidentialité.

Puis-je l'utiliser à des fins commerciales ?

Le code est sous licence MIT, donc oui pour le code. Pour les données, vérifiez les conditions de réutilisation indiquées sur le portail SIG d'Annecy : la majorité relève de la donnée publique réutilisable, mais certains usages spécifiques peuvent demander une licence ou une mention.

Quels clients IA sont compatibles ?

Tout client supportant MCP Streamable HTTP avec authentification Bearer : Cursor, Claude Desktop, Continue, n8n, Copilot Studio, Microsoft Copilot Custom, ainsi que tout agent custom écrit avec un SDK MCP (TypeScript, Python).

Les clients qui ne supportent que MCP stdio nécessitent une installation locale (voir le README DSI sur GitHub).

Une couche manque, comment la demander ?

Ouvrir une issue sur GitHub ou écrire par mail. Toute couche ajoutée doit être déjà publique sur le portail SIG, et passe par une revue d'allowlist (sécurité, sanitation des champs).

Le serveur est down, je fais quoi ?

Vérifier d'abord /api/health : s'il répond status: ok, le souci est côté client ou côté ArcGIS source. Sinon, signaler l'incident par mail avec l'heure UTC approximative.

Je veux héberger ma propre instance

Le repo est prêt pour Vercel (déploiement en 1 clic) ou tout runtime Node 20+. Le déploiement minimal demande deux variables : ANNECY_SIG_BASE_URL et MCP_PUBLIC_READ_TOKEN. Voir le README sur GitHub.

Prêt à brancher votre IA au SIG d'Annecy ?

Demandez un jeton d'accès — ou posez n'importe quelle question sur l'intégration. Réponse sous quelques jours ouvrés.