班加罗尔 BMTC MCP 服务器
为班加罗尔都市运输公司 (BMTC) 公交服务实施购物中心连接器程序 (MCP) 服务器。
建筑学

BMTC MCP 服务器采用模块化分层架构,有效分离关注点并提升可维护性。该系统旨在处理班加罗尔都市交通公司公交车的实时交通数据,并通过标准化 API 提供。
核心组件
API 层:用于身份验证、路线、站点、公交车位置和预计到达时间 (ETA) 信息的 RESTful 端点
服务层:业务逻辑、数据转换和ETA计算
数据访问层:通过 Mongoose ODM 集成 MongoDB
缓存层:基于 Redis 的缓存,以提高性能
外部集成层:BMTC API 集成
阅读完整的架构文档
Related MCP server: Singapore LTA MCP Server
特征
先决条件
Node.js(v14 或更高版本)
npm 或 yarn
MongoDB
Redis(可选,用于缓存)
Git
安装和设置
方法 1:标准安装
克隆存储库
git clone https://github.com/ajeetraina/bengaluru-bmtc-mcp.git
cd bengaluru-bmtc-mcp
安装依赖项
配置环境变量
使用您的配置编辑.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
使用模拟数据填充数据库(可选)
启动服务器
对于自动重启的开发:
方法 2:使用 Docker Compose
克隆存储库
git clone https://github.com/ajeetraina/bengaluru-bmtc-mcp.git
cd bengaluru-bmtc-mcp
配置环境变量(可选)
可以直接在docker-compose.yml文件中修改环境变量,或者创建.env文件:
构建并启动容器
这将启动三个容器:
bmtc-mcp-api :Node.js API 服务器
bmtc-mcp-mongo :MongoDB 数据库
bmtc-mcp-redis :Redis缓存服务器
使用模拟数据填充数据库(可选)
docker-compose exec api node src/scripts/seed.js
查看日志
docker-compose logs -f api
停止容器
要删除卷:
使用 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
BMTC API 密钥
对于开发,您可以使用模拟数据,而无需实际的 BMTC API 密钥:
BMTC_API_ENDPOINT=https://bmtc-api-endpoint.example
BMTC_API_KEY=your_bmtc_api_key_here
对于生产,您需要直接联系 BMTC 来请求官方 API 访问权限。
发展
测试
运行测试:
运行覆盖测试:
代码检查
检查代码风格:
修复代码风格问题:
项目结构
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文件。
致谢