SNCF API MCP Server

by Kryzo
Verified

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Integrations

  • Uses pandas for station lookup functionality via CSV database of European train stations with coordinates

  • Provides access to the French National Railway's (SNCF) API services for journey planning, station information, schedule checking, and disruption monitoring across France

SNCF API MCP 서버

이 프로젝트는 프랑스 전역에서 지능형 여행 계획 및 열차 정보 검색을 위해 Claude Desktop과 완벽하게 통합되는 MCP 서버 인터페이스를 갖춘 SNCF API용 모듈식 Python 래퍼를 제공합니다.

목차

개요

SNCF MCP 서버는 프랑스 국영 철도(SNCF)의 API 서비스에 대한 포괄적인 인터페이스를 제공하여 다음을 수행할 수 있습니다.

  • 프랑스 도시 간 기차 여행 계획
  • 기차역에 대한 자세한 정보를 얻으세요
  • 출발 및 도착 일정을 확인하세요
  • 서비스 중단 모니터링
  • 근처 장소와 교통 수단을 찾아보세요

구조는 다음과 같이 구성됩니다.

  • sncf_api/ - SNCF API 상호 작용을 위한 주요 패키지
    • __init__.py - 패키지 초기화
    • config.py - 구성 설정
    • client.py - 기본 API 클라이언트
    • api.py - 모든 모듈을 결합한 주요 API 인터페이스
    • search.py - 검색 관련 엔드포인트
    • journey.py - 여행 계획 종료점
    • stations.py - 역 관련 종점
    • networks.py - 네트워크 및 전송 모드 엔드포인트
    • disruptions.py - 중단 관련 엔드포인트
    • station_finder.py - 좌표로 효율적인 역 검색
    • csv_station_finder.py - CSV 데이터베이스를 사용한 역 조회
    • vehicle_journey.py - 자세한 기차 여행 정보
  • sncf_server.py - 모든 도구 엔드포인트를 갖춘 MCP 서버 구현
  • train_stations_europe.csv - 좌표가 포함된 유럽 기차역 데이터베이스

특징

  • 지능형 여행 계획 : 자동 역 선택을 통해 프랑스 내 모든 도시 간 여행을 계획하세요
  • 종합적인 역 정보 : 다음을 포함한 역에 대한 자세한 정보를 확인하세요.
    • 이용 가능한 교통 수단(기차, 버스, 트램)
    • 주변 장소 및 관심 지점
    • 좌표 및 접근성 정보
  • 실시간 일정 : 최신 출발 및 도착 정보에 액세스하세요
  • 서비스 중단 모니터링 : 서비스 중단에 대한 정보를 받아보세요
  • 스마트 역 찾기 : 도시 이름, 역 이름 또는 좌표로 역 찾기
  • 대체 메커니즘 : 주요 도시의 하드코딩된 좌표는 API 검색이 실패하더라도 안정성을 보장합니다.
  • 상세 로깅 : 디버깅 및 모니터링을 위한 포괄적인 로깅

설치

필수 조건

  • 파이썬 3.6 이상
  • pip(Python 패키지 관리자)

1단계: 저장소 복제

지엑스피1

2단계: 종속성 설치

pip install -r requirements.txt

requirements.txt 파일이 없으면 다음 패키지를 설치하세요: requests mcp

pip install requests pandas mcp

API 키 받기

이 서버를 사용하려면 SNCF에서 API 키를 받아야 합니다.

  1. SNCF API 포털을 방문하세요
  2. 계정을 생성하거나 로그인하세요
  3. "Navitia" API 서비스 구독
  4. 등록 과정을 완료하세요
  5. 승인되면 계정 대시보드에서 API 키를 받게 됩니다.

API 키는 UUID 문자열(예: 01293485-3NS3-3242-23AZ-3241324512 )처럼 보입니다.

구성

Claude Desktop 설정

SNCF MCP 도구를 Claude Desktop과 통합하려면:

  1. 아직 Claude Desktop을 설치하지 않았다면 설치하세요 .
  2. Claude Desktop 구성 열기 :
    • 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" },

path/to/sncf-mcp-new 설치 디렉토리의 실제 경로로 바꾸세요.

  1. 구성 파일을 저장 하고 Claude Desktop을 다시 시작하세요.

사용 가능한 MCP 도구

구성이 완료되면 Claude Desktop에서 다음 도구를 사용할 수 있습니다.

여행 계획

plan_journey_by_city_names

프랑스의 두 도시 간 여행을 계획해보세요.

매개변수:

  • from_city : 출발 도시 이름(예: "파리")
  • to_city : 목적지 도시 이름(예: "마르세유")
  • datetime : 선택적인 출발 또는 도착 시간(형식: YYYYMMDDTHHMMSS)
  • datetime_represents : "출발" 또는 "도착"(기본값: "출발")
  • include_station_details : 자세한 역 정보를 포함할지 여부

클로드에 대한 예시 프롬프트:

Plan a train journey from Paris to Lyon tomorrow morning at 8 AM.

역 정보

get_station_details

도시의 기차역에 대한 포괄적인 세부 정보를 얻으세요.

매개변수:

  • city_name : 역을 검색할 도시 이름
  • station_name : 선택적인 특정 역 이름
  • station_id : 선택적인 직접 스테이션 ID
  • include_transport_types : 전송 유형 분석을 포함할지 여부
  • include_nearby_places : 주변 장소 정보를 포함할지 여부
  • nearby_distance : 근처 장소의 검색 반경(미터)
  • nearby_count : 반환할 근처 장소의 최대 개수

클로드에 대한 예시 프롬프트:

What transport options are available at the main train station in Grenoble?

get_station_schedule

역의 출발 및 도착 일정을 알아보세요.

매개변수:

  • city_name : 역을 검색할 도시 이름
  • station_name : 선택적인 특정 역 이름
  • station_id : 선택적인 직접 스테이션 ID
  • count : 복귀 출발/도착 횟수
  • datetime : 시작할 선택적 날짜/시간
  • duration : 선택적인 지속 시간(초)
  • data_freshness : 데이터 신선도 수준(실시간 또는 base_schedule)

클로드에 대한 예시 프롬프트:

Show me the next 5 train departures from Paris Gare de Lyon.

중단 모니터링

check_disruptions

SNCF 교통망에서 현재 발생한 중단 상황을 확인하세요.

매개변수:

  • coverage : 적용 범위(기본값: "sncf")
  • count : 반환할 최대 중단 횟수
  • station_id : 특정 역에 대한 선택적 필터
  • line_id : 특정 라인에 대한 선택적 필터
  • since : 이 날짜 이후에만 유효한 중단
  • until : 이 날짜 이전에 유효한 중단만 해당됩니다.
  • fetch_train_details : 영향을 받는 열차에 대한 추가 세부 정보를 가져올지 여부

클로드에 대한 예시 프롬프트:

Are there any current disruptions affecting trains to Marseille?

사용 예

여행 계획

클로드에게 프랑스의 두 도시 간 여행을 계획해 달라고 요청할 수 있습니다.

I need to travel from Paris to Nice next Friday at 2 PM. Can you find me a train?

Claude는 plan_journey_by_city_names 도구를 사용하여 다음을 수행합니다.

  1. 두 도시의 주요 역을 찾아보세요
  2. 그들 사이의 최적의 여행을 계획하세요
  3. 출발/도착 시간, 소요 시간 및 연결 정보를 제공합니다.

스테이션 정보 얻기

방송국에 대한 자세한 정보를 얻으려면:

What facilities and transport options are available at Gare de Lyon in Paris?

Claude는 get_station_details 도구를 사용하여 다음을 제공합니다.

  1. 기본 스테이션 정보(이름, ID, 좌표)
  2. 이용 가능한 교통 수단(기차, 버스, 트램)
  3. 주변 장소 및 관심 지점

기차 시간표 확인

예정된 출발 또는 도착을 확인하려면:

When are the next trains leaving from Bordeaux to Paris today?

Claude는 get_station_schedule 도구를 사용하여 다음을 표시합니다.

  1. 보르도 출발 예정 항공편
  2. 목적지 정보
  3. 플랫폼 세부정보는 사용 가능할 때 제공됩니다.
  4. 실시간 상태 업데이트

모니터링 중단

서비스 중단 여부를 확인하려면:

Are there any disruptions affecting the Paris to Lyon route today?

Claude는 check_disruptions 도구를 사용하여 다음을 수행합니다.

  1. 관련 중단 사항 찾기
  2. 서비스에 미치는 영향을 설명하세요
  3. 영향을 받은 열차에 대한 추가 세부 정보 제공

문제 해결

일반적인 문제

"API 키가 제공되지 않았습니다"

  • Claude Desktop 구성에 SNCF API 키를 추가했는지 확인하세요.
  • MCP 서버 구성에서 환경 변수가 올바르게 참조되는지 확인하세요.

"도시에 대한 방송국을 찾을 수 없습니다"

  • 좀 더 구체적인 도시 이름을 사용해 보세요
  • 작은 도시의 경우 근처의 더 큰 도시의 이름을 사용해 보세요.
  • 이 시스템에는 안정적으로 작동해야 하는 주요 프랑스 도시의 좌표가 하드코딩되어 있습니다.

"SNCF API에 연결하지 못했습니다"

  • 인터넷 연결을 확인하세요
  • API 키가 유효하고 만료되지 않았는지 확인하세요.
  • SNCF API가 다운타임을 겪고 있을 수 있습니다. 나중에 다시 시도하세요.

"CSV 스테이션 찾기 초기화 오류"

  • train_stations_europe.csv 파일이 올바른 위치에 있는지 확인하세요.
  • 파일 권한을 확인하여 파일을 읽을 수 있는지 확인하세요.

고급 기능

하드코딩된 좌표

이 시스템에는 API 검색에 실패하더라도 안정성을 보장하기 위해 주요 프랑스 도시의 하드코딩된 좌표가 포함되어 있습니다.

  • 파리(48.853, 2.348)
  • 마르세유(43.303, 5.380)
  • 리옹(45.760, 4.860)
  • 툴루즈(43.611, 1.454)
  • 니스(43.704, 7.262)
  • 낭트(47.217, -1.542)
  • 스트라스부르(48.585, 7.735)
  • 보르도(44.826, -0.556)
  • 릴(50.638, 3.072)
  • 렌(48.103, -1.672)
  • 그르노블(45.192, 5.716)

운송 유형 분석

get_station_details 도구는 역에서 이용 가능한 교통 수단을 분석하고 분류할 수 있습니다.

  • 장거리 열차(TGV, Intercités)
  • 지역 열차(TER)
  • 지역 교통(버스, 트램, 지하철)
  • 기타 서비스(택시, 자전거 공유)

주변 장소 검색

역 세부 정보 도구를 사용하면 역 근처의 관심 지점을 찾을 수 있습니다.

  • 기타 교통 정류장
  • 공공시설
  • 관심 지점
  • 주소 지점

이 기능은 역에서 다음 여행을 계획하는 여행객에게 특히 유용합니다.


기여하다

SNCF MCP 서버 개선을 위한 여러분의 참여를 환영합니다! 버그 및 기능 요청은 풀 리퀘스트를 제출하거나 이슈를 개설해 주세요.

특허

이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여되었습니다. 자세한 내용은 라이선스 파일을 참조하세요.

감사의 말

  • API를 제공하는 SNCF
  • 포괄적인 대중교통 API를 제공하는 Navitia 팀
  • 지능형 통합 기능을 위한 Claude AI

Christian delage( dr.christian.delage@gmail.com )가 생성했습니다.

ID: uvbp7vugox