Сервер MCP BMTC в Бангалоре
Реализация сервера Model Context Protocol (MCP) для автобусных служб Bangalore Metropolitan Transport Corporation (BMTC).
Архитектура
Сервер BMTC MCP следует модульной, многоуровневой архитектуре. Система разработана для обработки транзитных данных в реальном времени от автобусов Bangalore Metropolitan Transport Corporation и предоставления их через стандартизированный API.
Основные компоненты
Уровень API : конечные точки RESTful для аутентификации, маршрутов, остановок, местоположений автобусов и информации об ожидаемом времени прибытия
Уровень обслуживания : бизнес-логика, преобразование данных и расчеты расчетного времени прибытия
Уровень доступа к данным : интеграция MongoDB через Mongoose ODM
Уровень кэширования : кэширование на основе Redis для повышения производительности
Внешний уровень интеграции : интеграция API BMTC
Прочитайте полную документацию по архитектуре
Related MCP server: Singapore LTA MCP Server
Функции
Вот список того, что вы можете найти с помощью MCP Client или окна чата:
Отслеживание местонахождения автобуса в режиме реального времени
Информация о маршруте и расписание
Информация об остановках и расчетное время прибытия
Поддержка более 2200 автобусных маршрутов и более 8400 автобусных остановок в Бангалоре
Аутентификация и авторизация
Кэширование и оптимизация данных
Геопространственные запросы на ближайшие остановки и автобусы
Предпосылки
Node.js (v14 или более поздняя версия)
npm или пряжа
MongoDB
Redis (опционально, для кэширования)
Гит
Установка и настройка
Метод 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Это запустит три контейнера:
bmtc-mcp-api: сервер API Node.jsbmtc-mcp-mongo: База данных MongoDBbmtc-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
После запуска сервера вы сможете получить доступ к API по адресу:
http://localhost:3000/api/v1Документацию по API можно найти на сайте:
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/:routeIdAPI-ключи
JWT-секрет
Секрет JWT используется для подписи токенов аутентификации. Сгенерируйте безопасную случайную строку:
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"Добавьте это в ваш файл .env :
JWT_SECRET=your_generated_secret_hereAPI-ключ BMTC
Для разработки вы можете использовать фиктивные данные без фактического ключа API BMTC:
BMTC_API_ENDPOINT=https://bmtc-api-endpoint.example
BMTC_API_KEY=your_bmtc_api_key_hereДля производства вам необходимо связаться с BMTC напрямую, чтобы запросить официальный доступ к API.
Разработка
Тестирование
Запустите тесты:
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 .