This Python wrapper for the SNCF API provides an MCP server interface that integrates with Claude Desktop, allowing users to access train information, plan journeys, and monitor disruptions across France's railway network.
git clone https://github.com/yourusername/sncf-mcp-new.git
cd sncf-mcp-new
pip install -r requirements.txt
If the requirements.txt file is missing, install the following packages:
pip install requests pandas mcp
Before using this server, you need to obtain an API key from SNCF:
The API key looks like a UUID string (e.g., 01293485-3NS3-3242-23AZ-3241324512
).
To integrate the SNCF MCP tools with Claude Desktop:
%APPDATA%\Claude\claude_desktop_config.json
){
"sncf": {
"command": "py",
"args": [
"c:\\Users\\ChristianELHAJJ\\sncf-mcp-new\\sncf_server.py",
"--api-key={YOUR-API-KEY}"
],
"cwd": "c:\\Users\\ChristianELHAJJ\\sncf-mcp-new"
},
Replace path/to/sncf-mcp-new
with the actual path to your installation directory.
Once configured, the following tools will be available to Claude Desktop:
plan_journey_by_city_names
Plan a journey between two cities in France.
Parameters:
from_city
: Departure city name (e.g., "Paris")to_city
: Destination city name (e.g., "Marseille")datetime
: Optional departure or arrival time (format: YYYYMMDDTHHMMSS)datetime_represents
: "departure" or "arrival" (default: "departure")include_station_details
: Whether to include detailed station informationExample prompt for Claude:
Plan a train journey from Paris to Lyon tomorrow morning at 8 AM.
get_station_details
Get comprehensive details about train stations in a city.
Parameters:
city_name
: Name of the city to search for stationsstation_name
: Optional specific station namestation_id
: Optional direct station IDinclude_transport_types
: Whether to include transport type analysisinclude_nearby_places
: Whether to include nearby places informationnearby_distance
: Search radius in meters for nearby placesnearby_count
: Maximum number of nearby places to returnExample prompt for Claude:
What transport options are available at the main train station in Grenoble?
get_station_schedule
Get departure and arrival schedules for a station.
Parameters:
city_name
: Name of the city to search for stationsstation_name
: Optional specific station namestation_id
: Optional direct station IDcount
: Number of departures/arrivals to returndatetime
: Optional datetime to start fromduration
: Optional duration in secondsdata_freshness
: Data freshness level (realtime or base_schedule)Example prompt for Claude:
Show me the next 5 train departures from Paris Gare de Lyon.
check_disruptions
Check for current disruptions in the SNCF transport network.
Parameters:
coverage
: The coverage area (default: "sncf")count
: Maximum number of disruptions to returnstation_id
: Optional filter for a specific stationline_id
: Optional filter for a specific linesince
: Only disruptions valid after this dateuntil
: Only disruptions valid before this datefetch_train_details
: Whether to fetch additional details about affected trainsExample prompt for Claude:
Are there any current disruptions affecting trains to Marseille?
You can ask Claude to plan a journey between any two cities in France:
I need to travel from Paris to Nice next Friday at 2 PM. Can you find me a train?
Claude will use the plan_journey_by_city_names
tool to:
To get detailed information about a station:
What facilities and transport options are available at Gare de Lyon in Paris?
Claude will use the get_station_details
tool to provide:
To check upcoming departures or arrivals:
When are the next trains leaving from Bordeaux to Paris today?
Claude will use the get_station_schedule
tool to show:
To check for service disruptions:
Are there any disruptions affecting the Paris to Lyon route today?
Claude will use the check_disruptions
tool to:
To add this MCP server to Claude Code, run this command in your terminal:
claude mcp add-json "sncf" '{"command":"py","args":["c:\\Users\\ChristianELHAJJ\\sncf-mcp-new\\sncf_server.py","--api-key={YOUR-API-KEY}"],"cwd":"c:\\Users\\ChristianELHAJJ\\sncf-mcp-new"}'
See the official Claude Code MCP documentation for more details.
There are two ways to add an MCP server to Cursor. The most common way is to add the server globally in the ~/.cursor/mcp.json
file so that it is available in all of your projects.
If you only need the server in a single project, you can add it to the project instead by creating or adding it to the .cursor/mcp.json
file.
To add a global MCP server go to Cursor Settings > Tools & Integrations and click "New MCP Server".
When you click that button the ~/.cursor/mcp.json
file will be opened and you can add your server like this:
{
"mcpServers": {
"sncf": {
"command": "py",
"args": [
"c:\\Users\\ChristianELHAJJ\\sncf-mcp-new\\sncf_server.py",
"--api-key={YOUR-API-KEY}"
],
"cwd": "c:\\Users\\ChristianELHAJJ\\sncf-mcp-new"
}
}
}
To add an MCP server to a project you can create a new .cursor/mcp.json
file or add it to the existing one. This will look exactly the same as the global MCP server example above.
Once the server is installed, you might need to head back to Settings > MCP and click the refresh button.
The Cursor agent will then be able to see the available tools the added MCP server has available and will call them when it needs to.
You can also explicitly ask the agent to use the tool by mentioning the tool name and describing what the function does.
To add this MCP server to Claude Desktop:
1. Find your configuration file:
~/Library/Application Support/Claude/claude_desktop_config.json
%APPDATA%\Claude\claude_desktop_config.json
~/.config/Claude/claude_desktop_config.json
2. Add this to your configuration file:
{
"mcpServers": {
"sncf": {
"command": "py",
"args": [
"c:\\Users\\ChristianELHAJJ\\sncf-mcp-new\\sncf_server.py",
"--api-key={YOUR-API-KEY}"
],
"cwd": "c:\\Users\\ChristianELHAJJ\\sncf-mcp-new"
}
}
}
3. Restart Claude Desktop for the changes to take effect