Transport NSW API Client MCP

by danhussey
Verified

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Integrations

  • References swagger-client as a local dependency for integration with the Transport NSW API, enabling structured API access.

Transport NSW API Client (MCP Implementation)

A Claude MCP for interacting with the Transport NSW API using direct HTTP requests.

About

This project implements a Model Context Protocol (MCP) service for Transport NSW's API.

Setup

  1. Clone this repository
  2. Install dependencies using uv (fast Python package manager):
    uv venv uv sync
  3. Create a .env file with your API key:
    OPEN_TRANSPORT_API_KEY=your_api_key_here
  4. (Optional) Run the MCP Inspector:
    uv run mcp dev api.py
    And visit the server at http://localhost:5173 (port might be different).

Features

  • Stop Finder API: Find transport stops by name or coordinates
  • Alerts API: Get information about transport alerts and disruptions
  • Departure Monitor API: Get real-time departure information for transport stops
  • MCP Implementation: Structured as a Model Context Protocol service

Usage Examples

MCP Examples coming soon. Standard Python examples below:

Find Transport Stops

from api import find_transport_stops # Search by name stops = find_transport_stops(stop_name="Central Station") # Search by coordinates (Central Station area) central_station = '151.206290:-33.884080:EPSG:4326' stops = find_transport_stops(coord=central_station, radius=500)

Get Transport Alerts

from api import get_transport_alerts # Get all current alerts alerts = get_transport_alerts() # Get alerts for a specific date date_alerts = get_transport_alerts(date='22-03-2025') # Get train alerts only (mot_type=1) train_alerts = get_transport_alerts(mot_type=1)

Monitor Real-time Departures

from api import get_departure_monitor # Get departures from Central Station departures = get_departure_monitor("200060") # Central Station ID # Get departures for a specific time from datetime import datetime time_departures = get_departure_monitor("200060", time="15:30") # Get only train departures train_departures = get_departure_monitor("200060", mot_type=1) # 1 = Train

Demo Script

The project includes a comprehensive demo script that showcases all API functionality:

# Run the full demo python demo.py # Run specific sections python demo.py --stops # Stop finder demo python demo.py --alerts # Transport alerts demo python demo.py --departures # Departure monitoring demo

Testing

Local Testing

Run the complete test suite with pytest:

uv run pytest

Run with coverage reporting:

uv run pytest --cov=api

Continuous Integration

Tests automatically run on GitHub Actions for every push and pull request to the main branch. The workflow:

  1. Sets up Python 3.10
  2. Installs uv and project dependencies
  3. Runs tests with coverage reporting

To use this feature:

  1. Add your OPEN_TRANSPORT_API_KEY as a GitHub repository secret
  2. Push your code to GitHub

MCP Integration

This project follows the Model Context Protocol specification, allowing AI models to access Transport NSW data through a standardized interface.

Package Management

This project uses uv, a modern Python package manager written in Rust. Dependencies are managed through:

  • pyproject.toml: Defines project dependencies
  • uv.lock: Locks dependency versions for reproducible environments
-
security - not tested
F
license - not found
-
quality - not tested

An MCP service for interacting with Transport NSW's API that enables users to find transport stops around locations and retrieve information about transport alerts and disruptions.

  1. About
    1. Setup
      1. Features
        1. Usage Examples
          1. Find Transport Stops
          2. Get Transport Alerts
          3. Monitor Real-time Departures
        2. Demo Script
          1. Testing
            1. Local Testing
            2. Continuous Integration
          2. MCP Integration
            1. Package Management