SNCF MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SNCF_API | Yes | Your SNCF API key from the SNCF Digital API Portal |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_trainsA | Search for train journeys between two stations with pagination. Args: origin: Starting station name (e.g., "Paris Est", "Lyon") destination: Destination station name (e.g., "München Hbf", "Barcelona") departure_datetime: Optional datetime. Accepts flexible formats: - ISO: "2025-11-28 08:00" (RECOMMENDED) - European: "28/11/2025 08:00" - Written: "November 28, 2025 8:00am" If not provided, searches from current time. page: Page number for pagination (default: 1). Shows 10 results per page. Request different pages to see more trains (e.g., page=2, page=3). |
| find_stationA | Search for a train station by name and return matching options. Useful for checking station names before searching for journeys, or when you're not sure of the exact station name. Args: station_name: Station name to search for (e.g., "Paris", "Munich", "Lyon") Returns: A formatted string showing matching stations with their IDs and full names. |
| get_train_pricesA | Get train prices (EXPERIMENTAL - Educational Proof of Concept). ⚠️ WARNING: This is an experimental feature that attempts to scrape prices from SNCF. It may not work due to:
For production use, consider:
Args: origin: Origin station name (e.g., "Paris", "Lyon") destination: Destination station name (e.g., "Marseille") departure_datetime: Date/time in flexible formats (default: today) page: Page number for pagination (default: 1) per_page: Results per page (default: 5, max: 20) Returns: Formatted string with price information (if available) |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 3 tools
Each tool has a clearly distinct purpose: search_trains finds journeys, find_station resolves station names, and get_train_prices retrieves pricing. Although search_trains and get_train_prices share origin/destination parameters, their descriptions and return types make them unambiguous.
All tool names follow the verb_noun pattern with lowercase and underscores: search_trains, find_station, get_train_prices. This is consistent and predictable.
With 3 tools, the server is minimal but well-scoped for train journey searching. Each tool serves a necessary function and there is no redundancy.
The server covers the core workflow: station lookup, journey search, and price lookup. Missing booking or real-time status, but these are beyond the apparent scope. The experimental nature of get_train_prices introduces some uncertainty, but the surface is otherwise complete for planning.