返回市场
模BUS MCP

模BUS MCP

作者:HimanshuMohanty-Git242 星标更新:2025-11-16

项目介绍

🚌 Mo Bus / Ama Bus MCP Server (非官方)

<div align="center"> <a href="https://github.com/HimanshuMohanty-Git24/MoBusMCP"> <img src="./asset/homescreen_logo-DmBcJ5Bh.png" alt="Mo Bus Logo" height="50" style="margin: 0 10px;"> <img src="./asset/crut_logo-ScA_gL9H.png" alt="CRUT Logo" height="50" style="margin: 0 10px;"> <img src="./asset/AMA_BUS_ODIA-DwlePuKT.png" alt="Ama Bus Logo" height="50" style="margin: 0 10px;"> </a> </div>

非官方 AI驱动的奥里萨邦首府地区公交路线规划器

<div align="center">

License: MIT Python 3.10+ FastMCP Status: Beta GitHub Repo Stars GitHub Forks GitHub Issues GitHub PRs

</div>

一个模型上下文协议(MCP)服务器,将智能公交路线规划带入任何AI助手。 在布巴内什瓦尔、库塔克和普里规划您的日常通勤,通过Claude、ChatGPT或任何兼容MCP的AI进行自然语言查询。


📖 目录


🎯 概述

遇到的问题

作为一名奥里萨邦的Mo Bus/Ama Bus通勤者,我每天面临以下挑战:

  • 😕 不知道该乘坐哪辆公交车 — 多条线路,同一个目的地
  • 🔍 浪费时间搜索 — 打开应用,查找路线,检查站点
  • 🤔 不确定上车地点 — 我应该在哪里上车?
  • 📱 切换上下文 — 不断在应用之间切换

解决方案

Mo Bus MCP Server 通过将智能路线规划直接带到您的AI助手来解决这个问题。只需询问:

"我需要从KIIT校区到阿查亚维哈广场附近的Accenture公司,在早上8:30。我应该乘坐哪辆公交车?"

并获得即时、详细的行程计划,包括:

✅ 要乘坐的具体公交车编号
✅ 到最近站点的步行距离
✅ 总行程时间和费用
✅ 如果有其他路线的话

即插即用与任何LLM — Claude,ChatGPT,或任何兼容MCP的AI助手。


✨ 特性

🚏 智能旅程规划

  • 自然语言查询 — 用简单的英语提问
  • 智能地理编码 — 使用Google Maps(SerpAPI)+ OpenStreetMap
  • 最近站点检测 — 自动找到最近的Mo Bus站点
  • 多路线建议 — 获取带有优缺点的替代路线
  • 步行距离计算 — 知道确切的步行距离
  • 实时费用估算 — 基于距离和路线

🗺️ 全面覆盖

  • 60多条公交路线 — 覆盖主要走廊
  • 734个公交站点 — 覆盖布巴内什瓦尔、库塔克和普里
  • 3个主要城市 — 首都地区连接
  • 特殊服务 — 机场、火车站、医院路线

🤖 AI原生设计

  • MCP协议 — 适用于Claude Desktop、ChatGPT等
  • FastMCP框架 — 清晰、现代的Python实现
  • 工具化架构 — 模块化、可扩展的设计
  • 上下文感知 — 理解地标、地址和口语名称

🔧 开发者友好

  • 文档齐全 — 清晰的代码和全面的注释
  • 易于扩展 — 模块化的服务架构
  • 基于环境的配置 — 简单的.env设置
  • 全面的错误处理 — 平稳降级

🗺️ 官方公交网络地图

这是奥里萨邦首都地区城市交通(CRUT)网络的完整站点和路线图:

<div align="center">

Mo Bus和Ama Bus网络地图

完整的公交网络:60多条路线 | 734个站点 | 布巴内什瓦尔 • 库塔克 • 普里

</div>

地图覆盖

  • 主网络 — 连接城市中心的所有主要路线
  • 站点位置 — 所有公交站点的确切地理位置
  • 路线详情 — 彩色编码的路线便于识别
  • 连接点 — 中转枢纽和换乘站
  • 服务区 — 机场、火车站、医院、教育机构

要获取最新的官方信息,请访问CRUT官方网站


🏗️ 架构

系统设计

graph TD
    subgraph Client["🖥️ 客户端层"]
        Claude["Claude Desktop"]
        ChatGPT["ChatGPT"]
        Other["其他AI客户端"]
    end
    
    subgraph MCP["🔌 MCP协议层"]
        Protocol["stdin/stdout/HTTPS通信"]
    end
    
    subgraph Server["🚀 MCP服务器层<br/>FastMCP"]
        Journey["行程规划器"]
        Route["路线查找器"]
        Fare["费用计算器"]
    end
    
    subgraph Service["🌐 服务层"]
        Geocoding["地理编码服务<br/>SerpAPI + Nominatim"]
        SerpAPI["Google Maps<br/>SerpAPI"]
        OSM["OpenStreetMap<br/>Nominatim"]
    end
    
    subgraph Data["💾 数据层"]
        JSON["JSON数据存储"]
        Routes["60多条路线"]
        Stops["734个站点"]
        Fares["费用结构"]
    end
    
    Claude --> Protocol
    ChatGPT --> Protocol
    Other --> Protocol
    Protocol --> Journey
    Protocol --> Route
    Protocol --> Fare
    Journey --> Geocoding
    Route --> Geocoding
    Fare --> JSON
    Geocoding --> SerpAPI
    Geocoding --> OSM
    JSON --> Routes
    JSON --> Stops
    JSON --> Fares
    
    classDef clientStyle fill:#FF6B6B,stroke:#C92A2A,color:#fff,stroke-width:2px
    classDef protocolStyle fill:#4ECDC4,stroke:#088395,color:#fff,stroke-width:2px
    classDef serverStyle fill:#95E1D3,stroke:#38ADA9,color:#000,stroke-width:2px
    classDef serviceStyle fill:#FFE66D,stroke:#F4A261,color:#000,stroke-width:2px
    classDef dataStyle fill:#A8DADC,stroke:#457B9D,color:#000,stroke-width:2px
    
    class Client clientStyle
    class MCP protocolStyle
    class Server serverStyle
    class Service serviceStyle
    class Data dataStyle

组件分解

组件技术目的
服务器框架FastMCP 2.0MCP协议实现
地理编码SerpAPI + OSM Nominatim地址到坐标的转换
行程规划自定义算法路线查找和优化
数据存储JSON路线、站点和费用数据
距离计算Haversine公式步行距离计算
语言支持Python 3.10+核心实现

项目结构

AmABUSMCP/
├── src/
│   ├── __init__.py                   # 包初始化
│   ├── server.py                     # FastMCP服务器入口点
│   ├── data/
│   │   ├── __init__.py              # 数据加载和辅助函数
│   │   └── (数据工具)
│   ├── services/
│   │   ├── __init__.py
│   │   ├── geocoding.py             # SerpAPI + OSM地理编码服务
│   │   └── planner.py               # 行程规划算法
│   └── utils/
│       ├── __init__.py
│       └── distance.py              # Haversine距离计算
├── asset/
│   ├── ALL STOP AND ROUT MAP.png    # 官方网络地图
│   ├── homescreen_logo-*.png        # Mo Bus标志
│   ├── crut_logo-*.png              # CRUT标志
│   └── AMA_BUS_ODIA-*.png           # Ama Bus标志
├── mo_bus_complete_database.json    # 完整的路线及站点数据库
├── requirements.txt                  # Python依赖项
├── pyproject.toml                   # 项目配置
├── .env.example                     # 示例环境变量
├── .gitignore                       # Git忽略规则
└── README.md                        # 本文件

🚀 安装

预备条件

  • Python 3.10 或更高版本 — 下载Python
  • pipuv(推荐用于更快的安装)
  • SerpAPI密钥(可选,用于增强地理编码)
  • Git — 用于克隆仓库

方法1:使用uv(推荐 - 最快)

uv 是一个用Rust编写的快速Python包安装程序。

# 第一步:安装uv(如果尚未安装)
curl -LsSf https://astral.sh/uv/install.sh | sh

# 第二步:克隆仓库
git clone https://github.com/HimanshuMohanty-Git24/MoBusMCP.git
cd MoBusMCP

# 第三步:创建虚拟环境
uv venv

# 第四步:激活虚拟环境
# 在Windows上:
.venv\Scripts\activate
# 在macOS/Linux上:
source .venv/bin/activate

# 第五步:安装依赖项
uv sync

方法2:使用pip

# 第一步:克隆仓库
git clone https://github.com/HimanshuMohanty-Git24/MoBusMCP.git
cd MoBusMCP

# 第二步:创建虚拟环境
python -m venv venv

# 第三步:激活虚拟环境
# 在Windows上:
venv\Scripts\activate
# 在macOS/Linux上:
source venv/bin/activate

# 第四步:安装依赖项
pip install -r requirements.txt

环境设置

在项目根目录下创建一个.env文件:

# 可选:对于增强的Google Maps地理编码
SERPAPI_KEY=your_serpapi_key_here

# 可选:服务器配置
LOG_LEVEL=INFO
DEBUG_MODE=false

获取免费的SerpAPI密钥:

  1. 访问SerpAPI
  2. 注册免费账户(包括免费信用额度)
  3. 复制您的API密钥
  4. 将其添加到.env

🎯 快速开始

1. 启动服务器(独立运行)

# 先激活虚拟环境
source .venv/bin/activate  # macOS/Linux
# 或
.venv\Scripts\activate     # Windows

# 运行服务器
python -m src.server

服务器将开始监听MCP客户端连接。

2. 与Claude Desktop配置

  1. Claude.ai安装Claude Desktop

  2. 编辑Claude Desktop配置文件

    • Windows: %APPDATA%\Claude\claude_desktop_config.json
    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Linux: ~/.config/Claude/claude_desktop_config.json
  3. 添加Mo Bus服务器配置:

{
  "mcpServers": {
    "mo-bus": {
      "command": "python",
      "args": ["-m", "src.server"],
      "cwd": "C:\\path\\to\\MoBusMCP",
      "env": {
        "PYTHONPATH": "C:\\path\\to\\MoBusMCP",
        "SERPAPI_KEY": "your_serpapi_key_here"
      }
    }
  }
}
  1. 重启Claude Desktop

  2. 开始规划您的旅程!


🎮 使用

示例查询

尝试向Claude提出以下问题:

💬 "显示所有前往机场的公交路线"

💬 "我在KIIT校区,需要到达布巴内什瓦尔火车站。我应该乘坐哪辆公交车?"

💬 "哪些公交车会在大师餐厅停靠?"

💬 "计算从巴拉蒙达到纳丹坎动物园的费用"

💬 "规划我早上从KIIT到阿查亚维哈广场的Accenture公司的通勤,时间为上午8:30"

💬 "10路的所有站点是什么?"

💬 "我需要从库塔克到布巴内什瓦尔,我的选择有哪些?"

💬 "找到我当前位置附近的最近公交站(提及地标)"

响应格式

Claude将提供结构化的响应,包括:

📍 起点:[您的起点]
📍 终点:[您要去的地方]
🚌 公交选项:[可用的路线和编号]
🚶 步行距离:[到最近站点的距离]
⏱️ 行程时间:[预计时长]
💰 费用:[预计成本]
📅 替代路线:[如果有]

高级功能

  • 多段旅程 — 自动连接建议
  • 基于时间的规划 — 考虑高峰时段和时刻表
  • 步行优化 — 最小化步行距离
  • 费用计算 — 基于实际路线

📸 演示截图

Claude Desktop中MCP的实际演示

1. 初始查询和路线规划

<div align="center"> <img src="./asset/1.png" alt="MCP演示截图1 - 路线规划" width="800"> </div>

2. 行程细节和站点信息

<div align="center"> <img src="./asset/2.png" alt="MCP演示截图2 - 行程细节" width="800"> </div>

3. 完整通勤计划及费用

<div align="center"> <img src="./asset/3.png" alt="MCP演示截图3 - 完整计划" width="800"> </div>

📹 视频演示

YouTube上的完整演示

观看Mo Bus MCP Server的完整演示:

<div align="center"> <a href="https://www.youtube.com/watch?v=5amNjx5qDVE" target="_blank"> <img src="https://img.youtube.com/vi/5amNjx5qDVE/maxresdefault.jpg" alt="Mo Bus MCP Server - YouTube演示" width="800" style="cursor: pointer; border-radius: 8px;"> </a>

观看YouTube上的完整演示

</div>

⚙️ 配置

SerpAPI设置(可选但推荐)

SerpAPI提供了准确的Google Maps地理编码,以实现更好的位置匹配。

没有SerpAPI: 系统会回退到免费的OpenStreetMap Nominatim(工作但不太准确)。

设置步骤:

  1. 注册SerpAPI(提供免费层级)
  2. 从仪表板获取您的API密钥
  3. 添加到.env
    SERPAPI_KEY=your_key_here
    
  4. 重启服务器

自定义

添加新路线