项目简介
'chattender-fahrplan-mcp' 是一个创新的服务器应用,它允许大型语言模型(LLM)通过标准化的Model Context Protocol (MCP) 协议,访问并利用瑞士联邦铁路(SBB)的实时列车时刻表信息。它提供了强大的工具,使LLM能够查询特定车站间的列车连接,并以结构化JSON或自然语言描述的形式返回结果。这使得开发者可以轻松地将实时交通数据集成到各种LLM驱动的应用中。
主要功能点
- 列车时刻表查询: 提供两个工具用于查询瑞士列车时刻表:
- 'planJourneyJson': 返回详细的列车连接信息(如出发/到达时间、服务类型、运营商、站台、方向)的JSON格式数据,方便LLM进行结构化处理。
- 'planJourneyText': 返回下一班合适列车连接的单句自然语言描述,易于用户理解。
- 地点解析: 能够将用户输入的车站名称解析为SBB系统内部的地点ID(UIC),支持德语查询。
- 与LLM集成: 已与OpenAI OSS GPT、Apertus 8B、Qwen-3 8B等多种LLM进行测试,并提供Jinja模板以优化Prompt渲染。
- 安全认证: 支持通过'X-API-Key'或'Authorization: Bearer'头进行API密钥认证,确保服务安全。
安装步骤
-
环境准备: 确保您的系统已安装Java 21或更高版本。
-
克隆仓库: 从GitHub克隆此仓库到本地:
git clone https://github.com/thpeng/chattender-fahrplan-mcp.git cd chattender-fahrplan-mcp -
配置环境变量/系统属性: 在运行前,您需要设置以下关键配置信息。您可以通过环境变量或Java系统属性(使用'-D'前缀)来定义它们:
- 'JOURNEY_SERVICE_BASE': SBB出行服务的基础URL。例如:'https://api.sbb.ch'。
- 'MCP_API_KEY': 您为此MCP服务器设置的API密钥。这是MCP客户端连接到此服务器时需要提供的认证密钥。
- 'JOURNEY_SERVICE_CLIENT_ID': 用于此MCP服务器向SBB出行服务进行OAuth认证的客户端ID。
- 'JOURNEY_SERVICE_CLIENT_SECRET': 用于此MCP服务器向SBB出行服务进行OAuth认证的客户端密钥。
推荐以环境变量形式配置,例如(在Linux/macOS中):
export JOURNEY_SERVICE_BASE="https://api.sbb.ch" export MCP_API_KEY="your_secret_mcp_api_key" export JOURNEY_SERVICE_CLIENT_ID="your_sbb_client_id" export JOURNEY_SERVICE_CLIENT_SECRET="your_sbb_client_secret" -
构建与运行: 使用Maven构建并运行应用程序:
./mvnw clean package java -jar target/chattender-fahrplan-mcp-*.jar或者直接通过Spring Boot运行(此时请确保上述环境变量已设置):
./mvnw spring-boot:run服务器将在默认端口(通常是8080)启动。
服务器配置(供MCP客户端使用)
以下是MCP客户端连接并启动此服务器所需的配置示例。您的MCP客户端通常会提供一个界面或文件来填写这些信息:
{ "server_name": "SBB Fahrplan MCP", "command": "java", "args": [ "-DJOURNEY_SERVICE_BASE=<您的SBB服务URL>", "-DMCP_API_KEY=<您的MCP服务器API密钥>", "-DJOURNEY_SERVICE_CLIENT_ID=<您的SBB客户端ID>", "-DJOURNEY_SERVICE_CLIENT_SECRET=<您的SBB客户端密钥>", "-jar", "path/to/chattender-fahrplan-mcp-*.jar" ], "description": "连接到瑞士SBB列车时刻表查询MCP服务器" }
参数注释:
- 'server_name': 给这个MCP服务器连接起一个易于识别的名称,方便在客户端列表中查找。
- 'command': 启动Java应用程序的命令,这里固定为'java'。
- 'args': 传递给Java命令的参数列表。
- '-DJOURNEY_SERVICE_BASE=<您的SBB服务URL>': 设置SBB出行服务API的基础URL。
- '-DMCP_API_KEY=<您的MCP服务器API密钥>': 设置用于认证此MCP服务器的API密钥。此密钥由您自行定义,MCP客户端在连接时需提供。
- '-DJOURNEY_SERVICE_CLIENT_ID=<您的SBB客户端ID>': 设置此MCP服务器访问SBB出行服务所需的OAuth客户端ID。
- '-DJOURNEY_SERVICE_CLIENT_SECRET=<您的SBB客户端密钥>': 设置此MCP服务器访问SBB出行服务所需的OAuth客户端密钥。
- '-jar': 指示Java运行一个JAR文件。
- 'path/to/chattender-fahrplan-mcp-*.jar': 替换为'chattender-fahrplan-mcp'项目已构建的可执行JAR文件的实际文件路径和名称(例如,如果您在项目根目录运行,可能是'./target/chattender-fahrplan-mcp-0.0.1-SNAPSHOT.jar')。
- 'description': 对此MCP服务器连接的简要说明,帮助用户理解其功能。
基本使用方法
一旦服务器成功启动并被MCP客户端连接,LLM就可以通过调用其提供的工具来查询列车时刻表。
-
示例1: 查询从苏黎世到伯尔尼的列车(JSON格式) LLM可能会生成类似这样的工具调用请求(具体格式取决于MCP客户端和LLM的集成方式):
{ "tool_code": "planJourneyJson", "tool_input": { "from": "Zürich HB", "to": "Bern" } }服务器将返回一个包含列车连接详情的JSON响应。
-
示例2: 查询从伯尔尼到洛桑的下一班列车(自然语言格式) LLM可能会生成类似这样的工具调用请求:
{ "tool_code": "planJourneyText", "tool_input": { "from": "Bern", "to": "Lausanne" } }服务器将返回一个简短的自然语言句子,描述最接近的列车连接。
信息
分类
网页与API