MCP Servers

模型上下文协议服务器、框架、SDK 和模板的综合目录。

MCP server for querying SHOM (Service Hydrographique de la Marine) wreck database via WFS API

创建于 2/25/2026
更新于 about 4 hours ago
Repository documentation and setup instructions

MCP SHOM Wrecks — Base d'épaves SHOM pour Claude Code

English below

MCP SHOM Wrecks TypeScript License: MIT

Serveur MCP qui expose la base d'épaves du SHOM (Service Hydrographique et Océanographique de la Marine) — 4 796+ épaves sur l'ensemble des eaux françaises — à des assistants IA comme Claude Code.

Conçu pour la planification de plongée, la recherche nautique et l'exploration historique.


Ce que ça fait

Interrogez la base officielle d'épaves de la Marine française en langage naturel :

"Cherche l'épave du Courbet"
"Quelles épaves sont à moins de 5 milles de Ouistreham ?"
"Liste les épaves entre 49.1°N et 49.5°N, de -1°W à 0°E"

Le serveur traduit ces requêtes en appels WFS vers l'API SHOM et renvoie les résultats formatés.

Les 4 outils

| Outil | Description | Paramètres clés | |:---:|---|---| | search_wreck_by_name | Chercher une épave par nom (partiel, insensible à la casse) | name | | get_nearby_wrecks | Épaves autour d'un point GPS, triées par distance | latitude, longitude, radius_nm | | search_wrecks_bbox | Épaves dans une zone rectangulaire | min_lat, max_lat, min_lon, max_lon | | get_wreck_details | Fiche complète d'une épave par ID SHOM | id |

Détail des outils

search_wreck_by_name

Recherche par nom avec correspondance partielle insensible à la casse.

| Paramètre | Type | Requis | Description | |-----------|------|:------:|-------------| | name | string | oui | Nom à chercher (ex. "Courbet", "LST", "Susan") |

get_nearby_wrecks

Trouve les épaves proches d'une position GPS. Idéal pour la planification de plongée.

| Paramètre | Type | Requis | Description | |-----------|------|:------:|-------------| | latitude | number | oui | Latitude de référence (ex. 49.28 pour Ouistreham) | | longitude | number | oui | Longitude de référence (ex. -0.2467) | | radius_nm | number | oui | Rayon de recherche en milles nautiques | | max_results | number | non | Limiter le nombre de résultats |

search_wrecks_bbox

Recherche dans une zone rectangulaire (bounding box).

| Paramètre | Type | Requis | Description | |-----------|------|:------:|-------------| | min_lat | number | oui | Limite sud (ex. 49.1) | | max_lat | number | oui | Limite nord (ex. 49.6) | | min_lon | number | oui | Limite ouest (négatif = ouest, ex. -1.1) | | max_lon | number | oui | Limite est (ex. 0.1) | | max_results | number | non | Limiter le nombre de résultats |

get_wreck_details

Fiche complète d'une épave par son identifiant SHOM.

| Paramètre | Type | Requis | Description | |-----------|------|:------:|-------------| | id | string | oui | ID SHOM (ex. "wrecks.42" ou "42") |

Champs de données

Chaque épave de la base SHOM peut contenir :

| Champ | Description | |-------|-------------| | nom | Nom de l'épave (null si inconnu) | | latitude / longitude | Position GPS en degrés décimaux (WGS84) | | brassiage | Profondeur d'eau au-dessus de l'épave au zéro hydrographique, en mètres. Ce n'est pas la profondeur du fond — c'est la hauteur d'eau au-dessus du point le plus haut de l'épave | | precis_bra | Précision du brassiage | | caract_bat | Caractéristiques du navire (type, tonnage, etc.) | | caract_obj | État de l'objet sur le fond (intact, disloqué, etc.) | | circ_nauf | Circonstances du naufrage (torpillé, tempête, collision, etc.) | | long_obj | Longueur de l'objet en mètres | | precis_loc | Précision de la localisation en mètres | | type_obj | Type d'objet | | inspireid | Identifiant européen INSPIRE |

Source de données

Toutes les données proviennent de l'API WFS ouverte du SHOM :

| | | |---|---| | Endpoint | https://services.data.shom.fr/INSPIRE/wfs | | Couche | EPAVES_BDD_WFS:wrecks | | Protocole | WFS 1.1.0 (standard OGC), sans authentification | | Système de coordonnées | EPSG:4326 (WGS84) | | Couverture | Eaux métropolitaines et outre-mer françaises |

Plus d'infos : data.shom.fr

Prérequis

Installation

# Cloner le repo
git clone https://github.com/dorian-erkens/mcp-shom-wrecks.git
cd mcp-shom-wrecks

# Installer et compiler
npm install
npm run build

Important : le dossier dist/ n'est pas commité — il faut lancer npm run build avant de pouvoir démarrer le serveur.

Configuration dans Claude Code

Ajouter dans ~/.claude/settings.json :

{
  "mcpServers": {
    "shom-wrecks": {
      "command": "node",
      "args": ["/chemin/vers/mcp-shom-wrecks/dist/index.js"]
    }
  }
}

Puis relancer Claude Code. Les 4 outils seront disponibles automatiquement.

Lancement autonome

npm start

Le serveur communique via stdin/stdout en JSON-RPC (protocole MCP). Ce n'est pas un serveur HTTP — Claude Code (ou tout client MCP) le lance comme processus enfant.

Commandes

| Commande | Description | |----------|-------------| | npm install | Installer les dépendances (@modelcontextprotocol/sdk, zod, TypeScript) | | npm run build | Compiler TypeScript (src/dist/) | | npm start | Démarrer le serveur MCP (node dist/index.js) |

Exemples de requêtes

Une fois configuré, posez vos questions en langage naturel :

"Cherche l'épave du Courbet"
  → search_wreck_by_name(name: "Courbet")

"Quelles épaves sont à moins de 5 milles de Ouistreham ?"
  → get_nearby_wrecks(lat: 49.28, lon: -0.2467, radius_nm: 5)

"Liste les épaves entre 49.1°N et 49.5°N, de -1°W à 0°E"
  → search_wrecks_bbox(min_lat: 49.1, max_lat: 49.5, min_lon: -1.0, max_lon: 0)

"Donne-moi les détails de l'épave wrecks.1234"
  → get_wreck_details(id: "wrecks.1234")

"What wrecks are near the D-Day beaches?"
  → get_nearby_wrecks with appropriate coordinates

Fonctionne en français ou en anglais — les paramètres des outils sont les mêmes.

Stack technique

  • TypeScript — mode strict
  • @modelcontextprotocol/sdk — framework serveur MCP
  • zod — validation des entrées
  • SHOM WFS API — source de données (requêtes live, pas de base locale)

Comment ça marche

  1. Le serveur MCP démarre sur stdio et enregistre 4 outils
  2. À chaque appel, il construit une requête WFS GetFeature avec les filtres appropriés (BBOX, CQL_FILTER ou FEATUREID)
  3. L'API SHOM renvoie des features GeoJSON
  4. Les résultats sont parsés, enrichis (calculs distance/relèvement pour les recherches de proximité) et formatés en markdown

Les recherches par nom utilisent des filtres CQL ILIKE côté serveur, avec un fallback côté client si le filtre n'est pas supporté. Les calculs de distance utilisent la navigation plane (suffisant pour les portées typiques de planification de plongée).

Utilisé par

  • Dive Director — Assistant DP pour Claude Code (8 agents, /plan-dive)
  • Dive Director App — Web app (FastAPI + React) avec carte des épaves, chat IA et inspector panel

Licence

MIT

Auteur

Dorian Erkens


English

mcp-shom-wrecks is an MCP (Model Context Protocol) server that exposes the SHOM (French Naval Hydrographic Service) wreck database — 4,796+ shipwrecks across all French waters — to AI assistants like Claude Code.

Designed for dive planning, nautical research, and historical exploration.

4 tools available

| Tool | Description | |:---:|---| | search_wreck_by_name | Search wrecks by name (partial, case-insensitive) | | get_nearby_wrecks | Find wrecks near a GPS position, sorted by distance | | search_wrecks_bbox | Search wrecks in a geographic bounding box | | get_wreck_details | Get the full record of a wreck by SHOM ID |

Quick start

git clone https://github.com/dorian-erkens/mcp-shom-wrecks.git
cd mcp-shom-wrecks
npm install && npm run build

Add to ~/.claude/settings.json:

{
  "mcpServers": {
    "shom-wrecks": {
      "command": "node",
      "args": ["/path/to/mcp-shom-wrecks/dist/index.js"]
    }
  }
}

Then restart Claude Code. The 4 tools are available automatically — just ask in natural language:

  • "Search for the Courbet wreck"search_wreck_by_name
  • "What wrecks are within 5 miles of Ouistreham?"get_nearby_wrecks
  • "What wrecks are near the D-Day beaches?"get_nearby_wrecks
  • "List wrecks between 49.1°N–49.5°N, -1°W–0°E"search_wrecks_bbox
  • "Give me details on wreck wrecks.1234"get_wreck_details

Works in French or English — the data source (SHOM) covers all French metropolitan and overseas waters.

Data source

All data comes from the SHOM open data WFS API (WFS 1.1.0, no authentication required, EPSG:4326). Live queries — no local database needed.

Used by

  • Dive Director — AI-powered Dive Director assistant for Claude Code (8 agents, /plan-dive)
  • Dive Director App — Web app (FastAPI + React) with wreck map, AI chat, and inspector panel
快速设置
此服务器的安装指南

安装包 (如果需要)

npx @modelcontextprotocol/server-mcp-shom-wrecks

Cursor 配置 (mcp.json)

{ "mcpServers": { "dorian-erkens-mcp-shom-wrecks": { "command": "npx", "args": [ "dorian-erkens-mcp-shom-wrecks" ] } } }