Bengaluru BMTC MCP Server について
Bengaluru BMTC MCP Serverは、Bengaluruのバス情報を照会するためのデータを提供します。リアルタイム位置、路線、停留所、到着予測に加え、近隣のバスや停留所の地理空間検索に対応します。
主な機能
- 01バス位置のリアルタイム追跡
- 02路線情報と時刻表
- 03停留所情報と到着予測
- 04近隣のバス・停留所検索
活用シーン
- 01バスの現在位置を確認
- 02路線と時刻表を調べる
- 03近くの停留所やバスを探す
- 04停留所への到着時刻を予測
MCP 対応
MCP サーバーとして、BMTCのバス位置、路線、停留所、到着予測データをMCPクライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Bengaluru BMTC MCP サーバー
Bangalore Metropolitan Transport Corporation(BMTC)のバスサービス向けに実装された Model Context Protocol(MCP)サーバーです。
アーキテクチャ
BMTC MCP サーバーは、モジュール式の階層アーキテクチャを採用しています。このシステムは、Bangalore Metropolitan Transport Corporation のバスからリアルタイムの交通データを取得し、標準化された API を通じて提供するよう設計されています。
コアコンポーネント
- API 層:認証、路線、停留所、バスの位置、到着予定時刻(ETA)情報を提供する RESTful エンドポイント
- サービス層:ビジネスロジック、データ変換、ETA の計算
- データアクセス層:Mongoose ODM を介した MongoDB との連携
- キャッシュ層:パフォーマンス向上のための Redis ベースのキャッシュ
- 外部連携層:BMTC API との連携
機能
MCP クライアントやチャットウィンドウから利用できる機能は次のとおりです。
- リアルタイムのバス位置追跡
- 路線情報と運行スケジュール
- 停留所の詳細と到着予定時刻(ETA)
- Bengaluru の 2,200 を超えるバス路線と 8,400 か所以上のバス停留所に対応
- 認証と認可
- データのキャッシュと最適化
- 近くの停留所やバスを検索する地理空間クエリ
前提条件
- Node.js(v14 以降)
- npm または yarn
- MongoDB
- Redis(任意。キャッシュ用)
- Git
インストールとセットアップ
方法 1:標準インストール
- リポジトリをクローンする
git clone https://github.com/ajeetraina/bengaluru-bmtc-mcp.git
cd bengaluru-bmtc-mcp
- 依存関係をインストールする
npm install
- 環境変数を設定する
cp .env.example .env
.env ファイルを編集して設定を行います。
PORT=3000
NODE_ENV=development
MONGO_URI=mongodb://localhost:27017/bmtc-mcp
REDIS_URI=redis://localhost:6379
API_KEY=your_api_key_here
JWT_SECRET=your_jwt_secret_here
JWT_EXPIRES_IN=86400
BMTC_API_ENDPOINT=https://bmtc-api-endpoint.example
BMTC_API_KEY=your_bmtc_api_key_here
CACHE_DURATION=300
LOG_LEVEL=info
- モックデータを使ってデータベースにデータを登録する(任意)
node src/scripts/seed.js
- サーバーを起動する
npm start
自動再起動を有効にして開発する場合:
npm run dev
方法 2:Docker Compose を使用する
- リポジトリをクローンする
git clone https://github.com/ajeetraina/bengaluru-bmtc-mcp.git
cd bengaluru-bmtc-mcp
- 環境変数を設定する(任意)
docker-compose.yml ファイル内の環境変数を直接変更するか、.env ファイルを作成できます。
cp .env.example .env
- コンテナをビルドして起動する
docker-compose up -d
次の 3 つのコンテナが起動します。
bmtc-mcp-api:Node.js API サーバーbmtc-mcp-mongo:MongoDB データベースbmtc-mcp-redis:Redis キャッシュサーバー
- モックデータを使ってデータベースにデータを登録する(任意)
docker-compose exec api node src/scripts/seed.js
- ログを表示する
docker-compose logs -f api
- コンテナを停止する
docker-compose down
ボリュームも削除する場合:
docker-compose down -v
API の使用
サーバーの起動後、次の URL から API にアクセスできます。
http://localhost:3000/api/v1
API ドキュメントは次の URL で確認できます。
http://localhost:3000/api-docs
API エンドポイントの例
# Authentication
POST /api/v1/auth/login
GET /api/v1/auth/me
# Routes
GET /api/v1/routes
GET /api/v1/routes/:routeId
GET /api/v1/routes/search?source=Kempegowda&destination=Electronic
# Stops
GET /api/v1/stops
GET /api/v1/stops/:stopId
GET /api/v1/stops/near?lat=12.9767&lng=77.5713&radius=500
GET /api/v1/stops/search?query=Lalbagh
# Bus Locations
GET /api/v1/bus-locations
GET /api/v1/bus-locations/:busId
GET /api/v1/bus-locations/near?lat=12.9767&lng=77.5713&radius=1000
# ETA
GET /api/v1/eta/:stopId
GET /api/v1/eta/:stopId/:routeId
API キー
JWT シークレット
JWT シークレットは、認証トークンへの署名に使用されます。安全なランダム文字列を生成してください。
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
これを .env ファイルに追加します。
JWT_SECRET=your_generated_secret_here
BMTC API キー
開発時は、実際の BMTC API キーを使わずにモックデータを利用できます。
BMTC_API_ENDPOINT=https://bmtc-api-endpoint.example
BMTC_API_KEY=your_bmtc_api_key_here
本番環境では、公式 API へのアクセスを申請するため、BMTC に直接問い合わせる必要があります。
開発
テスト
テストを実行します。
npm test
カバレッジ付きでテストを実行します。
npm run test:coverage
リント
コードスタイルを確認します。
npm run lint
コードスタイルの問題を修正します。
npm run lint:fix
プロジェクト構成
bengaluru-bmtc-mcp/
├── .env.example # Environment variables template
├── .eslintrc.json # ESLint configuration
├── .github/ # GitHub configuration
│ └── workflows/ # GitHub Actions workflows
├── .gitignore # Git ignore file
├── CONTRIBUTING.md # Contribution guidelines
├── Dockerfile # Docker configuration
├── LICENSE # MIT License
├── README.md # Project documentation
├── docker-compose.yml # Docker Compose configuration
├── docs/ # Documentation
│ ├── api.md # API documentation
│ └── setup.md # Setup guide
├── jest.config.js # Jest configuration
├── package.json # Project dependencies
└── src/ # Source code
├── config/ # Configuration files
├── controllers/ # Request handlers
├── index.js # Application entry point
├── middlewares/ # Express middlewares
├── models/ # MongoDB models
├── public/ # Static files
├── routes/ # API routes
├── scripts/ # Utility scripts
├── services/ # External service integrations
├── tests/ # Test files
└── utils/ # Utility functions
貢献
行動規範とプルリクエストの提出手順については、CONTRIBUTING.md をお読みください。
ライセンス
このプロジェクトは MIT License のもとでライセンスされています。詳細については、LICENSE ファイルをご覧ください。
謝辞
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。