<div align="center"> </div>非官方 AI驱动的奥里萨邦首府地区公交路线规划器
一个模型上下文协议(MCP)服务器,将智能公交路线规划带入任何AI助手。 在布巴内什瓦尔、库塔克和普里规划您的日常通勤,通过Claude、ChatGPT或任何兼容MCP的AI进行自然语言查询。
作为一名奥里萨邦的Mo Bus/Ama Bus通勤者,我每天面临以下挑战:
Mo Bus MCP Server 通过将智能路线规划直接带到您的AI助手来解决这个问题。只需询问:
"我需要从KIIT校区到阿查亚维哈广场附近的Accenture公司,在早上8:30。我应该乘坐哪辆公交车?"
并获得即时、详细的行程计划,包括:
✅ 要乘坐的具体公交车编号
✅ 到最近站点的步行距离
✅ 总行程时间和费用
✅ 如果有其他路线的话
即插即用与任何LLM — Claude,ChatGPT,或任何兼容MCP的AI助手。
.env设置这是奥里萨邦首都地区城市交通(CRUT)网络的完整站点和路线图:
<div align="center">
完整的公交网络: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.0 | MCP协议实现 |
| 地理编码 | 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 # 本文件
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
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密钥:
.env# 先激活虚拟环境
source .venv/bin/activate # macOS/Linux
# 或
.venv\Scripts\activate # Windows
# 运行服务器
python -m src.server
服务器将开始监听MCP客户端连接。
从Claude.ai安装Claude Desktop
编辑Claude Desktop配置文件:
%APPDATA%\Claude\claude_desktop_config.json~/Library/Application Support/Claude/claude_desktop_config.json~/.config/Claude/claude_desktop_config.json添加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"
}
}
}
}
重启Claude Desktop
开始规划您的旅程!
尝试向Claude提出以下问题:
💬 "显示所有前往机场的公交路线"
💬 "我在KIIT校区,需要到达布巴内什瓦尔火车站。我应该乘坐哪辆公交车?"
💬 "哪些公交车会在大师餐厅停靠?"
💬 "计算从巴拉蒙达到纳丹坎动物园的费用"
💬 "规划我早上从KIIT到阿查亚维哈广场的Accenture公司的通勤,时间为上午8:30"
💬 "10路的所有站点是什么?"
💬 "我需要从库塔克到布巴内什瓦尔,我的选择有哪些?"
💬 "找到我当前位置附近的最近公交站(提及地标)"
Claude将提供结构化的响应,包括:
📍 起点:[您的起点]
📍 终点:[您要去的地方]
🚌 公交选项:[可用的路线和编号]
🚶 步行距离:[到最近站点的距离]
⏱️ 行程时间:[预计时长]
💰 费用:[预计成本]
📅 替代路线:[如果有]
观看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> </div>SerpAPI提供了准确的Google Maps地理编码,以实现更好的位置匹配。
没有SerpAPI: 系统会回退到免费的OpenStreetMap Nominatim(工作但不太准确)。
.env:
SERPAPI_KEY=your_key_here