벵갈루루 BMTC MCP 서버
방갈로르 도시 교통 공사(BMTC) 버스 서비스를 위한 몰 커넥터 프로그램(MCP) 서버 구현.
건축학

BMTC MCP 서버는 모듈식 계층 구조를 기반으로 문제를 분리하고 유지 관리 편의성을 높입니다. 이 시스템은 방갈로르 도시 교통 공사(Bangalore Metropolitan Transport Corporation) 버스의 실시간 교통 데이터를 처리하고 표준화된 API를 통해 제공하도록 설계되었습니다.
핵심 구성 요소
API 계층 : 인증, 경로, 정류장, 버스 위치 및 ETA 정보를 위한 RESTful 엔드포인트
서비스 계층 : 비즈니스 로직, 데이터 변환 및 ETA 계산
데이터 액세스 계층 : Mongoose ODM을 통한 MongoDB 통합
캐싱 계층 : 성능 향상을 위한 Redis 기반 캐싱
외부 통합 계층 : BMTC API 통합
전체 아키텍처 문서를 읽어보세요
Related MCP server: Singapore LTA MCP Server
특징
실시간 버스 위치 추적
경로 정보 및 일정
정류장 세부 정보 및 ETA(예상 도착 시간)
벵갈루루에서 2,200개 이상의 버스 노선과 8,400개 이상의 버스 정류장 지원
인증 및 권한 부여
데이터 캐싱 및 최적화
근처 정류장 및 버스에 대한 지리공간 쿼리
필수 조건
Node.js(v14 이상)
npm 또는 yarn
몽고디비
Redis(캐싱용 선택 사항)
깃
설치 및 설정
방법 1: 표준 설치
저장소를 복제합니다
지엑스피1
종속성 설치
환경 변수 구성
구성에 맞게 .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
생산의 경우, 공식 API 액세스를 요청하려면 BMTC에 직접 문의해야 합니다.
개발
테스트
테스트를 실행하세요:
적용 범위를 사용하여 테스트 실행:
린팅
코드 스타일 확인:
코드 스타일 문제 수정:
프로젝트 구조
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 라이선스에 따라 라이선스가 부여되었습니다. 자세한 내용은 라이선스 파일을 참조하세요.
감사의 말