Skip to main content
Glama

🚌 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

Related MCP server: Bangalore BMTC Mobility Connectivity Platform

πŸš€ Quick Start

Installation

# Clone the repository git clone https://github.com/yourusername/catabus-mcp.git cd catabus-mcp # Install dependencies pip install -e .

Running the Server

# 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)

# 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:

{ "name": "catabus", "command": "python", "args": ["-m", "catabus_mcp.server"], "description": "CATA bus schedule and realtime data" }
  1. 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:

{ "mcpServers": { "catabus": { "command": "python", "args": ["-m", "catabus_mcp.server"] } } }

πŸ§ͺ Development

Running Tests

# Install dev dependencies pip install -e ".[dev]" # Run tests pytest # Run with coverage pytest --cov=catabus_mcp

Code Quality

# Format code black src/ # Lint ruff check src/ # Type checking mypy src/catabus_mcp/

πŸ“Š Data Sources

This server uses official CATA data feeds:

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 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

🎯 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

Latest Blog Posts

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