Koskamo

PakBus MCP

An official MCP server for PakBus that allows AI agents to search for places, plan multi-modal bus and metro journeys, retrieve departure times, check fares, view route details, and access service notices across 46 city networks in Pakistan.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

PakBus MCP logo, by PakBusVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by PakBus
MCP endpoint (Streamable HTTP)
https://pakbus.app/mcp
Vendor documentation

What you can do with it

  • Plan a journey between two locations with fare and time estimates
  • Find the next bus departures from a specific stop
  • Search for places and stations by name
  • Get route details including stops and fares

Source and maintenance

Vendor evidenceRegistry 1.0.1
Maintenance checked

Protocol and capabilities

Server
pakbus 1.0.0
MCP protocol
2025-06-18
Tools
6 advertised
Resources
1 advertised
Resource templates
0 advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  },
  "resources": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

PakBus has public bus and metro routes, stops, flat fares and departure times for cities in Pakistan. Each place belongs to one city network. Rawalpindi and Islamabad share the Rawalpindi network. Journeys connect places in the same network. Times are Pakistan local time (UTC+05:00). Most come from published timetables and a travel-time model. For CDA buses in Islamabad and Karachi's Green Line and Orange Line, departures and routes also give live times and bus positions from the operators, marked live. Answers that depend on the time start with the current time in Pakistan, and give departures as clock times with the minutes until each. Keep journey replies short: when to leave, which bus to board and where, where to change or get off, the arrival time and the fare. Women-only routes are listed by route but not used for journeys.

Tools

6 advertised

list_cities — List cities
Advertised by the server during the last successful anonymous check.
Advertised read-only

Lists the Pakistani cities with PakBus routes, the number of routes in each and the city name in Urdu.

list_cities input schema
{
  "type": "object",
  "properties": {}
}
list_cities annotations
{
  "title": "List cities",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
find_places — Find places
Advertised by the server during the last successful anonymous check.
Advertised read-only

Finds bus stops, stations and the places around them by name, in one city or in every city. Accepts common English spellings of Pakistani place names, such as Faizabad or Faiz Abad. Returns the place_id and city each other tool needs. When nothing matches in a city, it lists the stops in that city served by the most routes.

find_places input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "query"
  ],
  "properties": {
    "city": {
      "type": "string",
      "maxLength": 60,
      "minLength": 1,
      "description": "Search one city network. Leave out to search every city."
    },
    "query": {
      "type": "string",
      "maxLength": 100,
      "minLength": 1,
      "description": "Place name in English letters, such as Liberty Chowk or Saddar."
    }
  },
  "additionalProperties": false
}
find_places annotations
{
  "title": "Find places",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
plan_journey — Plan a journey
Advertised by the server during the last successful anonymous check.
Advertised read-only

Plans bus and metro journeys between two places in one city network. Returns the first journey leaving at or after the departure time as numbered steps with boarding stops, changes, walking, times and fare, a link that opens it in PakBus, and up to two later departures on one line. When the first bus has live positions and the journey leaves within the hour, it also says when the next one reaches the boarding stop. Apps that show interactive views also get a map of the journey.

plan_journey input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "city",
    "from",
    "to"
  ],
  "properties": {
    "to": {
      "type": "string",
      "pattern": "^[a-z0-9]{1,16}$",
      "description": "place_id of the destination, from find_places."
    },
    "city": {
      "type": "string",
      "maxLength": 60,
      "minLength": 1,
      "description": "City network from find_places or list_cities, such as Lahore, Attock or Rawalpindi."
    },
    "from": {
      "type": "string",
      "pattern": "^[a-z0-9]{1,16}$",
      "description": "place_id of the start, from find_places."
    },
    "depart": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$",
      "description": "Departure date and time in Pakistan local time, as YYYY-MM-DDTHH:MM. Leave out to leave now. Search again with a later time for later journeys."
    },
    "max_changes": {
      "type": "integer",
      "maximum": 5,
      "minimum": 0,
      "description": "Most changes between buses, 0 for direct journeys only. Defaults to 2. When none are found within the limit, journeys with up to 5 changes are returned."
    }
  },
  "additionalProperties": false
}
plan_journey annotations
{
  "title": "Plan a journey",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
place_departures — Next departures
Advertised by the server during the last successful anonymous check.
Advertised read-only

Lists the next three departures today from a place for each route and direction that boards there, soonest first, with the minutes until each, the last bus of the day, the fare and the stops each direction serves after the place. Routes with live bus positions give live times counted from where each bus is now.

place_departures input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "city",
    "place"
  ],
  "properties": {
    "city": {
      "type": "string",
      "maxLength": 60,
      "minLength": 1,
      "description": "City network from find_places or list_cities, such as Lahore, Attock or Rawalpindi."
    },
    "place": {
      "type": "string",
      "pattern": "^[a-z0-9]{1,16}$",
      "description": "place_id from find_places."
    }
  },
  "additionalProperties": false
}
place_departures annotations
{
  "title": "Next departures",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
service_notices — Service changes
Advertised by the server during the last successful anonymous check.
Advertised read-only

Lists current and announced service changes in a city network, such as closed stations, skipped stops or diversions, for every route or for one route by code, name or service. plan_journey, place_departures and route_details already include the changes on the routes they use.

service_notices input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "city"
  ],
  "properties": {
    "city": {
      "type": "string",
      "maxLength": 60,
      "minLength": 1,
      "description": "City network from find_places or list_cities, such as Lahore, Attock or Rawalpindi."
    },
    "route": {
      "type": "string",
      "maxLength": 80,
      "description": "Route code, name or service. Leave out for every change in the city."
    }
  },
  "additionalProperties": false
}
service_notices annotations
{
  "title": "Service changes",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
route_details — Route details
Advertised by the server during the last successful anonymous check.
Advertised read-only

Lists a city's routes with fares, or shows one route: its stops in order in each direction, its fare, the day’s departure times from the first stop and, for routes with live bus positions, where each bus is now. Finds a route by code such as EV5701, by name such as Orange Line, or by service such as Green Electric Bus.

route_details input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "city"
  ],
  "properties": {
    "city": {
      "type": "string",
      "maxLength": 60,
      "minLength": 1,
      "description": "City network from find_places or list_cities, such as Lahore, Attock or Rawalpindi."
    },
    "route": {
      "type": "string",
      "maxLength": 80,
      "description": "Route code, name or service. Leave out to list every route in the city."
    }
  },
  "additionalProperties": false
}
route_details annotations
{
  "title": "Route details",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

1 advertised

journey_map — Journey map

Advertised by the server during the last successful anonymous check.

Map of a planned journey with its route, boarding stops and steps.

journey_map URI
ui://pakbus/journey-map

MIME type: text/html;profile=mcp-app

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
443 ms
95th percentile latency
443 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 443 ms · metadata changed · 6 tool(s), 1 resource(s), 0 resource template(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http pakbus-mcp https://pakbus.app/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add pakbus-mcp --url https://pakbus.app/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable pakbus-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "pakbus-mcp": {
      "url": "https://pakbus.app/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "pakbus-mcp": {
      "type": "streamableHttp",
      "url": "https://pakbus.app/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start pakbus-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "pakbus-mcp": {
      "type": "http",
      "url": "https://pakbus.app/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http pakbus-mcp https://pakbus.app/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "pakbus-mcp": {
      "url": "https://pakbus.app/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "pakbus-mcp": {
      "serverUrl": "https://pakbus.app/mcp"
    }
  }
}

Let your agent find its tools

Find servers like PakBus MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run PakBus MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing