DB Timetable MCP Server

Integrations

  • Supports configuration through .env files for storing API credentials and server settings.

  • Handles content licensed under Creative Commons Attribution 4.0 International License (CC BY 4.0), ensuring proper attribution for Deutsche Bahn timetable data.

  • Provides access to Deutsche Bahn timetable data, including current schedules, planned timetables, schedule changes, and station search functionality through the Deutsche Bahn API.

DB時刻表MCPサーバー

ドイツ鉄道時刻表 API 用のモデル コンテキスト プロトコル (MCP) サーバー。サーバーは、時刻表データ、駅情報、列車の変更にアクセスするための MCP ツールとリソースを提供します。

命名義務:

このプロジェクトは、クリエイティブ コモンズ アトリビューション 4.0 国際ライセンス (CC BY 4.0)に基づいて公開されているドイツ鉄道の時刻表データを提供します。

API およびライセンス条件の詳細については、 developers.deutschebahn.comをご覧ください。 API リクエストにはライセンスの条件が適用されます。

機能

  • 現在の時刻表: 駅の現在の時刻表データを取得します
  • 時刻表の変更:最新の変更を追跡する
  • 予定時刻表: 特定の時間の予定時刻表データへのアクセス
  • 駅検索:駅名またはコードで駅を検索します

要件

  • Node.js 18以上
  • DBタイムテーブルAPIのAPI認証情報(クライアントIDとクライアントシークレット)

インストール

  1. リポジトリのクローン:
    git clone <repository-url> cd db-mcp
  2. 依存関係をインストールします:
    npm install
  3. TypeScript コードをコンパイルします。
    npm run build

構成

次の環境変数を使用して、プロジェクトのルート ディレクトリに.envファイルを作成します。

DB_TIMETABLE_CLIENT_ID=deine-client-id DB_TIMETABLE_CLIENT_SECRET=dein-client-secret TRANSPORT_TYPE=stdio PORT=8080 SSE_ENDPOINT=/sse LOG_LEVEL=info

設定オプション

  • DB_TIMETABLE_CLIENT_ID : DB APIのクライアントID(必須)
  • DB_TIMETABLE_CLIENT_SECRET : DB APIのクライアントシークレット(必須)
  • TRANSPORT_TYPE : MCP サーバーのトランスポートタイプ ( stdioまたはsse 、デフォルト: stdio )
  • PORT : SSEサーバーのポート(デフォルト: 8080
  • SSE_ENDPOINT : SSE接続のエンドポイント(デフォルト: /sse
  • LOG_LEVEL : ログレベル ( debuginfowarnerror 、デフォルト: info )

使用

サーバーを起動する

stdio モード (CLI テストおよびデバッグ用):

npm start

SSE モード (Web クライアントの場合):

TRANSPORT_TYPE=sse npm start

検査モードでテストする

サーバーは FastMCP Inspector を使用してテストできます。

npx fastmcp inspect path/to/index.js

MCPツール

サーバーは次のツールを提供します。

  1. getCurrentTimetable : 駅の現在の時刻表データを取得します
    • パラメータ: evaNo - 駅のEVA番号(例:フランクフルト中央駅の場合は8000105)
  2. getRecentChanges : ステーションの最近の変更を取得します
    • パラメータ: evaNo - 駅のEVA番号(例:フランクフルト中央駅の場合は8000105)
  3. getPlannedTimetable : 駅の予定時刻表データを取得します
    • パラメータ:
      • evaNo - 駅のEVA番号(例:フランクフルト中央駅の場合は8000105)
      • date - YYMMDD形式の日付(例:2023年4月1日の場合は230401)
      • hour - HH 形式の時間 (例: 午後 2 時の場合は 14)
  4. findStations : 検索パターンを使用してステーションを検索します
    • パラメータ: pattern - 検索パターン(例:「Frankfurt」または「BLS」)

MCPリソース

サーバーは次のリソースを提供します。

  1. 現在の時刻表データ: db-api:timetable/current/{evaNo}
  2. 現在の時刻表の変更: db-api:timetable/changes/{evaNo}
  3. 計画時刻表データ: db-api:timetable/planned/{evaNo}/{date}/{hour}
  4. 駅検索: db-api:station/{pattern}

発達

プロジェクト構造

db-mcp/ ├── src/ │ ├── api/ # API-Client und Typen │ ├── tools/ # MCP-Tools │ ├── resources/ # MCP-Ressourcen │ ├── utils/ # Hilfsfunktionen │ ├── config.ts # Konfiguration │ └── index.ts # Haupteinstiegspunkt ├── dist/ # Kompilierte Dateien ├── .env # Umgebungsvariablen ├── package.json ├── tsconfig.json └── README.md

NPMスクリプト

  • npm run build : TypeScriptコードをコンパイルする
  • npm start : サーバーを起動します
  • npm run dev : 自動リロードで開発モードでサーバーを起動します
  • npm test : テストを実行する

拡張性

潜在的な拡張

  1. データ処理と拡充
    • セマンティック時刻表データ処理: XML からセマンティックエンリッチメントによる構造化 JSON へ
    • 遅延や混乱に関する履歴データ分析
    • 複合輸送接続の統合
  2. 高度なMCPツール
    • 駅間のルート計画
    • AIベースの遅延と容量予測
    • 旅行中断分析
    • 駅や乗り換えのアクセシビリティチェック

ライセンス

MCP サーバー: MIT ライセンス

DBタイムテーブルAPI:クリエイティブ・コモンズ 表示4.0 国際ライセンス

-
security - not tested
A
license - permissive license
-
quality - not tested

モデル コンテキスト プロトコルのツールとリソースを通じて、ドイツ鉄道の列車の時刻表、駅情報、スケジュールの変更にアクセスできるようにします。

  1. Funktionen
    1. Voraussetzungen
      1. Installation
        1. Konfiguration
          1. Konfigurationsoptionen
        2. Verwendung
          1. Server starten
          2. Mit Inspect-Modus testen
          3. MCP-Tools
          4. MCP-Ressourcen
        3. Entwicklung
          1. Projekt-Struktur
          2. NPM-Skripte
        4. Erweiterbarkeit
          1. Lizenz
            ID: bgzurp6esf