Agent Skills

grand-lyon-mcp

Local read-only MCP server aggregating Métropole de Lyon open data (TCL, Vélo'v, parking, traffic, facilities, waste) behind 10 business tools. Offline fixtures without credentials; live mode with DataGrandLyon account. Independent project, not affiliated with the Métropole.

Install

Install and configure the MCP from https://github.com/ThomasCrouzet/mcp-grand-lyon now. Follow the repository's installation instructions, ask me for anything you can't complete yourself, and verify its tools load.
README

grand-lyon-mcp

A local MCP server for Métropole de Lyon open data. It provides ten read-only tools for TCL departures, parking, accessibility, facilities, waste, travel options, and personal briefings. It uses Vélo'v data in travel options and briefings.

The server uses stdio. Application logs go to stderr. Tool summaries are in French. It runs with local fixtures when offline mode is enabled or DataGrandLyon credentials are absent.

Install from source

Requirements: Python 3.12 or later and uv. CI checks Python 3.12 and 3.13. A DataGrandLyon account is optional.

git clone git@github.com:ThomasCrouzet/mcp-grand-lyon.git
cd mcp-grand-lyon
uv sync --locked --all-extras --dev
uv run grand-lyon-mcp setup --yes --offline --skip-install

The setup command copies packaged configuration templates and migrates the local SQLite database. For interactive live setup, run uv run grand-lyon-mcp setup. It stores credentials in a user configuration file with mode 600.

Import the packaged demonstration stops and timetable:

uv run grand-lyon-mcp sync gtfs --from-file src/grand_lyon_mcp/_data/fixtures/gtfs/mini_gtfs.zip
uv run grand-lyon-mcp doctor
uv run grand-lyon-mcp smoke

The fixture dates are fixed. They are demonstration data, not current departures. The smoke command is a diagnostic; it can report unavailable tool results. For strict success checks, use the verification procedure.

Connect an MCP client

For a source checkout, generate a configuration block with absolute paths:

uv run grand-lyon-mcp client-config

Example:

{
  "mcpServers": {
    "grand-lyon": {
      "command": "/absolute/path/mcp-grand-lyon/scripts/run_mcp.sh",
      "args": ["serve", "--transport", "stdio"]
    }
  }
}

The wrapper loads local credentials and starts the server. A stdio server waits for a client on stdin; it does not show an interactive prompt. See MCP clients for wheel installations and credential paths.

Tools

ToolPurpose
lyon_resolve_placeResolve an address, stop, or personal place
lyon_next_departuresTCL realtime departures with theoretical GTFS fallback
lyon_mobility_statusTransit alerts, accessibility incidents, and road events
lyon_trip_optionsCompare travel modes
lyon_parking_optionsPublic parking and park-and-ride options
lyon_accessibility_checkAvailable accessibility evidence
lyon_nearby_facilitiesNearby facilities
lyon_environment_briefEnvironmental indicators, where supported
lyon_waste_dropoffClassify waste and find collection facilities
lyon_personal_briefingBuild a briefing from a local profile

See the tool reference for arguments, limits, and result status. GTFS results are always theoretical. Parking capacity never becomes an invented available-space count. Missing accessibility data means unknown.

Configuration and data

Configuration templates and fixtures are installed with the package under grand_lyon_mcp/_data/. User files use the paths from platformdirs.

  • Linux configuration: ~/.config/grand-lyon-mcp/
  • macOS configuration: ~/Library/Application Support/grand-lyon-mcp/
  • Find the current path: grand-lyon-mcp env --config-dir
  • Override paths with GRAND_LYON_MCP_CONFIG_DIR, GRAND_LYON_MCP_DATA_DIR, and GRAND_LYON_MCP_DB_PATH.
  • Enable offline mode with GRAND_LYON_MCP_OFFLINE=true.

The CLI does not load the checkout's .env automatically. The wrapper and Makefile runtime targets do. See Operations for GTFS sync, SQLite maintenance, source discovery, cache limits, and troubleshooting.

Development and verification

uv sync --locked --all-extras --dev
make quality

The quality gate checks formatting, lint, strict types, and offline tests with an 85% coverage minimum. The installed-wheel protocol checks start real CLI and MCP processes and retain exact results. CI uploads both quality and protocol evidence. See Testing and Contributing.

Limits and privacy

  • MCP transport is stdio only.
  • Transitous routing is optional and disabled by default. Without a router, TCL journey duration can be unavailable.
  • Live environmental indicators are not configured. They return an explicit unsupported-indicator warning.
  • Fixtures and HTTP simulations verify local behavior, not upstream availability.
  • Profiles, briefings, and Vélo'v history stay in local SQLite storage. There is no telemetry. Live geocoding and routing send the required places or coordinates to their providers.

Documentation

License

Code: MIT. Data has source-specific licenses; see Attributions. This project is independent of Métropole de Lyon, SYTRAL Mobilités, Keolis-TCL, and JCDecaux. Their names and marks identify services.

Search skills and MCP servers

Search across 31,816 skills and MCPs