Skip to main content
Glama
ajeetraina

Bangalore BMTC Mobility Connectivity Platform

by ajeetraina

Bengaluru BMTC MCP-Server

Eine Implementierung eines Model Context Protocol (MCP)-Servers für die Busdienste der Bangalore Metropolitan Transport Corporation (BMTC).

Architektur

Der BMTC MCP-Server folgt einer modularen, mehrschichtigen Architektur. Das System ist darauf ausgelegt, Echtzeit-Transitdaten von Bussen der Bangalore Metropolitan Transport Corporation zu verarbeiten und über eine standardisierte API bereitzustellen.

Kernkomponenten

  1. API-Schicht : RESTful-Endpunkte für Authentifizierung, Routen, Haltestellen, Busstandorte und ETA-Informationen

  2. Serviceebene : Geschäftslogik, Datentransformation und ETA-Berechnungen

  3. Datenzugriffsschicht : MongoDB-Integration über Mongoose ODM

  4. Caching-Ebene : Redis-basiertes Caching für verbesserte Leistung

  5. Externe Integrationsschicht : BMTC-API-Integration

Lesen Sie die vollständige Architekturdokumentation

Related MCP server: Singapore LTA MCP Server

Merkmale

Hier ist die Liste der Dinge, die Sie mit dem MCP-Client oder im Chatfenster finden können:

  • Echtzeit-Ortung von Bussen

  • Streckeninformationen und Fahrpläne

  • Haltestellendetails und ETA (voraussichtliche Ankunftszeit)

  • Unterstützung für über 2.200 Buslinien und mehr als 8.400 Bushaltestellen in Bengaluru

  • Authentifizierung und Autorisierung

  • Daten-Caching und -Optimierung

  • Georäumliche Abfragen für nahegelegene Haltestellen und Busse

Voraussetzungen

  • Node.js (v14 oder höher)

  • npm oder yarn

  • MongoDB

  • Redis (optional, zum Zwischenspeichern)

  • Git

Installation und Einrichtung

Methode 1: Standardinstallation

  1. Klonen Sie das Repository

git clone https://github.com/ajeetraina/bengaluru-bmtc-mcp.git
cd bengaluru-bmtc-mcp
  1. Installieren von Abhängigkeiten

npm install
  1. Konfigurieren von Umgebungsvariablen

cp .env.example .env

Bearbeiten Sie die .env Datei mit Ihrer Konfiguration:

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
  1. Füllen Sie die Datenbank mit simulierten Daten (optional).

node src/scripts/seed.js
  1. Starten Sie den Server

npm start

Für die Entwicklung mit automatischem Neustart:

npm run dev

Methode 2: Verwenden von Docker Compose

  1. Klonen Sie das Repository

git clone https://github.com/ajeetraina/bengaluru-bmtc-mcp.git
cd bengaluru-bmtc-mcp
  1. Umgebungsvariablen konfigurieren (optional)

Sie können die Umgebungsvariablen direkt in der Datei docker-compose.yml ändern oder eine .env Datei erstellen:

cp .env.example .env
  1. Erstellen und Starten der Container

docker-compose up -d

Dadurch werden drei Container gestartet:

  • bmtc-mcp-api : Der Node.js-API-Server

  • bmtc-mcp-mongo : MongoDB-Datenbank

  • bmtc-mcp-redis : Redis-Cache-Server

  1. Füllen Sie die Datenbank mit simulierten Daten (optional).

docker-compose exec api node src/scripts/seed.js
  1. Protokolle anzeigen

docker-compose logs -f api
  1. Stoppen Sie die Container

docker-compose down

So entfernen Sie auch Volumes:

docker-compose down -v

Verwenden der API

Sobald der Server läuft, können Sie auf die API zugreifen unter:

http://localhost:3000/api/v1

Die API-Dokumentation finden Sie unter:

http://localhost:3000/api-docs

Beispiele für API-Endpunkte

# 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-Schlüssel

JWT-Geheimnis

Das JWT-Geheimnis wird zum Signieren von Authentifizierungstoken verwendet. Generieren Sie eine sichere Zufallszeichenfolge:

node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"

Fügen Sie dies zu Ihrer .env Datei hinzu:

JWT_SECRET=your_generated_secret_here

BMTC-API-Schlüssel

Für die Entwicklung können Sie Mock-Daten ohne einen tatsächlichen BMTC-API-Schlüssel verwenden:

BMTC_API_ENDPOINT=https://bmtc-api-endpoint.example
BMTC_API_KEY=your_bmtc_api_key_here

Für die Produktion müssen Sie sich direkt an BMTC wenden, um offiziellen API-Zugriff anzufordern.

Entwicklung

Testen

Führen Sie die Tests aus:

npm test

Führen Sie Tests mit Abdeckung durch:

npm run test:coverage

Fusseln

Codestil prüfen:

npm run lint

Beheben Sie Probleme mit dem Codestil:

npm run lint:fix

Projektstruktur

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

Beitragen

Weitere Informationen zu unserem Verhaltenskodex und zum Verfahren zum Einreichen von Pull Requests finden Sie in CONTRIBUTING.md .

Lizenz

Dieses Projekt ist unter der MIT-Lizenz lizenziert – Einzelheiten finden Sie in der Datei LICENSE .

Danksagung

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

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ajeetraina/bengaluru-bmtc-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server