Tutu MCP
Dorthin, wo nicht gesucht wird
Wir stellen eine Reise mit Umstieg zusammen, wenn es kein direktes Ticket gibt.
Die Suche eines beliebigen Dienstes beantwortet die Frage „Gibt es ein Ticket von A nach B?“. Wenn es keine direkte Verbindung gibt, ist die Ausgabe leer – und der Nutzer geht. Dabei kann man hinkommen, und beide benötigten Tickets werden dort ebenfalls verkauft.
Lebendiges Beispiel. Die Anfrage „Moskau → Uglitsch“ vom 20. August 2026 im MCP Tutu:
search_multitransport → 0 вариантов
search_bus → 0 вариантов
search_rail → 0 вариантовUnsere Antwort auf dieselbe Anfrage:
Москва → Ярославль автобус 09:00 → 13:00 863 ₽
пересадка в Ярославле — 40 минут
Ярославль → Углич автобус 13:40 → 16:25 616 ₽
итого 1 479 ₽, на месте в 16:25Beide Tickets verkauft Tutu. Deren Suche wird diese Route nie anzeigen.
So funktioniert es
запрос «Москва → Плёс»
↓
MCP Туту: прямой поиск → 0 вариантов, регион «Ивановская область»
↓
узлы-кандидаты: справочник «регион → центр» + предложения агента
↓
для каждого узла: сначала плечо «узел → цель», затем «откуда → узел»
↓
код сводит стыковки: отбрасывает рейсы, на которые не успеть, считает запас и сумму
↓
карточки маршрутовDie Suche steuert ein Agent: Er entscheidet selbst, welche Städte und Daten er prüft, und der Nutzer sieht seine Arbeit als Verlauf auf dem Bildschirm. Aber Umstiege, Preise und Ranking berechnet der Code – das Modell wird nicht an die Arithmetik gelassen, genau dort machen Agenten Fehler. Schwere Antworten von Tutu gehen nicht durch das Modell: Es erhält Identifikatoren der gefundenen Streckenabschnitte und kurze Zusammenfassungen, während die vollständigen Daten direkt in die Oberfläche gehen.
Wenn man am gewählten Tag nicht abreisen kann, schickt das Backend den Agenten zusätzlich nach Hotels: Es wird der nächstgelegene Abreisetag gesucht und eine Unterkunft für genau so viele Nächte ausgewählt, wie man warten muss.
Wenn der Agent nicht verfügbar ist oder an ein Limit stößt, wechselt die Oberfläche stillschweigend auf die deterministische Suche – der Bildschirm zeigt in jedem Fall ein Ergebnis.
Related MCP server: mcp-sbb-transport
Start
npm install
cp .env.example .env # вписать OPENROUTER_API_KEY (необязательно)
npm run db:up # Postgres в Docker
npm run migrate # схема базы
npm run warm # прогрев кэша реальными ответами Туту
npm run dev # http://localhost:3100OPENROUTER_API_KEY ist optional: Ohne ihn wird die Städte-Hinweisfunktion deaktiviert, die Suche arbeitet mit dem Regionenverzeichnis.
Befehle
Befehl | Funktion |
| Anwendung auf http://localhost:3100 |
| Routenzusammenstellung in der Konsole |
| Cache-Vorwärmung aus |
| Was sich gerade im Cache befindet |
| Prüfung der Live-Verbindung mit MCP Tutu |
| Postgres in Docker |
| Prisma-Migrationen |
| ESLint |
Struktur
Der gesamte Code liegt in src/, im Stammverzeichnis nur die Konfiguration. Die Oberfläche ist in einem Ordner zusammengefasst, die Logik ist nach Modulen aufgeteilt – nach Sinn, nicht nach Dateityp:
src/
app/ роутинг Next: страница и три API — тонкие, только вызовы модулей
api/agent/ агентный поиск потоком
api/route/ детерминированный поиск (страховка)
api/stay/ гостиницы
frontend/ всё, что видно в браузере
components/route/ форма, календарь, подсказки, лента, карточки, гостиницы
hooks/ чтение потока агента, определение города
design.ts палитра и подписи из макета
format.ts, geo.ts форматирование и расстояния
config.ts константы интерфейса
modules/ логика, зависимости однонаправленные: agent → routing → tutu
tutu/ клиент MCP, кэш, типы, прокси, снятые ответы (fixtures)
routing/ сборка маршрутов, справочники регионов и городов
agent/ цикл, инструменты, промпт, ошибки, ретраи, состояние
lib/ клиент PrismaWarum es innerhalb der Module keine Schichten domain/, infra/, api/ gibt. Eine solche Aufteilung ist bei Zehntausenden von Zeilen und anderthalb Dutzend Domänen gerechtfertigt. Hier gibt es ein einziges Szenario: Schichten würden Ordner mit je einer Datei und ein leeres contract/ ergeben. Wenn ein Modul tausend Zeilen überschreitet, entstehen sie rund um die vorhandenen Dateien.
Arbeit mit MCP Tutu
Verbindung: https://mcp.tutu.ru/mcp, streamable HTTP, keine Autorisierung erforderlich.
Zwei technische Entscheidungen, ohne die das nicht funktioniert:
Antworten wiegen ~26 KB. Die Tools sind so umhüllt, dass das vollständige JSON in die Oberfläche geht und als Karten gezeichnet wird, während an das Sprachmodell eine komprimierte Zusammenfassung über toModelOutput geht. Messung bei einer echten Suche: 26 305 → 1 971 Zeichen, Einsparung 93 %.
Der Server hat ein striktes Rate Limit. Etwa fünfzig aufeinanderfolgende Anfragen haben uns den Zugang zur gesamten Domäne auf TCP-Ebene für mehrere Stunden gesperrt. Deshalb: view: 'compact', Antwort-Cache in Postgres, nicht mehr als zwei Knoten pro Suche, und vor der Demo – Cache-Vorwärmung aus fixtures/ mit dem Befehl npm run warm. Wenn der Server nicht verfügbar ist, zeigt der Bildschirm das, was im Cache liegt, und stürzt nicht ab.
Stack
Next.js 16 (App Router) · TypeScript · @ai-sdk/mcp · Prisma 7 + Postgres 18 ·
Tailwind 4 + shadcn/ui · OpenRouter (optional)
Dokumente
SPECIFICATION.md— das Produkt als Ganzes: Problem, Belege, Technik, RegelwerkSCREEN-SPEC.md— Bildschirmspezifikation für das LayoutUSER-GUIDE.md— Benutzerhandbuchfixtures/README.md— was die gespeicherten Antworten sind und wozu sie dienen
This server cannot be installed
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 gradedqualityBmaintenanceEnables multi-modal travel planning for India, aggregating flights, trains, buses, cabs, and personal vehicles across 117 cities with multi-leg routing and weighted scoring.2Apache 2.0
- FlicenseNot gradedqualityDmaintenanceEnables querying Swiss public transport (trains, buses, trams, boats) for stations, connections, and station boards via the opendata.ch API.
- AlicenseNot gradedqualityBmaintenanceLive intercity bus-trip search across Ukraine and Europe — real-time prices, seats, carriers, cheapest-day-of-month calendar, and trip details with passenger discounts. Read-only, no API key; also available as a hosted remote endpoint at https://mcp.soloway.com.ua/mcp.MIT
- AlicenseNot gradedqualityCmaintenanceEnables real-time access to Boston MBTA transit data (subway, bus, commuter rail, etc.) via the MBTA v3 API.5MIT
Related MCP Connectors
Real-time transit stops, routes, arrivals, vehicle positions, and schedules via OneBusAway APIs.
Transitland MCP — global GTFS aggregator
Plan door-to-door trips across French trains, buses, transit and flights.
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/nyxandro/tutu-hackathon'
If you have feedback or need assistance with the MCP directory API, please join our Discord server