班加罗尔BMTC MCP服务器
班加罗尔大都市交通公司(BMTC)公交服务的模型上下文协议(MCP)服务器的实现。
建筑
BMTC MCP服务器遵循模块化、分层架构。该系统旨在处理班加罗尔大都会交通公司公交车的实时交通数据,并通过标准化的API提供数据。
核心组件
- API层:用于身份验证、路线、车站、公交位置和ETA信息的RESTful端点
- 服务层:业务逻辑、数据转换和ETA计算
- 数据访问层:通过Mongoose ODM集成MongoDB
- 缓存层:基于Redis的缓存可提高性能
- 外部集成层:BMTC API集成
特性
以下是您可以使用MCP客户端或聊天窗口找到的内容列表:
- 实时公交车位置跟踪
- 路线信息和调度
- 停靠详情和预计到达时间
- 支持班加罗尔2200多条公交线路和8400多个公交车站
- 认证与授权
- 数据缓存和优化
- 附近车站和公共汽车的地理空间查询
先决条件
- Node.js(v14或更高版本)
- npm或纱线
- MongoDB
- Redis(可选,用于缓存)
- Git
安装和设置
方法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: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- 停止集装箱
docker-compose down要同时删除卷,请执行以下操作:
docker-compose down -v使用API
服务器运行后,您可以访问API:
http://localhost:3000/api/v1有关API文档,请访问:
http://localhost:3000/api-docsAPI端点示例
# 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_hereBMTC API密钥
对于开发,您可以在没有实际BMTC API密钥的情况下使用模拟数据:
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贡献
请阅读 贡献.md 有关我们的行为准则和提交pull请求流程的详细信息。
许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
