SNCF API MCP Server

by Kryzo
Verified

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Integrations

  • Uses pandas for station lookup functionality via CSV database of European train stations with coordinates

  • Provides access to the French National Railway's (SNCF) API services for journey planning, station information, schedule checking, and disruption monitoring across France

SNCF API MCP サーバー

このプロジェクトは、SNCF API 用のモジュール式 Python ラッパーを提供します。MCP サーバー インターフェイスは、Claude Desktop とシームレスに統合され、フランス全土でのインテリジェントな旅程計画と列車情報の取得を実現します。

目次

概要

SNCF MCP サーバーは、フランス国鉄 (SNCF) の API サービスへの包括的なインターフェイスを提供し、次のことが可能になります。

  • フランスの都市間の鉄道旅行を計画する
  • 駅の詳細情報を取得する
  • 出発と到着のスケジュールを確認する
  • サービス中断を監視する
  • 近くの場所や交通手段を探す

構造は次のように構成されています。

  • sncf_api/ - SNCF APIインタラクションのメインパッケージ
    • __init__.py - パッケージの初期化
    • config.py - 構成設定
    • client.py - ベース API クライアント
    • api.py - すべてのモジュールを組み合わせたメインAPIインターフェース
    • search.py - 検索関連のエンドポイント
    • journey.py - 旅程計画エンドポイント
    • stations.py - 駅関連のエンドポイント
    • networks.py - ネットワークとトランスポートモードのエンドポイント
    • disruptions.py - 中断関連のエンドポイント
    • station_finder.py - 座標による効率的な駅検索
    • csv_station_finder.py - CSV データベースを使用した駅の検索
    • vehicle_journey.py - 詳細な列車の旅程情報
  • sncf_server.py - すべてのツールエンドポイントを備えた MCP サーバーの実装
  • train_stations_europe.csv - 座標付きヨーロッパの鉄道駅のデータベース

特徴

  • インテリジェントな旅程計画:自動駅選択機能でフランスのあらゆる都市間の旅行を計画
  • 包括的な駅の詳細: 次のような駅の詳細情報を取得します。
    • 利用可能な交通手段(電車、バス、路面電車)
    • 近くの場所や名所
    • 座標とアクセス情報
  • リアルタイムスケジュール:最新の出発・到着情報にアクセス
  • 中断監視: サービス中断に関する最新情報を入手
  • スマートステーション検索: 都市名、駅名、または座標で駅を検索します
  • フォールバックメカニズム: 主要都市の座標がハードコードされているため、API検索が失敗した場合でも信頼性が確保されます。
  • 詳細なログ記録: デバッグと監視のための包括的なログ記録

インストール

前提条件

  • Python 3.6以上
  • pip (Python パッケージ マネージャー)

ステップ1: リポジトリのクローンを作成する

git clone https://github.com/yourusername/sncf-mcp-new.git cd sncf-mcp-new

ステップ2: 依存関係をインストールする

pip install -r requirements.txt

requirements.txt ファイルが見つからない場合は、次のパッケージをインストールします: request mcp

pip install requests pandas mcp

APIキーの取得

このサーバーを使用する前に、SNCF から API キーを取得する必要があります。

  1. SNCF APIポータルにアクセスしてください
  2. アカウントを作成するかログインしてください
  3. 「Navitia」APIサービスに登録する
  4. 登録手続きを完了する
  5. 承認されると、アカウントダッシュボードにAPIキーが届きます。

API キーは UUID 文字列のように見えます (例: 01293485-3NS3-3242-23AZ-3241324512 )。

構成

Claudeデスクトップの設定

SNCF MCP ツールを Claude Desktop と統合するには:

  1. Claude Desktopをまだインストールしていない場合はインストールしてください
  2. Open Claude デスクトップ構成:
    • Claudeデスクトップの設定に移動します
    • 構成ファイルを開きます(通常は%APPDATA%\Claude\claude_desktop_config.jsonにあります)。
{ "sncf": { "command": "py", "args": [ "c:\\Users\\ChristianELHAJJ\\sncf-mcp-new\\sncf_server.py", "--api-key={YOUR-API-KEY}" ], "cwd": "c:\\Users\\ChristianELHAJJ\\sncf-mcp-new" },

path/to/sncf-mcp-newインストール ディレクトリへの実際のパスに置き換えます。

  1. 設定ファイルを保存し、Claude Desktopを再起動します。

利用可能なMCPツール

設定が完了すると、Claude Desktop で次のツールが利用できるようになります。

旅程計画

plan_journey_by_city_names

フランスの 2 つの都市間の旅を計画します。

パラメータ:

  • from_city : 出発都市名(例:「パリ」)
  • to_city : 目的地の都市名(例:「マルセイユ」)
  • datetime : 出発時刻または到着時刻(オプション)(形式:YYYYMMDDTHHMMSS)
  • datetime_represents : "departure" または "arrival" (デフォルト: "departure")
  • include_station_details : 詳細な駅情報を含めるかどうか

クロードへのプロンプトの例:

Plan a train journey from Paris to Lyon tomorrow morning at 8 AM.

駅情報

get_station_details

都市内の鉄道駅に関する包括的な詳細情報を入手します。

パラメータ:

  • city_name : 駅を検索する都市の名前
  • station_name : オプションの特定の駅名
  • station_id : オプションの直接ステーションID
  • include_transport_types : トランスポートタイプ分析を含めるかどうか
  • include_nearby_places : 近くの場所の情報を含めるかどうか
  • nearby_distance : 近くの場所の検索半径(メートル)
  • nearby_count : 返される近くの場所の最大数

クロードへのプロンプトの例:

What transport options are available at the main train station in Grenoble?

get_station_schedule

駅の出発と到着のスケジュールを取得します。

パラメータ:

  • city_name : 駅を検索する都市の名前
  • station_name : オプションの特定の駅名
  • station_id : オプションの直接ステーションID
  • count : 返送する出発/到着便の数
  • datetime : 開始するオプションの日時
  • duration : 秒単位でのオプションの継続時間
  • data_freshness : データの鮮度レベル(リアルタイムまたはベーススケジュール)

クロードへのプロンプトの例:

Show me the next 5 train departures from Paris Gare de Lyon.

混乱監視

check_disruptions

SNCF 輸送ネットワークの現在の混乱を確認してください。

パラメータ:

  • coverage : カバレッジエリア(デフォルト: "sncf")
  • count : 返される中断の最大数
  • station_id : 特定の駅のオプションフィルター
  • line_id : 特定の行のオプションフィルター
  • since : この日付以降の中断のみ有効
  • until : この日付以前の中断のみ有効
  • fetch_train_details : 影響を受ける列車に関する追加の詳細を取得するかどうか

クロードへのプロンプトの例:

Are there any current disruptions affecting trains to Marseille?

使用例

旅の計画

クロードにフランスの任意の 2 つの都市間の旅程を計画するよう依頼できます。

I need to travel from Paris to Nice next Friday at 2 PM. Can you find me a train?

Claude はplan_journey_by_city_namesツールを使用して次のことを行います。

  1. 両都市の主要駅を探す
  2. それらの間の最適な旅程を計画する
  3. 出発/到着時刻、所要時間、接続の詳細を表示します

駅情報の取得

ステーションの詳細情報を取得するには:

What facilities and transport options are available at Gare de Lyon in Paris?

Claude はget_station_detailsツールを使用して以下を提供します。

  1. 駅の基本情報(名称、ID、座標)
  2. 利用可能な交通手段(電車、バス、路面電車)
  3. 近くの場所や名所

列車のスケジュールを確認する

今後の出発便または到着便を確認するには:

When are the next trains leaving from Bordeaux to Paris today?

Claude はget_station_scheduleツールを使用して次の内容を表示します。

  1. ボルドー発の今後の出発便
  2. 目的地情報
  3. プラットフォームの詳細(入手可能な場合)
  4. リアルタイムのステータス更新

中断の監視

サービスの中断を確認するには:

Are there any disruptions affecting the Paris to Lyon route today?

Claude はcheck_disruptionsツールを使用して次のことを行います。

  1. 関連する混乱を見つける
  2. サービスへの影響を説明する
  3. 影響を受ける列車に関する追加情報を提供する

トラブルシューティング

よくある問題

「APIキーが提供されていません」

  • Claude Desktop の設定に SNCF API キーを追加したことを確認してください。
  • MCPサーバー構成で環境変数が正しく参照されていることを確認します

「市内の駅が見つかりません」

  • より具体的な都市名を使ってみてください
  • 小さな都市の場合は、近くの大きな都市の名前を使ってみてください
  • システムにはフランスの主要都市の座標がハードコードされており、確実に動作するはずです。

「SNCF APIへの接続に失敗しました」

  • インターネット接続を確認してください
  • APIキーが有効で期限切れでないことを確認してください
  • SNCF API がダウンしている可能性があります。しばらくしてからもう一度お試しください。

「CSV ステーション検索の初期化中にエラーが発生しました」

  • train_stations_europe.csvファイルが正しい場所にあることを確認します
  • ファイルの権限をチェックして、ファイルが読み取り可能であることを確認してください

高度な機能

ハードコードされた座標

システムには、API 検索が失敗した場合でも信頼性を確保するために、フランスの主要都市の座標がハードコードされています。

  • パリ(48.853, 2.348)
  • マルセイユ(43.303、5.380)
  • リヨン(45.760, 4.860)
  • トゥールーズ(43.611, 1.454)
  • ニース(43.704, 7.262)
  • ナント(47.217、-1.542)
  • ストラスブール(48.585, 7.735)
  • ボルドー(44.826、-0.556)
  • リール(50.638, 3.072)
  • レンヌ(48.103、-1.672)
  • グルノーブル(45.192, 5.716)

輸送タイプ分析

get_station_detailsツールは、駅で利用できる交通手段の種類を分析し、分類することができます。

  • 長距離列車(TGV、インターシテ)
  • 地域列車(TER)
  • 地域交通機関(バス、路面電車、地下鉄)
  • その他のサービス(タクシー、自転車シェアリング)

近くの場所を検索

駅詳細ツールでは、駅の近くの興味のある場所を見つけることができます。

  • その他の交通機関の停留所
  • 公共施設
  • 興味のある場所
  • アドレスポイント

この機能は、駅から次の旅程を計画している旅行者にとって特に便利です。


貢献

SNCF MCP サーバーの改善への貢献を歓迎します。バグや機能のリクエストについては、プルリクエストを送信したり、問題を報告したりしてお気軽にお問い合わせください。

ライセンス

このプロジェクトは MIT ライセンスに基づいてライセンスされています - 詳細については LICENSE ファイルを参照してください。

謝辞

  • APIを提供してくれたSNCF
  • 包括的な公共交通APIを提供するNavitiaチーム
  • インテリジェントな統合機能を実現するClaude AI

Christian delage ( dr.christian.delage@gmail.com ) 作成

ID: uvbp7vugox