班加罗尔公交实时助手

提供对班加罗尔公共交通信息的实时访问,包括公交车跟踪、时刻表、路线和服务更新,以改善乘客体验。

travel-and-transportationlocation-services

384 查看 · 2026-07-07 更新

简介

提供对班加罗尔公共交通信息的实时访问,包括公交车跟踪、时刻表、路线和服务更新,以改善乘客体验。

简介

提供对班加罗尔公共交通信息的实时访问,包括公交车跟踪、时刻表、路线和服务更新,以改善乘客体验。

班加罗尔 BMTC MCP 服务器

班加罗尔市交通公司 (BMTC) 公交服务的模型上下文协议 (MCP) 服务器实现。

架构

BMTC MCP 服务器遵循模块化、分层架构。该系统设计用于处理来自班加罗尔市交通公司的实时公交数据,并通过标准化 API 提供这些数据。

核心组件

  1. API 层:用于身份验证、路线、站点、公交车位置和预计到达时间 (ETA) 信息的 RESTful 端点
  2. 服务层:业务逻辑、数据转换和 ETA 计算
  3. 数据访问层:通过 Mongoose ODM 集成 MongoDB
  4. 缓存层:基于 Redis 的缓存,以提高性能
  5. 外部集成层:BMTC API 集成

阅读完整的架构文档

功能

以下是您可以通过 MCP 客户端或聊天窗口找到的功能列表:

  • 实时公交车位置跟踪
  • 路线信息和调度
  • 站点详情和预计到达时间 (ETA)
  • 支持班加罗尔超过 2,200 条公交线路和 8,400 多个公交站点
  • 身份验证和授权
  • 数据缓存和优化
  • 附近站点和公交车的地理空间查询

前提条件

  • Node.js(v14 或更高版本)
  • npm 或 yarn
  • MongoDB
  • Redis(可选,用于缓存)
  • Git

安装与设置

方法 1:标准安装

  1. 克隆仓库

bash git clone https://github.com/ajeetraina/bengaluru-bmtc-mcp.git cd bengaluru-bmtc-mcp

  1. 安装依赖项

bash npm install

  1. 配置环境变量

bash 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. 使用模拟数据填充数据库(可选)

bash node src/scripts/seed.js

  1. 启动服务器

bash npm start

对于带有自动重启功能的开发环境:

bash npm run dev

方法 2:使用 Docker Compose

  1. 克隆仓库

bash git clone https://github.com/ajeetraina/bengaluru-bmtc-mcp.git cd bengaluru-bmtc-mcp

  1. 配置环境变量(可选)

您可以直接在 docker-compose.yml 文件中修改环境变量,或者创建一个 .env 文件:

bash cp .env.example .env

  1. 构建并启动容器

bash docker-compose up -d

这将启动三个容器:

  • bmtc-mcp-api:Node.js API 服务器
  • bmtc-mcp-mongo:MongoDB 数据库
  • bmtc-mcp-redis:Redis 缓存服务器
  1. 使用模拟数据填充数据库(可选)

bash docker-compose exec api node src/scripts/seed.js

  1. 查看日志

bash docker-compose logs -f api

  1. 停止容器

bash docker-compose down

如果还需要删除卷:

bash docker-compose down -v

使用 API

一旦服务器运行起来,您可以在以下地址访问 API:

http://localhost:3000/api/v1

有关 API 文档,请访问:

http://localhost:3000/api-docs

示例 API 端点

身份验证

POST /api/v1/auth/login GET /api/v1/auth/me

路线

GET /api/v1/routes GET /api/v1/routes/:routeId GET /api/v1/routes/search?source=Kempegowda&destination=Electronic

站点

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

公交车位置

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

预计到达时间

GET /api/v1/eta/:stopId GET /api/v1/eta/:stopId/:routeId

API 密钥

JWT 密钥JWT 密钥用于签署认证令牌。生成一个安全的随机字符串:

bash 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

在生产环境中,你需要直接联系 BMTC 以请求正式的 API 访问权限。

开发

测试

运行测试:

bash npm test

运行带有覆盖率的测试:

bash npm run test:coverage

代码检查

检查代码风格:

bash npm run lint

修复代码风格问题:

bash npm run lint:fix

项目结构

bengaluru-bmtc-mcp/ ├── .env.example # 环境变量模板 ├── .eslintrc.json # ESLint 配置 ├── .github/ # GitHub 配置 │ └── workflows/ # GitHub Actions 工作流 ├── .gitignore # Git 忽略文件 ├── CONTRIBUTING.md # 贡献指南 ├── Dockerfile # Docker 配置 ├── LICENSE # MIT 许可证 ├── README.md # 项目文档 ├── docker-compose.yml # Docker Compose 配置 ├── docs/ # 文档 │ ├── api.md # API 文档 │ └── setup.md # 设置指南 ├── jest.config.js # Jest 配置 ├── package.json # 项目依赖 └── src/ # 源代码 ├── config/ # 配置文件 ├── controllers/ # 请求处理器 ├── index.js # 应用程序入口点 ├── middlewares/ # Express 中间件 ├── models/ # MongoDB 模型 ├── public/ # 静态文件 ├── routes/ # API 路由 ├── scripts/ # 实用脚本 ├── services/ # 外部服务集成 ├── tests/ # 测试文件 └── utils/ # 实用函数

贡献

请阅读 CONTRIBUTING.md 以了解我们的行为准则以及提交拉取请求的过程。

许可证

该项目根据 MIT 许可证许可 - 详情请参阅 LICENSE 文件。

致谢

来源