Servidor MCP BMTC de Bengaluru
Una implementación de un servidor del Programa de Conector de Centro Comercial (MCP) para los servicios de autobús de la Corporación de Transporte Metropolitano de Bangalore (BMTC).
Arquitectura

El servidor MCP de BMTC sigue una arquitectura modular en capas que separa las tareas y facilita el mantenimiento. El sistema está diseñado para gestionar datos de tránsito en tiempo real de los autobuses de la Corporación de Transporte Metropolitano de Bangalore (BMTC) y proporcionarlos mediante una API estandarizada.
Componentes principales
Capa API : puntos finales RESTful para autenticación, rutas, paradas, ubicaciones de autobuses e información de ETA
Capa de servicio : lógica empresarial, transformación de datos y cálculos de ETA
Capa de acceso a datos : integración de MongoDB a través de Mongoose ODM
Capa de almacenamiento en caché : almacenamiento en caché basado en Redis para un rendimiento mejorado
Capa de integración externa : Integración de API BMTC
Lea la documentación completa de la arquitectura
Related MCP server: Singapore LTA MCP Server
Características
Seguimiento de la ubicación del autobús en tiempo real
Información de rutas y programación
Detalles de la parada y ETA (hora estimada de llegada)
Soporte para más de 2200 rutas de autobús y más de 8400 paradas de autobús en Bengaluru
Autenticación y autorización
Almacenamiento en caché y optimización de datos
Consultas geoespaciales para paradas y autobuses cercanos
Prerrequisitos
Node.js (v14 o posterior)
npm o hilo
MongoDB
Redis (opcional, para almacenamiento en caché)
Git
Instalación y configuración
Método 1: Instalación estándar
Clonar el repositorio
git clone https://github.com/ajeetraina/bengaluru-bmtc-mcp.git
cd bengaluru-bmtc-mcpInstalar dependencias
npm installConfigurar variables de entorno
cp .env.example .envEdite el archivo .env con su configuración:
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=infoSembrar la base de datos con datos simulados (opcional)
node src/scripts/seed.jsIniciar el servidor
npm startPara desarrollo con reinicio automático:
npm run devMétodo 2: Usar Docker Compose
Clonar el repositorio
git clone https://github.com/ajeetraina/bengaluru-bmtc-mcp.git
cd bengaluru-bmtc-mcpConfigurar variables de entorno (opcional)
Puede modificar las variables de entorno directamente en el archivo docker-compose.yml o crear un archivo .env :
cp .env.example .envConstruir e iniciar los contenedores
docker-compose up -dEsto iniciará tres contenedores:
bmtc-mcp-api: El servidor API de Node.jsbmtc-mcp-mongo: base de datos MongoDBbmtc-mcp-redis: servidor de caché de Redis
Sembrar la base de datos con datos simulados (opcional)
docker-compose exec api node src/scripts/seed.jsVer registros
docker-compose logs -f apiDetener los contenedores
docker-compose downPara eliminar volúmenes también:
docker-compose down -vUsando la API
Una vez que el servidor esté en funcionamiento, puedes acceder a la API en:
http://localhost:3000/api/v1Para obtener la documentación de la API, visite:
http://localhost:3000/api-docsPuntos finales de API de ejemplo
# 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/:routeIdClaves API
Secreto de JWT
El secreto JWT se utiliza para firmar tokens de autenticación. Genere una cadena aleatoria segura:
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"Añade esto a tu archivo .env :
JWT_SECRET=your_generated_secret_hereClave API de BMTC
Para el desarrollo, puede utilizar datos simulados sin una clave API BMTC real:
BMTC_API_ENDPOINT=https://bmtc-api-endpoint.example
BMTC_API_KEY=your_bmtc_api_key_herePara la producción, deberá comunicarse directamente con BMTC para solicitar acceso oficial a la API.
Desarrollo
Pruebas
Ejecutar las pruebas:
npm testEjecutar pruebas con cobertura:
npm run test:coveragePelusa
Comprobar el estilo del código:
npm run lintCorregir problemas de estilo de código:
npm run lint:fixEstructura del proyecto
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 functionsContribuyendo
Lea CONTRIBUTING.md para obtener detalles sobre nuestro código de conducta y el proceso para enviar solicitudes de extracción.
Licencia
Este proyecto está licenciado bajo la licencia MIT: consulte el archivo de LICENCIA para obtener más detalles.