Skip to main content
Glama
KMB Bus MCP Server

KMB Bus MCP Server

by kennyckk

KMB Bus MCP Server

A Model Context Protocol (MCP) server that provides real-time access to Hong Kong's KMB (九龍巴士) and Long Win Bus (龍運巴士) route information and arrival times. This server enables Language Models to query Hong Kong bus service information to answer user questions about bus routes, stops, and estimated arrival times.

Features

  • Real-time bus arrival information (ETA)

  • Comprehensive bus route queries

  • Bus stop information and searches

  • Route-stop mapping

  • Caching system to optimize API calls

  • Bilingual support (English and Traditional Chinese)

Related MCP server: Hong Kong Transportation MCP Server

Data Source

This project utilizes the official KMB/LWB Open Data API:

Prerequisites

  • Python 3.10 or higher

  • uv package manager

Installation

Installing via Smithery

To install KMB Bus MCP for Claude Desktop automatically via Smithery:

npx -y @smithery/cli install @kennyckk/mcp_hkbus --client claude

Manual Installation

  1. First, install uv if you haven't already:

curl -LsSf https://astral.sh/uv/install.sh | sh
  1. Clone the repository:

git clone git@github.com:kennyckk/mcp_hkbus.git
cd mcp_hkbus
  1. Use uv to handle the python package:

uv sync #using uv.lock

Usage

  1. Edit the Config in your MCP Client (e.g. Claude Desktop):

{
  "mcpServers": {
    "bus_service": {
      "command": "path/to/uv.exe",
      "args": ["--directory", "path/to/kmb_bus", "run", "kmb_mcp.py"],
      "background": true
    }
  }
}
  1. The server provides several tools that can be used by Language Models to query bus information:

  • get_route_list(): Get a list of all bus routes

  • get_stop_list(): Get a list of all bus stops

  • get_route_stops(): Get stops for a specific route

  • find_stops_by_name(): Search for bus stops by name

  • get_all_routes_at_stop(): Get all routes serving a specific stop

  • get_eta(): Get estimated arrival times

Testing

Run the test suite using pytest:

pytest test/kmb-mcp-tests.py

Dependencies

  • httpx: For async HTTP requests

  • fastmcp: For MCP server implementation

  • pytest: For testing (development only)

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Acknowledgments

  • KMB/LWB for providing the open data API

  • The MCP protocol developers

Note

This service relies on the KMB/LWB Open Data API. Please be mindful of API rate limits and implement appropriate error handling in production environments.

Available Tools

5 tools
find_buses_to_destinationB

Find bus routes that go to a specified destination.

Args:
    destination: The destination to search for (e.g., "Central", "Mong Kok", "Airport")

Inputs: destination (required). Returns: result

find_stop_by_nameA

Find bus stops matching a name or partial name.

Args:
    stop_name: Full or partial name of the bus stop to search for

Inputs: stop_name (required). Returns: result

get_all_routes_at_stopB

Get all bus routes that pass through a specified bus stop.

Args:
    stop_name: Name of the bus stop

Inputs: stop_name (required). Returns: result

get_next_busB

Get the next arrival time for a specified bus route at a stop.

Args:
    route: The bus route number (e.g., "1A", "6", "960")
    stop_name: The name of the bus stop

Inputs: route (required), stop_name (required). Returns: result

get_route_stops_infoB

Get all stops along a specified bus route.

Args:
    route: The bus route number (e.g., "1A", "6", "960")

Inputs: route (required). Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.7/5.0

    Scored across 5 tools

    Disambiguation5/5

    Each tool has a clearly distinct purpose with no overlap: finding buses to destinations, searching stops by name, getting routes at a stop, checking next bus arrivals, and listing stops on a route. The descriptions reinforce these unique functions, making misselection unlikely.

    Naming Consistency5/5

    All tools follow a consistent verb_noun pattern with underscores (e.g., find_buses_to_destination, get_route_stops_info). The naming is uniform and predictable, using clear action verbs like 'find' and 'get' paired with descriptive nouns.

    Tool Count5/5

    With 5 tools, this server is well-scoped for a bus information system. Each tool serves a specific, necessary function in querying routes, stops, and schedules, avoiding bloat while covering core use cases effectively.

    Completeness4/5

    The tool set covers essential bus information queries: route discovery, stop lookup, schedule checking, and route details. A minor gap exists in lacking tools for broader operations like route planning or real-time updates, but agents can work around this with the provided tools.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    Appeared in Searches