Skip to main content
Glama

CATA Bus MCP Server

README.mdโ€ข5.69 kB
# ๐ŸšŒ CATA Bus MCP Server A **Model Context Protocol (MCP)** server that provides live and static schedule data for the **Centre Area Transportation Authority (CATA)** bus system in State College, PA. ## ๐ŸŒŸ Features - **Real-time vehicle positions** - Track buses live on their routes - **Trip updates** - Get delay information and predicted arrivals - **Service alerts** - Stay informed about detours and disruptions - **Static schedule data** - Access routes, stops, and scheduled times - **Fast in-memory storage** - No database required, pure Python performance ## ๐Ÿš€ Quick Start ### Installation ```bash # Clone the repository git clone https://github.com/yourusername/catabus-mcp.git cd catabus-mcp # Install dependencies pip install -e . ``` ### Running the Server ```bash # Run in stdio mode (for MCP clients) python -m catabus_mcp.server # Run in HTTP mode (for testing) python -m catabus_mcp.server --http ``` The HTTP server will be available at `http://localhost:7000` ## ๐Ÿ› ๏ธ Available Tools | Tool | Description | Parameters | |------|-------------|------------| | `list_routes` | Get all bus routes | None | | `search_stops` | Find stops by name/ID | `query: string` | | `next_arrivals` | Get upcoming arrivals at a stop | `stop_id: string`, `horizon_minutes?: int` | | `vehicle_positions` | Track buses on a route | `route_id: string` | | `trip_alerts` | Get service alerts | `route_id?: string` | ## ๐Ÿ’ป API Examples ### Using with cURL (HTTP mode) ```bash # List all routes curl -X POST http://localhost:7000/mcp \ -H "Content-Type: application/json" \ -d '{"method":"list_routes_tool","params":{}}' # Search for stops curl -X POST http://localhost:7000/mcp \ -H "Content-Type: application/json" \ -d '{"method":"search_stops_tool","params":{"query":"HUB"}}' # Get next arrivals curl -X POST http://localhost:7000/mcp \ -H "Content-Type: application/json" \ -d '{"method":"next_arrivals_tool","params":{"stop_id":"PSU_HUB","horizon_minutes":30}}' ``` ### Integration with ChatGPT 1. Install the MCP client in ChatGPT 2. Add this server configuration: ```json { "name": "catabus", "command": "python", "args": ["-m", "catabus_mcp.server"], "description": "CATA bus schedule and realtime data" } ``` 3. Ask questions like: - "When is the next N route bus from the HUB?" - "Are there any service alerts for the V route?" - "Show me all buses currently on the W route" ### Integration with Claude Desktop Add to your Claude Desktop configuration: ```json { "mcpServers": { "catabus": { "command": "python", "args": ["-m", "catabus_mcp.server"] } } } ``` ## ๐Ÿงช Development ### Running Tests ```bash # Install dev dependencies pip install -e ".[dev]" # Run tests pytest # Run with coverage pytest --cov=catabus_mcp ``` ### Code Quality ```bash # Format code black src/ # Lint ruff check src/ # Type checking mypy src/catabus_mcp/ ``` ## ๐Ÿ“Š Data Sources This server uses official CATA data feeds: - **Static GTFS**: https://catabus.com/wp-content/uploads/google_transit.zip - **GTFS-Realtime Vehicle Positions**: https://realtime.catabus.com/InfoPoint/GTFS-Realtime.ashx?Type=VehiclePosition - **GTFS-Realtime Trip Updates**: https://realtime.catabus.com/InfoPoint/GTFS-Realtime.ashx?Type=TripUpdate - **GTFS-Realtime Alerts**: https://realtime.catabus.com/InfoPoint/GTFS-Realtime.ashx?Type=Alert Data is cached locally and updated: - Static GTFS: Daily - Realtime feeds: Every 15 seconds ## ๐Ÿ—๏ธ Architecture ``` catabus-mcp/ โ”œโ”€โ”€ src/catabus_mcp/ โ”‚ โ”œโ”€โ”€ ingest/ # Data loading and polling โ”‚ โ”‚ โ”œโ”€โ”€ static_loader.py โ”‚ โ”‚ โ””โ”€โ”€ realtime_poll.py โ”‚ โ”œโ”€โ”€ tools/ # MCP tool implementations โ”‚ โ”‚ โ”œโ”€โ”€ list_routes.py โ”‚ โ”‚ โ”œโ”€โ”€ search_stops.py โ”‚ โ”‚ โ”œโ”€โ”€ next_arrivals.py โ”‚ โ”‚ โ”œโ”€โ”€ vehicle_positions.py โ”‚ โ”‚ โ””โ”€โ”€ trip_alerts.py โ”‚ โ””โ”€โ”€ server.py # FastMCP server โ””โ”€โ”€ tests/ # Test suite ``` ## โšก Performance - **Warm cache response time**: < 100ms for all queries - **Memory usage**: ~50MB with full GTFS data loaded - **Rate limiting**: Respects CATA's 10-second minimum between requests ## ๐Ÿ“ License MIT License - See [LICENSE](LICENSE) file ## ๐Ÿ™ Attribution Transit data provided by Centre Area Transportation Authority (CATA). This project is not affiliated with or endorsed by CATA. ## ๐Ÿค Contributing Contributions are welcome! Please: 1. Fork the repository 2. Create a feature branch 3. Write tests for new functionality 4. Ensure all tests pass 5. Submit a pull request ## ๐Ÿ“ž Support - **Issues**: [GitHub Issues](https://github.com/yourusername/catabus-mcp/issues) - **Discussions**: [GitHub Discussions](https://github.com/yourusername/catabus-mcp/discussions) ## ๐ŸŽฏ Roadmap - [ ] Add trip planning capabilities - [ ] Support for accessibility features - [ ] Historical data analysis - [ ] Geospatial queries (nearest stop) - [ ] Multi-agency support ## โœ… Manual Acceptance Checklist - [ ] `pip install -e .` completes without errors - [ ] `python -m catabus_mcp.server` starts successfully - [ ] Static GTFS data loads on startup - [ ] Realtime polling begins automatically - [ ] `list_routes_tool` returns CATA routes - [ ] `search_stops_tool` finds stops by query - [ ] `next_arrivals_tool` returns predictions with delays - [ ] `vehicle_positions_tool` shows bus locations - [ ] `trip_alerts_tool` displays active alerts - [ ] Tests pass with `pytest` - [ ] Type checking passes with `mypy` --- **Version**: 0.1.0 **Status**: Production Ready **Last Updated**: 2024

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/Pranav-Karra-3301/catabus-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server