gbfs-mcp
# 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
Scored across 6 tools
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.
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.
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.
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.