公共交通信息查询服务

一个通过ResRobot API提供瑞典公共交通实时信息的MCP服务器,帮助AI助手规划行程。

  • by JorritPeters
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 jorritpeters/sweden-public-transport-mcp-server

使用说明

瑞典公共交通MCP服务器

模型上下文协议(MCP)服务器,通过ResRobot API提供对瑞典公共交通信息的访问。该服务器允许AI助手检索瑞典公共交通的实时交通数据,以规划您从A到B的旅程。

先决条件

  • Python 3.8+
  • UV包经理(负责本地开发)
  • 来自的ResRobot API密钥 交通
  • 谷歌云SDK(用于云运行部署)

设置

1.克隆仓库

克隆此存储库并导航到以下目录:

git clone <repository-url>
cd sweden-public-transport-mcp-server

2.环境变量

创建一个 .env 项目根目录中的文件:

# ResRobot API Configuration
resbot_key=your_resrobot_api_key_here

地方发展

在本地运行服务器

  1. 安装依赖项:

    cd transport
    uv sync
    
  2. 运行本地MCP服务器:

    uv run mcp_local.py
    

Claude桌面配置(本地)

将此添加到您的Claude Desktop配置文件(Claude Desktop的工作版本):

{
  "mcpServers": {
    "transport": {
      "command": "uv",
      "args": [
        "--directory",
        "/Users/jorpet/Documents/git/sweden-public-transport-mcp-server/transport",
        "run",
        "mcp_local.py"
      ]
    }
  }
}

云部署

部署到Google Cloud Run

  1. 部署到云运行:
    gcloud run deploy mcp-server \
      --no-allow-unauthenticated \
      --region=us-central1 \
      --set-env-vars resbot_key=your_resrobot_api_key_here,local_run=false
      --source .
    

Obs:这是一种非常不安全的设置api密钥的方法。下一个版本将使用Google Secret Manager。

  1. 设置本地访问代理:
    gcloud run services proxy mcp-server --region=us-central1
    

Claude桌面配置(云运行)

对于云部署版本,请将此添加到您的LLM配置(Claude桌面的工作版本)中:

{
  "mcpServers": {
    "transport_cloud_run": {
      "command": "npx",  
      "args": ["-y", "mcp-remote", "http://localhost:8080/mcp"]
    }
  }
}

测试

测试云运行部署

使用提供的测试脚本验证您的Cloud Run部署:

python test_mcp_cloud_run.py

此脚本将:

  • 列出MCP服务器上的可用工具
  • 测试 find_station_id_tool 与“乌普萨拉”
  • 测试 get_travel_options_tool 带有示例站ID

手动测试

配置后,您还可以通过Claude Desktop手动测试这些工具:

获取旅行选项:

What are the travel options from Uppsala to Stockholm?

可用工具

MCP服务器为瑞典公共交通信息提供了两个主要工具:

find_station_id_tool

使用ResRobot位置API按城市或车站名称查找车站ID。

参数:

  • city_name (string,必填):要搜索的城市或车站的名称

输入示例:

{
  "city_name": "Uppsala"
}

输出示例:

Station ID of Uppsala is 740000005

Claude中的用法:

Find the station ID for "Stockholm"

克劳德回应: 该工具将返回斯德哥尔摩的车站信息,包括带有ID的斯德哥尔摩中央车站 740000001.


get_travel_options_tool

使用车站ID获取两个城市之间的旅行信息。

参数:

  • start_city_id (string,必填):出发城市的车站ID
  • end_city_id (string,必填):目的地城市的车站ID

输入示例:

{
  "start_city_id": "740000005",
  "end_city_id": "740000001"
}

输出示例:

Travel options from 740000005 to 740000001:
1. Departure: 14:17 → Arrival: 14:55 (Duration: 38 minutes)
2. Departure: 14:47 → Arrival: 15:25 (Duration: 38 minutes)
3. Departure: 15:17 → Arrival: 15:55 (Duration: 38 minutes)

Claude中的用法:

What are the travel options from Uppsala to Stockholm?

克劳德回应: 助理将:

  1. 先用 find_station_id_tool 查找乌普萨拉和斯德哥尔摩的车站ID
  2. 然后使用 get_travel_options_tool 使用找到的电台ID
  3. 向您展示格式化的出发时间、到达时间和行程持续时间

公用站ID:

  • 斯德哥尔摩中央车站: 740000001
  • 乌普萨拉中央车站: 740000005
  • 哥德堡中央火车站: 740000002
  • 马尔默中央火车站: 740000003