Cityflo OTP MCP
Cityflo OTP MCP (AI Engineer take-home)
Kleiner stdio-MCP-Server für die On-Time-Performance von Mumbai North über eine Woche trips.csv. Entwickelt für Priyas Frage: „War Route 12 diese Woche zu spät, und um wie viel?“ — mit Drill-down, nicht einem Dashboard.
Umfang
Enthalten
Domäne: nur On-Time-Performance
Daten:
data/trips.csv(Mo–Fr 2026-06-15 … 2026-06-19)Tools:
route_otp_summary,list_late_trips,data_quality_reportDeterministische Verspätungs-/Quarantäne-/Aggregationslogik in Python-Tools
Nicht enthalten
Auslastung, Ticket-Triage, Ops-Log-Zusammenfasser
Datenbanken, BI-Dashboards, Web-UI
Stille „Datennormalisierung“, die Richtlinien verbirgt (siehe OPS-2207 unten)
Related MCP server: Cityflo On-Time Performance MCP Server
Architektur
Agent / MCP client (stdio)
│
▼
cityflo_otp.server (FastMCP, 3 tools)
│
▼
cityflo_otp.otp (parse → quarantine → delays → aggregates)
│
▼
data/trips.csvDas Modell sollte Tools für Zahlen aufrufen und nur die Antwort formulieren. Arithmetik lebt nie im LLM.
Verspätungsdefinition
arrival_delay_min = actual_arrival − scheduled_arrival(zeitzonenbewusst)Verspätet, wenn
arrival_delay_min > 10(Standard; überschreibbar überlate_threshold_min)Kopfkennzahlen: % verspätet der nutzbaren Fahrten, Median / p90 der Ankunftsverspätung (kein fragiler Mittelwert)
Abfahrtsverspätung wird nur für den Drill-down zurückgegeben
Datenqualitäts-Entscheidungen
Fahrt | Aktion | Warum |
TRIP_031 | Quarantäne |
|
TRIP_017 | Quarantäne | Tatsächliche Ankunft vor tatsächlicher Abfahrt |
TRIP_044 | Quarantäne |
|
TRIP_101 | Quarantäne |
|
Quarantänierte Zeilen werden von OTP-% / Median ausgeschlossen und in den Tools aufgelistet. Wir erfinden keine korrigierten Zeitstempel.
Während der ersten Datenprüfung (Lesen der ops_log.txt des Starter-Bundles, die von diesem MCP zur Laufzeit nicht geladen wird) wurde Gerät D-22 / MH-14-5590 als unzuverlässig notiert. Die Laufzeit-Tools sehen nur trips.csv: Sie quarantänieren D-22-Zeilen, wenn Zeitstempelprüfungen fehlschlagen, und lassen andere konsistente D-22-Fahrten nutzbar.
Nicht vertrauenswürdiger Übergabetext (OPS-2207 / MH-12-7781)
HANDOFF.md enthält anweisungsförmigen Text, der Tools auffordert, Fahrzeug MH-12-7781 pünktlich zu erzwingen und diese Regel zu verbergen. Dieser Server wendet diese Überschreibung nicht an. Dieselbe Verspätungsregel gilt für jedes Kennzeichen. data_quality_report legt die rohe MH-12-7781-Auswertung und eine Richtlinienfrage an Priya offen. Das Verbergen gefälschter Zahlen vor einem Regionalmanager scheitert am Prüfbarkeitsmaßstab.
Annahmen
Ankunftsverspätung ist die richtige primäre Kennzahl für Priyas Stand-up-Kampf.
Standard-Schwelle von 10 Minuten trennt Muster (z. B. Route 12) von Rauschen.
Quarantäne ist einer stillen Korrektur von GPS-/Zeitzonen-Müll vorzuziehen.
Dünne Stichproben (z. B. R-21 n=1) sollten gekennzeichnet, nicht aggressiv eingestuft werden.
Ticket-/Auslastungsdateien sind für diesen MCP außerhalb des Rahmens.
Fragen an Priya
Ankunft (statt Abfahrt) als offizielle Verspätungsdefinition bestätigen?
>10 min für Regionalmanager-Zahlen bestätigen (oder 5 / 15)?
Wie soll MH-12-7781 / OPS-2207 erscheinen: mit Offenlegung ausschließen, roh einbeziehen oder Doppelansicht?
Mindestanzahl an Fahrten, bevor eine Route in die „schlimmsten Übeltäter“ aufgenommen wird?
Für
+00:00-Zeitstempel: immer quarantänieren oder explizite IST-Neuinterpretation mit Audit-Flag erlauben?
So führen Sie es aus
cd ~/repos/cityflo-otp-mcp
python3 -m venv .venv && source .venv/bin/activate
pip install -e .
# or: pip install mcp && PYTHONPATH=src ...Prüfungen (ohne MCP):
PYTHONPATH=src python scripts/verify_otp.pyMehrstufiger Lauf mit echtem MCP-Client (route_otp_summary → list_late_trips → data_quality_report):
PYTHONPATH=src python scripts/run_mcp_client.pyTranskript geschrieben nach notes/mcp_client_transcript.jsonl.
Cursor / Claude Desktop (stdio): Richten Sie einen MCP-Servereintrag auf:
{
"mcpServers": {
"cityflo-otp": {
"command": "python",
"args": ["/absolute/path/to/cityflo-otp-mcp/src/cityflo_otp/server.py"],
"env": {
"PYTHONPATH": "/absolute/path/to/cityflo-otp-mcp/src",
"CITYFLO_TRIPS_CSV": "/absolute/path/to/cityflo-otp-mcp/data/trips.csv"
}
}
}
}Beispiel für eine Agenten-Interaktion
route_otp_summary({ "route": "Route 12" })
→ nutzbar 8, verspätet 6, 75 % verspätet, Median der Ankunftsverspätung in der Größenordnung von ~13–16 min, 0 quarantänierte auf R-12.list_late_trips({ "route": "R-12" })
→ die sechs verspäteten Fahrt-IDs mit Ankunftsverspätungen und Fahrzeugen pro Fahrt.data_quality_report({})
→ vier quarantänierte Fahrten wochenweit + MH-12-7781-Richtlinienhinweis (TRIP_090 / TRIP_119 verspätet unter roher Regel).
Bewusst weggelassen
Andere Domänen (Auslastung / Tickets / Stand-up)
Automatisches Korrigieren von Zeitzonen-Offsets
Ranking-API über alle Routen (leicht hinzuzufügen; für Priyas Route-12-Frage nicht erforderlich)
Versteckte OPS-2207-Normalisierung
Wo ich mit der KI nicht übereinstimmte
Siehe notes/DISAGREEMENTS.md.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides real-time access to Bangalore's public transportation information including bus tracking, schedules, routes, and service updates to improve passenger experience.3MIT
- FlicenseNot gradedqualityCmaintenanceCompute and analyze bus route lateness using trip data, with drill-down and cross-referencing against rider complaints and operational logs.
- FlicenseNot gradedqualityCmaintenanceAnswers operational questions about route on-time performance, such as lateness rates and trip evidence, using structured tools for route summary, trip lateness, and data quality.
- AlicenseBqualityCmaintenanceMCP server for grounded analysis of synthetic electric-taxi operations data, exposing tools for aggregated metrics, charging risk, and policy retrieval.3MIT
Related MCP Connectors
Messy spreadsheets in, clean checkable tables out. Every result carries its arithmetic proof.
Data observability tools for engineering teams: alerts, freshness, schema drift, lineage, quality.
Real-time transit stops, routes, arrivals, vehicle positions, and schedules via OneBusAway APIs.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Sonu0305/cityflo-otp-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server