Skip to main content
Glama
README.md
# gbfs-mcp ๐Ÿšฒ

> **General Bikeshare Feed Specification (GBFS v3.0 / v2.3)** Model Context Protocol (MCP) server & interactive CLI.

Connect AI assistants (Antigravity, Claude Desktop, Cursor, Claude Code) and developers to real-time bikeshare and micromobility availability worldwide across **1,000+ public systems** (Citi Bike, Bay Wheels, Vรฉlib', Santander Cycles, Biki, Lime, and more).

---

## ๐ŸŒŸ Features

- **๐ŸŒ 1,000+ Worldwide Systems:** Built-in integration with MobilityDataโ€™s official `systems.csv` catalog.
- **โšก Dynamic Auto-Discovery:** Seamlessly parses `gbfs.json` for both GBFS v3.0 (flat feed manifests) and GBFS v2.x (multi-language feed manifests).
- **๐Ÿ“ Geographic Proximity Sorting:** Rank stations and free-floating e-bikes/scooters by distance (`lat`, `lon`, `radius_meters`).
- **๐Ÿ”‹ Fleet & Battery Telemetry:** Real-time visibility into vehicle types, electric vs. mechanical bikes, battery ranges, and dock availability.
- **๐Ÿค– Built-in Agent Skill (`SKILL.md`):** Complete agent guide included for querying and reasoning about shared micromobility feeds.

---

## ๐Ÿ› ๏ธ MCP Tools

| Tool | Parameters | Description |
| :--- | :--- | :--- |
| `gbfs_list_systems` | `query?`, `limit?` | Search 1,000+ public bikeshare systems by city, country, or system ID. |
| `gbfs_get_system` | `system_id_or_url` | Resolves `gbfs.json` manifest, operator info, and available endpoints. |
| `gbfs_get_stations` | `system_id_or_url`, `latitude?`, `longitude?`, `radius_meters?`, `limit?` | Fetches live station capacity, available bikes, e-bikes, and empty docks with proximity ranking. |
| `gbfs_get_free_bikes` | `system_id_or_url`, `latitude?`, `longitude?`, `radius_meters?`, `limit?` | Fetches dockless/floating bikes and scooters with battery range. |
| `gbfs_get_alerts` | `system_id_or_url` | Active operational notices, weather closures, or maintenance. |
| `gbfs_get_vehicle_types` | `system_id_or_url` | Vehicle specifications (form factors, propulsion, battery range). |

---

## ๐Ÿš€ Quick Start (CLI)

```bash
cd E:\development\gbfs-mcp
npm install
npm run build

# Search systems
node dist/index.js systems Minneapolis

# Get live station availability
node dist/index.js stations bay_wheels --limit 10
```

---

## โš™๏ธ MCP Configuration

Add to your `mcp_config.json`:

```json
{
  "mcpServers": {
    "gbfs-mcp": {
      "command": "node",
      "args": ["E:/development/gbfs-mcp/dist/index.js", "serve"]
    }
  }
}
```

---

## ๐Ÿ“„ License

MIT ยฉ Amin

TDQS

A3.7/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a distinct GBFS resource and action: system discovery, system metadata, stations, free bikes, alerts, and vehicle types. There is no meaningful overlap that would cause an agent to select the wrong tool.

Naming Consistency5/5

All tools follow a consistent gbfs_<verb>_<noun> pattern, using list_ for catalog discovery and get_ for fetching specific data. The only minor irregularity is singular 'system' vs plural others, but it is intuitive as it returns a single system.

Tool Count5/5

With 6 tools, the server is well-scoped for a GBFS domain, covering the most commonly needed data feeds without bloat. Each tool serves a distinct, high-value purpose.

Completeness4/5

Core GBFS feeds such as station status, free bikes, alerts, and vehicle types are covered, and system metadata provides feed endpoints for raw access. The absence of a dedicated station_information tool for static station names/coordinates is a minor gap that agents can work around by consulting feed endpoints.

Maintenance

ActivityMaintained
ResponsivenessNo issues