GeotabVibe——舰队指挥中心
基于Geotab+谷歌地图+Gemini AI+Ace AI的对话式车队管理
和你的舰队谈谈。用简单的英语提问,从您的Geotab远程信息处理数据中获得实时答案——通过实时谷歌地图仪表板、人工智能分析、动画行程回放、语音控制和一键式高管报告。
问题
车队经理需要处理多个仪表板、报告和界面来回答简单的问题: *“哪辆卡车的燃油效率最差?”*, *“是否有任何激活的故障代码?”*, *“我们的司机本周的安全得分如何?”*
在Geotab Marketplace的776+个解决方案中, 零 提供对话式AI界面。车队经理们被困在点击菜单上,而不仅仅是询问。
解决方案
一个全栈舰队指挥中心,结合了:
- 20个MCP工具 任何人工智能助手(Claude、GPT等)都可以通过自然语言查询和管理车队数据
- 实时谷歌地图仪表板 具有实时车辆跟踪、热图和地理围栏覆盖
- Gemini AI聊天 使用函数调用(创建区域、发送消息、查询异常、分析数据)
- Geotab Ace AI集成 获取舰队本土见解
- 行程回放 带有GPS面包屑动画、速度彩色路径和遥测HUD
- 执行报告 由Gemini+Ace AI生成,可导出为HTML/PDF
- 语音控制 通过Web Speech API-触发演示,提问,通过语音控制仪表板
- 自动演示 配有TTS旁白(Gemini Native Audio)——3分钟导览,展示每个功能
- SQLite载体富集 用于演示级车队数据
- 持久SQLite响应缓存 使用DB-first体系结构-对缓存数据的API调用为零
You: "Show me all vehicles in my fleet"
AI: Here are your 50 vehicles — 15 vans, 12 pickups, 8 sedans, 8 SUVs, 4 EVs, 3 heavy trucks...
You: "Which one has the worst fuel efficiency this month?"
AI: Unit 48 — Hino 195 averaged 4.2 MPG, significantly below fleet average of 6.8 MPG.
You: "Create a geofence around 123 Main St, Toronto"
AI: Geocoded → Created zone 'Main St Depot' with 500m radius. ✓
You: "Generate a fleet report"
AI: [Opens executive report with Gemini analysis + Ace AI insights — Print/Save HTML/Save PDF]建筑
User ←→ Claude / Any MCP Client
|
MCP Server (FastMCP, stdio) — 20 tools
|
+---------+---------+----------+-----------+
| | | | |
Geotab OData DC DuckDB Gemini AI Google
API (KPIs) Cache (analysis) Geocoding
| |
+--- Flask Web Dashboard (port 5030) ---+
Google Maps JS API
Gemini Chat + Function Calling
Gemini Native Audio (TTS)
Geotab Ace AI
SQLite Vehicle Enrichment
SQLite Response Cache (DB-first)特性
仪表板用户界面
- 实时车辆标记 在谷歌地图上显示状态颜色(绿色=移动,灰色=停止,红色=故障,深色=离线)
- 自动刷新 每10秒获取一批位置(所有车辆调用1个API)
- 车辆详细信息面板 --单击驾驶员、部门、品牌/型号、VIN、里程表、发动机小时数、故障、行程的任何标记
- 车辆搜索 --按姓名、司机、部门或品牌筛选
- 车队KPI卡 --总距离、行程、怠速百分比、行驶小时数、最高速度、异常
- 土工格栅覆盖层 根据多边形数据估计半径渲染
- 黑暗/光明主题 玻璃造型
地图控件
- 热力图 --整个车队作业区域的活动密度可视化(车辆位置约1000个合成点)
- 锁定视图 --防止数据刷新时自动平移/缩放,以便您可以检查特定区域
- 系统处于单机运行模式 --隐藏除所选车辆外的所有标记,以便进行集中跟踪
- 适合所有 --一键缩放显示整个车队
旅行回放
- GPS面包屑动画 带有播放/暂停/速度控制
- 速度彩色路径 --绿色(缓慢)、黄色(正常)、红色(快速)、灰色(停止)
- 实时遥测HUD --速度、加速度、距离、经过时间、平均/最大速度
- 滑块擦洗 --跳到旅途中的任何一点
舰队报告
- 执行报告 由Gemini AI+Geotab Ace AI生成
- 可调整大小的滑出式面板 带拖动手柄(报告+指南选项卡)
- 出口:打印,另存为HTML(带有嵌入式样式的独立文件),另存成PDF(通过浏览器打印)
- 弹出窗口:在独立浏览器选项卡中打开报告或指南
- 章节:执行摘要、车队概述、表现最佳者、异常、Ace AI见解、建议
AI聊天(车队助理)
- 双子座人工智能 使用函数调用--跨12个工具的自然语言舰队查询
- 动作命令:创建地理围栏,向车辆发送短信,查询异常
- 语音输入 通过网络语音API和临时转录
- 文本到语音 用于AI响应(浏览器语音合成)
- 会话历史记录 具有清除/重置功能
MCP服务器
- 20工具 将完整的Geotab车队数据暴露给任何兼容MCP的AI助手
- 适用于Claude Desktop、Claude Code或任何MCP客户端
- 通过任何AI界面的自然语言实现车队管理
- 与仪表板分开——可以通过stdio独立运行
自动演示
- 3分钟导游 用TTS旁白展示每个功能
- Gemini原生音频 (Live API),用于具有持久MP3缓存的旁白语音
- 语音触发聊天查询 --麦克风按钮发出红色脉冲,文本打字机输入,然后发送
- 系统处于单机运行模式 行程回放期间的集成(之前打开,之后关闭)
- 触发器:在聊天中说“播放演示”,键入或使用
?demo=1URL参数
Geotab Ace AI
- 直接对车队数据集进行自然语言查询
- 整合到高管报告中,以获得车队本地见解
- 独立
/api/ace端点
车辆浓缩层
- SQLite数据库 (
fleet_enrichment.db)将真实的机队数据叠加到演示数据集上 - 50辆加拿大混合车队:15辆面包车、12辆皮卡、8辆轿车、8辆SUV、4辆电动汽车、3辆重型卡车
- 驾驶员姓名、部门(交付/服务/销售/行政/现场运营)、里程表、发动机小时数、VIN
- 切换开/关 通过
/api/enrichment/toggle-清除API仅后退 - API实时字段(GPS、速度、状态)始终优先
缓存(DB优先架构)
- 持久SQLite响应缓存 -所有API响应同时写入内存+SQLite
- DB首次启动 -从SQLite缓存热加载,第一页加载的API调用为零
- 基于TTL的内存缓存 在所有API路线上(车辆60秒,位置30秒,行程5分钟,区域5分钟,故障2分钟)
- 陈旧的发球回退 -当API速率受限或不可用时返回缓存的数据
- 批量位置提取 -1 API要求所有车辆,而不是N+1
?refresh=1查询参数以强制绕过内存和数据库缓存
API呼叫跟踪器
- SQLite数据库 (
api_tracker.db)记录每个外部API调用(Geotab、Gemini、Ace) - 跟踪服务、方法、状态、响应时间(毫秒)、错误和缓存命中率
/api/tracker端点返回使用情况摘要(按服务/状态分组)+最近的调用- 支持
?hours=N和?limit=N用于筛选的查询参数
MCP工具(20)
| 类别 | 工具 | 描述 |
|---|---|---|
| 效用 | test_connection | 验证API连接 |
| 车队概述 | get_fleet_vehicles | 列出所有带有状态/VIN/里程表的车辆 |
get_vehicle_details | 在一辆车上深潜 | |
get_fleet_drivers | 列出所有驱动程序 | |
get_zones | 列出所有地理围栏 | |
| 实时 | get_vehicle_location | 当前GPS+速度 |
get_active_faults | 整个车队的激活DTC | |
| 历史 | get_trip_history | 带距离/持续时间/速度的行程 |
get_fuel_analysis | 燃料交易和成本 | |
get_exception_events | 违反规则 | |
| 关键绩效指标 | get_safety_scores | 通过数据连接器实现驾驶员安全 |
get_fleet_kpis | 通过数据连接器查看每日车队关键绩效指标 | |
| 行动 | create_geofence | 根据坐标创建分区 |
send_message | 向驾驶室设备发送短信 | |
| 分析 | query_fleet_data | SQL覆盖缓存的DuckDB数据 |
list_cached_datasets | 显示缓存表 | |
export_data | 导出为JSON/CSV | |
| 谷歌人工智能 | gemini_analyze | 将车队数据分析委托给Gemini AI |
| 谷歌地图 | geocode_address | 将地址转换为GPS坐标 |
create_geofence_from_address | 从街道地址拍摄地理围栏 |
仪表板API路线(21)
| 方法 | 路线 | 描述 |
|---|---|---|
| 得到 | / | 主仪表板页面 |
| 得到 | /guide | 独立用户指南页面 |
| 得到 | /api/guide | 用户指南内容(降价) |
| 得到 | /api/vehicles | 所有配备GPS定位功能的车辆(已增强) |
| 得到 | /api/vehicle//location | 单车实时GPS |
| 得到 | /api/vehicle//trips | 带路线点的旅行历史 |
| 得到 | /api/vehicle//trip-replay | 用于动画回放的GPS日志记录 |
| 得到 | /api/zones | 所有具有估计半径的地理围栏区域 |
| 得到 | /api/faults | 激活的故障代码 |
| 得到 | /api/status | 连接状态+车队摘要 |
| 得到 | /api/fleet-kpis | 汇总车队关键绩效指标 |
| 得到 | /api/heatmap-data | 活动热图点 |
| 职位 | /api/report | 生成执行报告(Gemini+Ace AI) |
| 职位 | /api/ace | 问Geotab Ace AI一个问题 |
| 职位 | /api/chat | Gemini AI聊天功能调用 |
| 职位 | /api/chat/clear | 清除聊天会话 |
| 得到 | /api/tracker | API调用使用摘要+最近的调用 |
| 得到 | /api/enrichment/status | 检查浓缩切换状态 |
| 职位 | /api/enrichment/toggle | 打开/关闭车辆浓缩功能 |
| 职位 | /api/tts | 通过Gemini Native Audio实现文本转语音 |
| 职位 | /api/tts/warmup | 预先录制所有演示旁白 |
快速开始
1.安装
git clone https://github.com/harmsolo13/geotab-fleet-mcp.git
cd geotab-fleet-mcp
pip install -e .2.配置凭据
cp .env.example .env
# Edit .env with your credentials:
# GEOTAB_DATABASE=your_database
# GEOTAB_USERNAME=your_email@example.com
# GEOTAB_PASSWORD=your_password
# GEOTAB_SERVER=my.geotab.com
# GEMINI_API_KEY=your_gemini_key
# GOOGLE_MAPS_API_KEY=your_maps_key需要API密钥:
3.运行MCP服务器
# With Claude Desktop — add to claude_desktop_config.json:
{
"mcpServers": {
"geotab-fleet": {
"command": "python",
"args": ["-m", "geotab_mcp.server"],
"cwd": "/path/to/geotab-fleet-mcp/src"
}
}
}
# With Claude Code
claude mcp add geotab-fleet -- python -m geotab_mcp.server
# With MCP inspector
mcp dev src/geotab_mcp/server.py4.运行仪表板
# Start the Google Maps dashboard on port 5030
python -m geotab_mcp.dashboard
# Or use the CLI entry point
geotab-dashboard打开 http://localhost:5030 查看实时舰队地图。
5.运行演示
打开 http://localhost:5030/?demo=1 --或者打开聊天窗口,说“播放演示”,启动一个全自动的3分钟解说之旅。
技术栈
- Python 3.10+ --后端
- FastMCP (
mcp)--MCP服务器框架 - mygeotab --官方Geotab Python SDK
- httpx --OData+谷歌API的HTTP客户端
- DuckDB --嵌入式分析缓存
- SQLite -车辆富集+响应缓存+API跟踪器
- 烧瓶 --Web仪表板后端
- 谷歌地图JavaScript API --带AdvancedMarkerElement的实时车队地图
- 谷歌地图热点图层 --活动密度可视化
- 谷歌地理编码API --地址到坐标
- 谷歌双子座人工智能 (
google-genai)--车队分析+功能调用聊天 - 谷歌Gemini原生音频 (API直播)-带MP3缓存的TTS解说
- Geotab Ace AI --舰队原生自然语言分析
- 网络语音API --语音输入+浏览器TTS
- 派丹蒂克 --数据验证
- python dotenv --环境配置
文件结构
geotab-fleet-mcp/
├── src/geotab_mcp/
│ ├── server.py # MCP server — 20 tools (549 lines)
│ ├── dashboard.py # Flask web dashboard — 21 API routes (1236 lines)
│ ├── geotab_client.py # Geotab API wrapper + batch locations (582 lines)
│ ├── gemini_client.py # Gemini AI chat + function calling (596 lines)
│ ├── enrichment.py # SQLite vehicle enrichment layer (220 lines)
│ ├── api_tracker.py # SQLite API call tracker + response cache (211 lines)
│ ├── data_connector.py # OData v4 Data Connector client (178 lines)
│ ├── cache.py # DuckDB caching layer (142 lines)
│ ├── google_maps.py # Geocoding + geofence creation (133 lines)
│ └── __init__.py
├── templates/
│ └── dashboard.html # Single-page dashboard template (235 lines)
├── static/
│ ├── js/fleet-map.js # Map, chat, replay, heatmap, controls (1513 lines)
│ ├── js/demo.js # Automated demo with TTS narration (793 lines)
│ └── css/dashboard.css # Dark/light theme, glass morphism (1558 lines)
├── static/audio/tts_cache/ # Pre-recorded narrator MP3s (Gemini Native Audio)
├── fleet_enrichment.db # SQLite enrichment data (50 vehicles)
├── api_tracker.db # SQLite API call log + response cache
├── README.md
├── PROMPTS.md # AI prompts used during development
├── DEMO_NARRATION.md # Demo script with timing
└── pyproject.toml总计:13个源文件中约7950行代码。
演示场景
- 语音触发器:说“播放演示”→ 全自动3分钟解说导览
- 车队概述: *“显示所有车辆及其当前状态”*
- 车辆详细信息:单击任何标记→ 驾驶员、部门、品牌/型号、行程、故障
- 系统处于单机运行模式:隔离一辆车,隐藏所有其他车队标记
- 行程回放:单击行程的播放按钮→ 带速度HUD的动画GPS面包屑
- 热力图:切换热图以查看车队活动密度
- 报告:单击“报告”→ Gemini+Ace AI的执行分析→ 打印/保存
- 聊天: *在43.52-79.69处创建一个名为舰队作战区的地理围栏,半径为2公里*
- 语音:单击麦克风→ 说→ AI通过语音+文本进行响应
- Ace AI: *“我的车队中最大的燃料消耗者是谁?”*
- 主题切换:在暗模式和亮模式之间切换
竞争
为 2026年Geotab Vibe编码竞赛.目标:
- Vibe大师 (1万美元)——最佳整体解决方案
- 创新者 (5000美元)——利用人工智能驱动的车队智能进行技术创新
- Google工具的最佳使用 (2.5K美元)——谷歌地图仪表板、双子座人工智能聊天+功能调用、双子座原生音频TTS、谷歌地理编码
团队
由2名开发人员使用 克劳德代码 (Claude Opus 4.6)作为主要的氛围编码合作伙伴。
许可证
麻省理工学院
