Skip to main content
Glama
ajeetraina

Bangalore BMTC Mobility Connectivity Platform

by ajeetraina

Сервер MCP BMTC в Бангалоре

Реализация сервера Model Context Protocol (MCP) для автобусных служб Bangalore Metropolitan Transport Corporation (BMTC).

Архитектура

Сервер BMTC MCP следует модульной, многоуровневой архитектуре. Система разработана для обработки транзитных данных в реальном времени от автобусов Bangalore Metropolitan Transport Corporation и предоставления их через стандартизированный API.

Основные компоненты

  1. Уровень API : конечные точки RESTful для аутентификации, маршрутов, остановок, местоположений автобусов и информации об ожидаемом времени прибытия

  2. Уровень обслуживания : бизнес-логика, преобразование данных и расчеты расчетного времени прибытия

  3. Уровень доступа к данным : интеграция MongoDB через Mongoose ODM

  4. Уровень кэширования : кэширование на основе Redis для повышения производительности

  5. Внешний уровень интеграции : интеграция API BMTC

Прочитайте полную документацию по архитектуре

Related MCP server: Singapore LTA MCP Server

Функции

Вот список того, что вы можете найти с помощью MCP Client или окна чата:

  • Отслеживание местонахождения автобуса в режиме реального времени

  • Информация о маршруте и расписание

  • Информация об остановках и расчетное время прибытия

  • Поддержка более 2200 автобусных маршрутов и более 8400 автобусных остановок в Бангалоре

  • Аутентификация и авторизация

  • Кэширование и оптимизация данных

  • Геопространственные запросы на ближайшие остановки и автобусы

Предпосылки

  • Node.js (v14 или более поздняя версия)

  • npm или пряжа

  • MongoDB

  • Redis (опционально, для кэширования)

  • Гит

Установка и настройка

Метод 1: Стандартная установка

  1. Клонировать репозиторий

git clone https://github.com/ajeetraina/bengaluru-bmtc-mcp.git
cd bengaluru-bmtc-mcp
  1. Установить зависимости

npm install
  1. Настройте переменные среды

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
  1. Заполнить базу данных фиктивными данными (необязательно)

node src/scripts/seed.js
  1. Запустить сервер

npm start

Для разработки с автоматическим перезапуском:

npm run dev

Метод 2: Использование Docker Compose

  1. Клонировать репозиторий

git clone https://github.com/ajeetraina/bengaluru-bmtc-mcp.git
cd bengaluru-bmtc-mcp
  1. Настройте переменные среды (необязательно)

Вы можете изменить переменные среды непосредственно в файле docker-compose.yml или создать файл .env :

cp .env.example .env
  1. Постройте и запустите контейнеры

docker-compose up -d

Это запустит три контейнера:

  • bmtc-mcp-api : сервер API Node.js

  • bmtc-mcp-mongo : База данных MongoDB

  • bmtc-mcp-redis : сервер кэширования Redis

  1. Заполнить базу данных фиктивными данными (необязательно)

docker-compose exec api node src/scripts/seed.js
  1. Посмотреть журналы

docker-compose logs -f api
  1. Остановите контейнеры.

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/:routeId

API-ключи

JWT-секрет

Секрет JWT используется для подписи токенов аутентификации. Сгенерируйте безопасную случайную строку:

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

Добавьте это в ваш файл .env :

JWT_SECRET=your_generated_secret_here

API-ключ 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 .

Благодарности

-
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