Skip to main content
Glama
Pranav-Karra-3301

CATA Bus MCP Server

🚌 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