https://github.com/danhussey/transportnsw-mcp
A Claude Model Context Protocol (MCP) implementation for some useful Transport NSW API endpoints.
https://github.com/danhussey/transportnsw-mcp
Last synced: 8 months ago
JSON representation
A Claude Model Context Protocol (MCP) implementation for some useful Transport NSW API endpoints.
- Host: GitHub
- URL: https://github.com/danhussey/transportnsw-mcp
- Owner: danhussey
- Created: 2025-03-18T11:20:01.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2025-03-18T11:49:46.000Z (8 months ago)
- Last Synced: 2025-03-18T12:30:56.440Z (8 months ago)
- Language: Python
- Size: 179 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-mcp-servers - **transportnsw-mcp** - A Model Context Protocol (MCP) implementation for some useful Transport NSW API endpoints. `python` `mcp` `api` `pip install git+https://github.com/danhussey/transportnsw-mcp` (🤖 AI/ML)
- awesome-mcp-servers - **transportnsw-mcp** - A Model Context Protocol (MCP) implementation for some useful Transport NSW API endpoints. `python` `mcp` `api` `pip install git+https://github.com/danhussey/transportnsw-mcp` (AI/ML)
- metorial-index - Transport NSW API Client - Provide access to Transport NSW data including stops, alerts, and real-time departures through a standardized API interface. Enables efficient querying of transport information for integration into AI workflows. (APIs and HTTP Requests)
- toolsdk-mcp-registry - ❌ transport-nsw - time public transportation data, including nearby stops, service alerts, and disruptions across trains, buses, and ferries throughout New South Wales. (python) (Travel & Transportation / How to Submit)
- toolsdk-mcp-registry - ❌ transport-nsw - time public transportation data, including nearby stops, service alerts, and disruptions across trains, buses, and ferries throughout New South Wales. (python) (Travel & Transportation)
README
# Transport NSW API Client (MCP Implementation)
[](https://github.com/danhussey/transportnsw-mcp/actions/workflows/tests.yml)
A Claude MCP for interacting with the Transport NSW API.
## About
This project implements a Model Context Protocol (MCP) service for parts of Transport NSW's API.
## Setup
1. Clone this repository
2. Install dependencies using uv (fast Python package manager):
```bash
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:
```bash
uv run mcp dev api.py
```
And visit the server at http://localhost:5173 (port might be different).
## Features
- **Coordinate API**: Find transport stops and points of interest around a location
- **Alerts API**: Get information about transport alerts and disruptions
- **MCP Implementation**: Structured as a Model Context Protocol service
## Usage Examples
MCP Examples coming soon. Standard Python examples below:
### Find Transport Stops
```python
from api import find_transport_stops
# Central Station coordinates
central_station = '151.206290:-33.884080:EPSG:4326'
# Find bus stops within 500m of Central Station
bus_stops = find_transport_stops(central_station, stop_type='BUS_POINT', radius=500)
# Find points of interest
pois = find_transport_stops(central_station, stop_type='POI_POINT', radius=500)
```
### Get Transport Alerts
```python
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='01-01-2025')
# Get train alerts only (mot_type=1)
train_alerts = get_transport_alerts(mot_type=1)
```
## Demo Scripts
- `coord_demo.py`: Demonstrates finding transport stops around Central Station
- `demo.py`: Shows how to use the Transport NSW Coordinate API
- `main.py`: Demonstrates the Transport NSW Alerts API
## Testing
### Local Testing
Run tests locally with pytest:
```bash
uv run pytest test_api.py -v
```
### 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
- Local dependencies (like swagger-client) are referenced in the [tool.uv.sources] section