公交信息查询服务

一个提供香港KMB和龙运巴士实时路线信息和到站时间的MCP服务器,支持语言模型查询公交服务信息。

  • by kennyckk
  • Python
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 kennyckk/mcp_hkbus

使用说明

九巴巴士MCP服务器

模型上下文协议(MCP)服务器,提供对香港九巴(KMB)和龙运巴士(Long Win Bus)路线信息和到达时间的实时访问。此服务器允许语言模型查询香港巴士服务信息,以回答用户关于巴士路线、停靠站和预计到达时间的问题。

特性

  • 实时公交车到达信息(ETA)
  • 综合公交线路查询
  • 公交车站信息和搜索
  • 路线站点映射
  • 用于优化API调用的缓存系统
  • 双语支持(英语和繁体中文)

数据源

本项目采用官方KMB/LWB开放数据API:

先决条件

  • Python 3.10或更高版本
  • uv包管理器

安装

通过Smithery安装

通过以下方式自动安装适用于克劳德桌面的KMB巴士MCP 史密瑟里:

npx -y @smithery/cli install @kennyckk/mcp_hkbus --client claude

手动安装

  1. 首先,如果你还没有安装uv:
curl -LsSf https://astral.sh/uv/install.sh | sh
  1. 克隆存储库:
git clone git@github.com:kennyckk/mcp_hkbus.git
cd mcp_hkbus
  1. 使用uv来处理python包:
uv sync #using uv.lock

用法

  1. 在MCP客户端(例如Claude Desktop)中编辑配置:
{
  "mcpServers": {
    "bus_service": {
      "command": "path/to/uv.exe",
      "args": ["--directory", "path/to/kmb_bus", "run", "kmb_mcp.py"],
      "background": true
    }
  }
}
  1. 服务器提供了几个工具,语言模型可以使用这些工具查询总线信息:
  • get_route_list():获取所有公交线路的列表
  • get_stop_list():获取所有公交车站的列表
  • get_route_stops():获取特定路线的停靠点
  • find_stops_by_name():按名称搜索公交车站
  • get_all_routes_at_stop():获取服务于特定站点的所有路线
  • get_eta():获取预计到达时间

测试

使用pytest运行测试套件:

pytest test/kmb-mcp-tests.py

依赖项

  • httpx:用于异步HTTP请求
  • fastmcp:用于MCP服务器实施
  • pytest:用于测试(仅用于开发)

贡献

欢迎投稿!请随时提交拉取请求。

致谢

  • KMB/LWB,用于提供开放数据API
  • MCP协议开发人员

备注

此服务依赖于KMB/LWB开放数据API。请注意API速率限制,并在生产环境中实施适当的错误处理。