Skip to main content
Glama
uwmyuan

bus-scheduling-mcp

by uwmyuan
README.md
# Bus Scheduling MCP Server

This is a Model Context Protocol (MCP) server designed to interface with the Bus Scheduling Backend system. It allows MCP-compatible LLM clients (like Claude Desktop, Cursor, Cline, etc.) to access scheduling data, read KPIs, list routes, and trigger/monitor optimization algorithms.

## Prerequisites

- Node.js (v18 or higher recommended)
- The accompanying Python backend must be running (by default on `http://127.0.0.1:8000`).

## Installation

1. Install dependencies:
   ```bash
   npm install
   ```
2. Build the TypeScript code:
   ```bash
   npm run build
   ```

## Configuration

If your backend is running on a different URL, you can configure it via a `.env` file in the root of this `/mcp-server` directory.

Example `.env`:
```
API_BASE_URL=http://localhost:8000/api
```

## Running the Server

### For standard usage as an MCP Server:
Point your MCP client configuration (e.g. `cline_mcp_settings.json` or equivalent) to the built `index.js` file.

Example Cursor/Claude config:
```json
{
  "mcpServers": {
    "bus-scheduling": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-server/build/index.js"]
    }
  }
}
```

### For development:
Run the development watcher (useful if you are actively modifying the MCP server code):
```bash
npm run dev
```

## Available Tools

The server exposes the following tools directly to the AI:

- **Dashboard & Metrics**
  - `scheduling_get_kpi`: Fetch KPIs (vehicle status, departures, punctuality).
  - `scheduling_get_trends`: Get passenger flow trends.
- **Routes & Data**
  - `scheduling_list_routes`: List active bus routes.
  - `scheduling_get_route_details`: Fetch stations and departures for a specific route.
- **Plans & Gantt**
  - `scheduling_list_plans`: List all saved scheduling plans.
  - `scheduling_get_gantt_data`: Get task formats for Gantt charts.
- **Optimization**
  - `scheduling_get_optimization_algorithms`: List available optimization scripts.
  - `scheduling_run_optimization`: Trigger an algorithm task.
  - `scheduling_get_optimization_status`: Check the status of a running algorithm task.

## Testing & Evaluations

You can inspect the capabilities of this server directly using the official MCP inspector:
```bash
npx @modelcontextprotocol/inspector node build/index.js
```

10 comprehensive use cases and checks are available in `evaluations.xml` in this project's root folder.

TDQS

A3.8/5.0

Scored across 9 tools

Disambiguation5/5

Each tool targets a distinct resource and action: routes, route details, Gantt data, optimization algorithms, running/status of optimizations, KPIs, trends, and plans. There is no overlap or ambiguity between them.

Naming Consistency5/5

All tools follow a consistent scheduling_<verb>_<noun> pattern using only snake_case. Verbs are limited to list, get, and run, making the naming predictable and coherent.

Tool Count5/5

9 tools is well within the ideal 3-15 range and each tool serves a clear purpose in the bus scheduling domain. The count is neither sparse nor overwhelming.

Completeness4/5

The tool set covers route viewing, optimization execution and status, KPIs, trends, and plan listing. However, there is no direct way to fetch the result of a specific optimization task (only status), nor a get_plan_details tool; the Gantt data requires a plan ID, which may not be known until after listing plans.

Maintenance

ActivityStale
ResponsivenessNo issues