🚀 🚌 Mo Bus / Ama Bus MCP Server (非公式)
オリッサ州の首都圏におけるAI搭載のバス路線計画サーバーで、自然言語でのクエリに対応。ClaudeやChatGPTなどのAIアシスタントから簡単にバスの路線を計画できます。
🚀 クイックスタート
1. サーバーの起動 (スタンドアロン)
source .venv/bin/activate
.venv\Scripts\activate
python -m src.server
サーバーはMCPクライアント接続を待機します。
2. Claude Desktopとの連携設定
- Claude.ai から Claude Desktop をインストールします。
- Claude Desktopの設定ファイルを編集 します。
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Linux:
~/.config/Claude/claude_desktop_config.json
- Mo Busサーバーの設定を追加 します。
{
"mcpServers": {
"mo-bus": {
"command": "python",
"args": ["-m", "src.server"],
"cwd": "C:\\path\\to\\MoBusMCP",
"env": {
"PYTHONPATH": "C:\\path\\to\\MoBusMCP",
"SERPAPI_KEY": "your_serpapi_key_here"
}
}
}
}
- Claude Desktopを再起動 します。
- 旅程の計画を始めましょう!
✨ 主な機能
🚏 インテリジェントな旅程計画
- 自然言語クエリ — 平易な英語で質問できます。
- スマートなジオコーディング — Google Maps (SerpAPI) + OpenStreetMapを使用します。
- 最寄りの停留所検出 — 自動的に最寄りのMo Bus停留所を見つけます。
- 複数の路線提案 — 長所と短所を含む代替案を取得できます。
- 徒歩距離の計算 — 正確な徒歩距離を知ることができます。
- リアルタイムの運賃推定 — 距離と路線に基づいて算出されます。
🗺️ 包括的なカバレッジ
- 60以上のバス路線 — 主要な回廊をカバーしています。
- 734のバス停留所 — ブバネシュワール、カッタック、プリを含む地域にあります。
- 3つの主要都市 — 首都圏の交通網を提供します。
- 特別サービス — 空港、駅、病院への路線もあります。
🤖 AIネイティブな設計
- MCPプロトコル — Claude Desktop、ChatGPTなどと連携可能です。
- FastMCPフレームワーク — クリーンでモダンなPython実装です。
- ツールベースのアーキテクチャ — モジュール化された拡張可能な設計です。
- コンテキスト認識 — ランドマーク、住所、口語的な名称を理解します。
🔧 開発者フレンドリー
- 充実したドキュメント — コードには包括的なコメントが付いています。
- 拡張が容易 — モジュール化されたサービスアーキテクチャです。
- 環境変数による設定 — 簡単な
.env 設定です。
- 包括的なエラーハンドリング — エラーが発生しても適切に対応します。
🗺️ 公式バスネットワークマップ
これは、オリッサ州の首都圏都市交通 (CRUT) ネットワークの完全な停留所と路線マップです。

**完全なバスネットワーク: 60以上の路線 | 734の停留所 | ブバネシュワール • カッタック • プリ**
マップのカバレッジ
- 主要ネットワーク — 都市中心部を結ぶすべての主要路線。
- 停留所の位置 — すべてのバス停留所の正確な地理的位置。
- 路線詳細 — 識別しやすいように色分けされた路線。
- 接続地点 — 交通ハブや乗り換え駅。
- サービスエリア — 空港、駅、病院、教育機関。
最新の公式情報については、CRUT公式ウェブサイト を訪問してください。
🏗️ アーキテクチャ
システム設計
graph TD
subgraph Client["🖥️ クライアント層"]
Claude["Claude Desktop"]
ChatGPT["ChatGPT"]
Other["その他のAIクライアント"]
end
subgraph MCP["🔌 MCPプロトコル層"]
Protocol["stdin/stdout/HTTPS通信"]
end
subgraph Server["🚀 MCPサーバー層<br/>FastMCP"]
Journey["旅程計画"]
Route["路線探索"]
Fare["運賃計算"]
end
subgraph Service["🌐 サービス層"]
Geocoding["ジオコーディングサービス<br/>SerpAPI + Nominatim"]
SerpAPI["Google Maps<br/>SerpAPI"]
OSM["OpenStreetMap<br/>Nominatim"]
end
subgraph Data["💾 データ層"]
JSON["JSONデータストア"]
Routes["60以上の路線"]
Stops["734の停留所"]
Fares["運賃構造"]
end
Claude --> Protocol
ChatGPT --> Protocol
Other --> Protocol
Protocol --> Journey
Protocol --> Route
Protocol --> Fare
Journey --> Geocoding
Route --> Geocoding
Fare --> JSON
Geocoding --> SerpAPI
Geocoding --> OSM
JSON --> Routes
JSON --> Stops
JSON --> Fares
classDef clientStyle fill:#FF6B6B,stroke:#C92A2A,color:#fff,stroke-width:2px
classDef protocolStyle fill:#4ECDC4,stroke:#088395,color:#fff,stroke-width:2px
classDef serverStyle fill:#95E1D3,stroke:#38ADA9,color:#000,stroke-width:2px
classDef serviceStyle fill:#FFE66D,stroke:#F4A261,color:#000,stroke-width:2px
classDef dataStyle fill:#A8DADC,stroke:#457B9D,color:#000,stroke-width:2px
class Client clientStyle
class MCP protocolStyle
class Server serverStyle
class Service serviceStyle
class Data dataStyle
コンポーネントの分解
| コンポーネント |
技術 |
目的 |
| サーバーフレームワーク |
FastMCP 2.0 |
MCPプロトコルの実装 |
| ジオコーディング |
SerpAPI + OSM Nominatim |
場所を座標に変換 |
| 旅程計画 |
カスタムアルゴリズム |
路線の探索と最適化 |
| データストレージ |
JSON |
路線、停留所、運賃データの保存 |
| 距離計算 |
ハーベルサイン公式 |
徒歩距離の計算 |
| 言語サポート |
Python 3.10以上 |
コア実装 |
プロジェクト構造
AmABUSMCP/
├── src/
│ ├── __init__.py # パッケージの初期化
│ ├── server.py # FastMCPサーバーのエントリーポイント
│ ├── data/
│ │ ├── __init__.py # データの読み込みとヘルパー関数
│ │ └── (データユーティリティ)
│ ├── services/
│ │ ├── __init__.py
│ │ ├── geocoding.py # SerpAPI + OSMのジオコーディングサービス
│ │ └── planner.py # 旅程計画アルゴリズム
│ └── utils/
│ ├── __init__.py
│ └── distance.py # ハーベルサイン距離の計算
├── asset/
│ ├── ALL STOP AND ROUT MAP.png # 公式ネットワークマップ
│ ├── homescreen_logo-*.png # Mo Busのロゴ
│ ├── crut_logo-*.png # CRUTのロゴ
│ └── AMA_BUS_ODIA-*.png # Ama Busのロゴ
├── mo_bus_complete_database.json # 完全な路線と停留所のデータベース
├── requirements.txt # Pythonの依存関係
├── pyproject.toml # プロジェクトの設定
├── .env.example # 環境変数のサンプル
├── .gitignore # Gitの無視ルール
└── README.md # このファイル
📦 インストール
前提条件
- Python 3.10 以上 — Pythonをダウンロード
- pip または uv (高速インストールに推奨)
- SerpAPIキー (オプション、高度なジオコーディング用)
- Git — リポジトリをクローンするために必要
方法1: uv を使用する (推奨 - 最速)
uv はRustで書かれた超高速Pythonパッケージインストーラーです。
curl -LsSf https://astral.sh/uv/install.sh | sh
git clone https://github.com/HimanshuMohanty-Git24/MoBusMCP.git
cd MoBusMCP
uv venv
.venv\Scripts\activate
source .venv/bin/activate
uv sync
方法2: pip を使用する
git clone https://github.com/HimanshuMohanty-Git24/MoBusMCP.git
cd MoBusMCP
python -m venv venv
venv\Scripts\activate
source venv/bin/activate
pip install -r requirements.txt
環境設定
プロジェクトのルートに .env ファイルを作成します。
SERPAPI_KEY=your_serpapi_key_here
LOG_LEVEL=INFO
DEBUG_MODE=false
無料のSerpAPIキーを取得するには:
- SerpAPI にアクセスします。
- 無料アカウントにサインアップします (無料クレジット付き)。
- APIキーをコピーします。
.env ファイルに追加します。
💻 使用例
基本的な使用法
以下のような質問をClaudeに投げかけてみてください。
💬 "空港に行くすべてのバス路線を教えて"
💬 "私はKIITキャンパスにいて、朝8:30にアチャリヤ・ヴィハー広場近くのアクセンチュアに行きたい。どのバスに乗ればいいですか?"
💬 "マスター食堂に停まるバスはどれ?"
💬 "バラムンダからナンダカナン動物園までの運賃を計算して"
💬 "朝8:30にKIITからアチャリヤ・ヴィハーのアクセンチュアまでの通勤ルートを計画して"
💬 "10番路線のすべての停留所はどこですか?"
💬 "カッタックからブバネシュワールに行くにはどうすればいいですか?"
💬 "私の現在位置 (ランドマークを指定) の最寄りのバス停留所を見つけて"
Claudeは次のような構造化されたレスポンスを提供します。
📍 出発地: [あなたの出発地点]
📍 目的地: [あなたが行きたい場所]
🚌 バスの選択肢: [利用可能な路線番号]
🚶 徒歩距離: [最寄りの停留所まで]
⏱️ 旅程時間: [推定所要時間]
💰 運賃: [推定コスト]
📅 代替路線: [利用可能な場合]
高度な使用法
- 複数区間の旅程 — 自動的な乗り換え提案があります。
- 時間ベースの計画 — ラッシュアワーや時刻表を考慮します。
- 徒歩の最適化 — 徒歩距離を最小化します。
- 運賃計算 — 実際の路線に基づいて算出されます。
⚙️ 設定
SerpAPIの設定 (オプションだが推奨)
SerpAPIは正確なGoogle Mapsジオコーディングを提供し、より良い場所のマッチングを可能にします。
SerpAPIを使用しない場合:システムは無料のOpenStreetMap Nominatimにフォールバックします (動作しますが、精度が低くなります)。
設定手順
- SerpAPI で サインアップ します (無料プランあり)。
- ダッシュボードから APIキーを取得 します。
.env ファイルに追加します。
SERPAPI_KEY=your_key_here
- サーバーを再起動 します。
カスタマイズ
新しい路線の追加
mo_bus_complete_database.json を編集します。
{
"routes": {
"NEW_ROUTE": {
"route_number": "NEW_ROUTE",
"route_name": "Start Point ↔ End Point",
"start": "Start Location",
"end": "End Location",
"via": "Via Points",
"stops": ["Stop 1", "Stop 2", "Stop 3"],
"distance_km": 10,
"service": "Regular"
}
}
}
新しい停留所の追加
src/data/__init__.py に座標を追加します。
coordinate_map = {
'your_stop_id': {'lat': 20.2961, 'lon': 85.8245},
'another_stop': {'lat': 20.3000, 'lon': 85.8300},
}
環境変数
LOG_LEVEL=INFO|DEBUG|WARNING|ERROR
DEBUG_MODE=true|false
API_TIMEOUT=30
MAX_WALKING_DISTANCE=5
📊 データソース
データ取得プロセス
⚠️ 重要な注意事項:すべての路線と停留所のデータは開発者によって 手動で収集および編集 されました。そのプロセスは以下の通りです。
1. ソースの収集
- CRUTウェブサイト から公式の路線マップをダウンロードしました。
- Mo Bus/Ama Busアプリから路線画像を収集しました。
- 公式ソースから時刻表のPDFを収集しました。
- OpenStreetMapのデータと照合しました。
2. データの抽出
- 大規模言語モデル (GPT - 4、Claude) を使用して画像からデータを変換しました。
- 出力を手動で検証し、照合しました。
- 複数回の反復処理で路線をバッチで解析しました。
- 実際の観測結果と照合して検証しました。
3. データの統合
- すべての解析された路線を統一されたJSON形式に結合しました。
- GPSを使用して主要な停留所の座標を手動で追加しました。
- 路線の順序と接続地点を検証しました。
- 包括的な運賃表を作成しました。
データの精度とカバレッジ
⚠️ データには不正確さが含まれる可能性があります:
- 一部の路線が古くなっている場合があります (CRUTは定期的に路線を更新します)。
- 停留所の名前が公式ソースと異なる場合があります。
- 座標が正確でない場合があります。
- CRUTによって追加された新しい路線が含まれていない場合があります。
- 廃止された路線がまだ存在する場合があります。
現在のカバレッジ:
- ✅ 60以上の路線 (CRUTが運行する84以上の路線のうち)
- ✅ 734のバス停留所
- ✅ 首都圏の18の都市/地域
- ⚠️ 約70%の路線カバレッジ
データの改善に協力する
私たちはコミュニティの貢献を積極的に求めています!もしあなたが以下のような問題を発見した場合:
- ❌ 不正確な路線情報
- ❌ 欠落しているバス停留所
- ❌ 間違った停留所の順序
- ❌ 古い路線
- ❌ 座標の不正確さ
貢献してください:
- GitHub Issues で詳細を記載して Issueを作成 します。
- 修正を含む Pull Requestを提出 します。
- あなたが持っている正確なデータを 共有 します。
優先的に必要なもの:
- 🔴 リアルタイムのバス位置
- 🔴 ライブの時刻表更新
- 🔴 正確な停留所の座標 (GPS)
- 🔴 欠落している44の路線のドキュメント
🤝 コントリビュート
コントリビューションは 大歓迎 です!開発者、データ愛好家、バスの利用者であれば、多くの方法で貢献することができます。
コントリビューションの種類
1. データの改善 (コーディング不要!)
- 欠落している路線を追加する
- 間違った停留所の順序を修正する
- 正確なGPS座標を追加する
- 路線の名前と詳細を更新する
- 既存のデータを検証する
2. コードの改善
- ジオコーディングの精度を向上させる
- 旅程計画アルゴリズムを最適化する
- 新しい機能を追加する (例: リアルタイム追跡)
- エラーハンドリングを改善する
- パフォーマンスを最適化する
- 単体テストを追加する
3. ドキュメント
- READMEを改善する
- コードのコメントとdocstringを追加する
- チュートリアル記事を作成する
- ドキュメントを翻訳する
- ビデオチュートリアルを作成する
4. 統合とパートナーシップ
- 他のAIプラットフォームと統合する
- ウェブ/モバイルインターフェースを構築する
- CLIツールを作成する
- モバイルアプリを開発する
コントリビューションのプロセス
git clone https://github.com/YOUR-USERNAME/MoBusMCP.git
cd MoBusMCP
git checkout -b feature/your-feature-name
git add .
git commit -m "Add: description of your changes"
git push origin feature/your-feature-name
コードスタイルガイド
- Pythonコードには PEP 8 を使用します。
- 可能な場合は 型ヒント を追加します。
- 関数には docstring を書きます。
- 複雑なロジックには コメント を追加します。
- 関数を 小さく、焦点を絞ったもの に保ちます。
コミットメッセージの形式
Type: Brief description (50 chars max)
Optional longer description explaining why the change was made.
Reference issues: #123, #456
種類: Add:, Fix:, Improve:, Docs:, Refactor:, Test:
🤝 協力の機会
🚨 CRUTとChaloチームへの呼びかけ!
宛先: 首都圏都市交通 (CRUT)
宛先: Chaloアプリ開発チーム
プロジェクト: Mo Bus MCP Server
こんにちは!私はこの 非公式 のMo Bus MCPサーバーの開発者で、普段Mo Busを利用する通勤者として、実際の通勤問題を解決するためにこのサーバーを開発しました。
私たちが構築したもの
- ✅ 動作するAI搭載の旅程計画システム — 自然言語インターフェース
- ✅ Claude、ChatGPT、その他のAIアシスタントとの統合 — MCPプロトコルを介して
- ✅ 60の路線と734の停留所 — 手動で編集され、検証されています
- ✅ スマートなジオコーディング — SerpAPI + OpenStreetMapを使用
- ✅ モジュール化された、拡張可能なアーキテクチャ — 機能拡張が容易
一緒に構築できるもの
- 🚀 リアルタイムのバス追跡 — ライブ位置情報の統合
- 🚀 ライブの時刻表更新 — CRUTシステムから直接取得
- 🚀 正確な公式の路線データ — あなた方のデータベースから
- 🚀 支払い統合 — AIを介したチケット予約用のRazorpay/UPI
- 🚀 アプリ内チケット予約 — Claude/ChatGPTを通じて直接
- 🚀 座席の空き状況 — リアルタイムのバスの混雑情報
- 🚀 遅延通知 — 即時のアラートと代替案
- 🚀 多言語サポート — オリヤ語、ヒンディー語、英語のインターフェース
協力する理由
CRUT/Chaloにとって:
- 📈 AIによるアクセシビリティ向上で乗客数を増やす
- 💡 新興技術を用いた通勤計画の革新
- 🌟 オリッサ州をAI先行の公共交通のリーダーとして紹介する
- 📉 インテリジェントな自動化によりサポート問い合わせを減らす
- 🤝 技術に精通した通勤者のコミュニティを築く
コミュニティにとって:
- ✨ 正確なリアルタイムの旅程計画
- 🎟️ AIを通じたシームレスなチケット予約
- 📱 すべてのユーザーにとって良い通勤体験
- 🚌 公共交通の利用を促進する
- 🌍 持続可能な都市移動の解決策
話し合いましょう!
私は以下のことに開いています:
- 🤝 公式のパートナーシップまたは協定
- 🔌 リアルタイムデータ用のAPIアクセス
- 👨💻 機能の共同開発
- 📜 ライセンス契約
- 💼 皆さんに最適な方法なら何でも!
連絡先:Issueを作成 するか、GitHubを通じて連絡してください。
⚠️ 免責事項
非公式プロジェクト
これは非公式の、コミュニティ主導のプロジェクトであり、以下の組織とは関係がなく、承認もされておらず、関連付けられていません:
- 首都圏都市交通 (CRUT)
- オリッサ州政府
- Chaloアプリまたはその開発者
- 公式のMo Bus/Ama Busサービスプロバイダー
- いかなる政府の交通当局
データの精度
保証は一切ありません:このプロジェクトの路線、停留所、時刻表データは:
- 不完全、古くなっている、または不正確 である可能性があります。
- 公開されているソースから 手動で編集 されています。
- 当局によって 公式に検証されていません。
- 旅程計画の 唯一の情報源として使用すべきではありません。
- 現在の運行状況を反映していない 可能性があります。
常に独自に確認する
旅行する前に、常に以下のことを確認してください:
- ✓ 公式のMo Bus/Ama Busアプリを確認する
- ✓ バスの車掌に路線を確認する
- ✓ CRUT公式ウェブサイト で公式の時刻表を確認する
- ✓ サービスの変更やストライキを確認する
責任免責
このプロジェクトの開発者およびメンテナは:
- このソフトウェアを 「現状のまま」 で提供し、いかなる保証も行いません。
- 以下のことに 責任を負いません:
- バスの乗り遅れや輸送の遅延
- 不正確または古い路線情報
- 旅行の不便や約束の誤り
- データの精度問題
- サービスの利用不可
- データの精度やサービスの可用性を 保証しません。
- このソフトウェアの使用によって生じるいかなる損害にも 責任を負いません。
自己責任で使用する
このMCPサーバーを使用することにより、あなたは以下のことを承認し、受け入れるものとします:
- これは 実験的な、コミュニティ主導のプロジェクト であること。
- データが 不正確または大幅に古くなっている 可能性があること。
- 重要な旅程情報を 独自に確認する こと。
- このツールを 完全に自己責任で使用する こと。
- 開発者を 一切の責任から免責する こと。
📄 ライセンス
MITライセンス — 詳細については LICENSE ファイルを参照してください。
簡単に言うと (TL;DR)
✅ あなたは以下のことができます:
- このプロジェクトを自由に使用する
- 修正して再配布する
- 商業的に使用する
- 派生作品を作成する
❌ あなたは以下のことをしなければなりません:
- 元のライセンスを含める
- 著作権表示を含める
- 私たちを責任から免れないようにする
結論:自由に使用して修正できますが、自己責任で使用してください!😊
📞 サポートとコミュニティ
ヘルプを得る
コミュニティ
- 🌟 役に立った場合はリポジトリをスターしてください
- 🍴 フォークして貢献し、プロジェクトを改善しましょう
- 💬 フィードバックや提案を共有してください
- 📣 他の通勤者にこのプロジェクトを広めましょう
🙏 謝辞とクレジット
組織
- CRUT (首都圏都市交通) — Mo Bus/Ama Busサービスを運営しています。
- オリッサ州政府 — 公共交通インフラを整備しています。
- Chaloアプリチーム — 元のMo Busアプリを開発しています。
技術とライブラリ
- FastMCP — 優れたMCPフレームワークの作成者
- Claude & ChatGPT — AI機能とデータ抽出に使用
- OpenStreetMap — 無料のマッピングデータとNominatimサービス
- SerpAPI — Google Mapsジオコーディングの統合に使用
- ハーベルサイン公式 — 正確な距離計算に使用