tutu-mcp-proxy
tutu-mcp-proxy
Compacting/Grounding-MCP-Proxy vor mcp.tutu.ru, gebaut für den Tutu-Hackathon (Track 2 – „Tool-Optimierung“). Dieselben 16 Tools, dasselbe Verhalten, plus:
Reduzierter, immer geladener Katalog.
tools/listdes echten Servers umfasst ~108 KB noch vor der ersten Suche (uv run python tutu.py measure, reproduzierbar ausfixtures/). Die drei schwersten Tools (search_rail,get_rail_seatmap,search_hotels) erhalten eine kurze top-leveldescription; der abgeschnittene Text geht nicht verloren, sondern wandert in das Aufrufergebnis des zugehörigenget_<domain>_instructions(tutu_mcp/proxy/compact_tools.py) – bezahlt wird er nur von der Session, die ihn wirklich liest.inputSchemableibt überall unangetastet.check_groundedness. Vergleicht den Antwortentwurf deterministisch mit dentool_result-Werten, auf die er sich stützt – zieht aus dem Text Preise/Zeiten/Zug-und-Flugnummern/Links heraus und prüft deren tatsächliches Vorhandensein im JSON, ohne LLM-Richter (tutu_mcp/groundedness.py).Erklärung bei leerer Ausgabe. Häufigster Fehler: Ein Agent liest eine leere gefilterte Suche als „diesen fährt nicht“, obwohl das Werkzeug nur das zurückgab, was im Verkauf ist. Die Zähler von Tutu selbst –
meta.post_filter_dropped_*– zeigen, welcher Filter die Liste geleert hat: Der Proxy wandelt sie in einen Satz um und legt ihn dem Ergebnis bei (_empty_result_note), sodass der Agent eine Tatsache nennt, statt einer Vermutung über einen Fahrplan, den man ihm nicht übermittelt hat (tutu_mcp/proxy/empty_results.py).Premise-Gate +
assess_request.check_groundednessprüft den AUSGANG des Schritts, dies prüpt der AG: Ein die Suche einschränkendes Wert muss von den Angaben oder aus einem früherentool_resultstammen. Ein vom Agenten ausgedachter Filter (Klassiker: stillschweigend die Endzeit eines Ereignisses annehmen und damit Rückflüge herausfiltern) erhältclarification_requiredstatt Daten (tutu_mcp/premises.py).Mock-Ansatz. Antwortet mit aufgezeichneten Fixtures statt mit dem Live-Server – er lässt sich beliebig oft ausführen, ohne das gemeinsame Rate-Limit des Hackathons zu berühren.
Trace-Viewer
Jeder Eval-Lauf wird eine einzige eigenständige HTML-Datei: Doppelklick, ohne Server und ohne Netz. Die veröffentlichte Galerie: https://trum-ok.github.io/tutu-mcp-hackathon/trace-viewer.html.

make viewer # из последнего настоящего прогона эвалов
make viewer-demo # из рукописных демо-трейсов — без модели и без ключаIm Interface: Modus Übersicht – die ganze Matrix aus Szenarien × Optionen in einer Tabelle; Nur Fehler grenzt die Liste auf Fehlgeschlagene ein; Seite an Seite platziert ein Szenario aus beiden Varianten aneinander, mit hervorgehobenen Abweichungen in den Prüfungen. Ein Klick auf einen hervorgehobenen Wert in der Antwort öffnet einen Dialog mit dem genauen Fragment der Server-Antwort, aus dem er stammt – oder mit der direkten Genussangabe, dass er in keiner von ihnen vorkommt. Syn hetische Läufe (demo:/scripted:) sind mit einem Bernstein-Badge „NICHT GEMESSEN“ markiert – man soll eine handgeschriebene Demonstration nicht mit einer Messung verwechseln.
Wie er gebaut wird – docs/deploy.md.
Related MCP server: Yourttoo MCP Server
Was herausgekommen ist
Vier Läufen mit je 22 Szenarien auf gpt-5.6-luna mit --effort low, 19. August 2026. Der Unterschied zwischen den Läufen ist die reine Modell variante: Das Backend ist identisch, die Szenarienliste ebenfalls.
Metrik | baseline | proxy |
Tool-Oberfläche, Tokens | 25 269 | 15 364 |
Dasselbe, Bytes | 115 329 | 74 971 |
Tastenerfolg | 17–18 / 22 | 19–21 / 22 |
Fundiertheit der Aussagen | 97–98 % | 99 % |
Erfundene Aussagen pro Laufen | 4 | 1 |
Eingabetoken pro Lauf | 3.3–4.4 млн / | на 0,43–0,67 lb. в meiner |
Premise-Gate ausgelöst | 0 | 8–12 |
Überflüssige Rückfragen | 0 | 0 |
Zu der Zeile mit den erfundenen Behauptungen gehört der Prozentwert: 4 hinein aus 189 geprüften Aussagen gegenüber 1 aus 184 – das macht 97,9 % gegen 99,5 %, die Differenz wirkt wie Rauschen. In Absoluten sind das viermal weniger falsche Fakten, die zum Benutzer gelangen; der Benutzer bekommt ja die Fakten, nicht den Prozent – aber benutzer# bemessen. The ProzentSearch is der Anteil der prüfungsaussagen: einen vom Benutzer selbst genannten Schwellenwert („günstiger als 3000 ₽“) ist die Payload auszudrücken und kommt nicht in the Nenner.
The preisliche „Oberfläche“ – 39 %, und sie hängt vom Lauf nicht ab: Es ist ein statischer Wert, den der Agent mancher Session vor dem ersten Search bezahlt. Alles andere ist das Verhalten des Modells, deshalb wird ein Bereich angegeben.
Die letzte Zeile ist nicht weniger wichtig als die erste: Premise-Gate scheint 8–12 Mal pro Lauf aus und hat dabei kein einziges fragte in Scenario, wo es keinen Grund zum Fragen gab (Negativkontrolle no_overask plus Prüfung did_not_over_ask). A mechanism that put“ such Rückfragen hätte specrmelid ideal premis-metriken und das Produkt versaut.
Die Varianten weichen in fünf Zent ab, and die gewinnt den Proxy: Die leere gefilterte Ausgabe wird nicht als „der Zug fährt nicht“ gelesen, den Tippfehler bei den Wochentagen fällt vor der Suche auf, die stillschweigend eingefügte Personenanzahl wird vom Gate gestoppt, und die Plätze neben eich werden mit dem richtigen tool gesucht. Den einzigen ständigen Fehlschlag des Proxys – multitransport_basic: Der Agent beziffert die Preisdifferenz (2 275,07 − 1 700 = 575), davon beides halft getrennt bestätigt, das Zahl selbst fehlt im Payload. Durch so eine Arithmetik mit einer falschen unterscheidlich erkennen (den Stunt mit der Nacht multiplizieren – ein separates Szenario, und gilt als Fehler) ist nicht unmöglich, deterministisch zu prüfen; das ist die Grenze der Methodik, nicht ein Fehler vom Proxy.
Zwei Dinge fürdie Ehrlichkeit des Berichts: Fixture-Aussetzer werden getrennt von Tool-Fehlern gezählt – eine Lücke in der Aufzeichnung duer kein Fehler von dowtet werden; undTokenzahlen sind ~ markiert, wenn es eine Schätzung ist – OpenAI hat keinen Token-Zähl-Endpunkt, der genaue Werte stammt from einer echten Testanfrage (usage.prompt_tokens), --estimate-tokens setzt dafür die tiktoken-Offline-Schätzung ein.
Modelof the Resistance-Effort gelten pro Lauf (--model/OPENAI_MODEL, --effort/OPENAI_EFFORT);ohne beide das reasoning Over-Feld, das das Model nicht send has keine Reasoning-Art / AOR aender from Schulzwert, dies ist nicht dasselbe wie explizite --effort none. Der Runner trifft standardmäßig auf /v1/responses – Chat Completions verwenden bei aktuellen Reasoning-Modellen Function Tools nicht zusammen mit Reasoning? – so, --api chat ist für OpenAI-konforme Gate ohne /v1/responses. Fixture-Vergleich für Werte: Arbeitsgruppe is missing in Standard F, we Schema benutzen oft, calculate the writes page: 1, sort: "priceasc" u.s.w. an places, Menschen erfassen sie nicht; andernfalls würde ein Vielfaches mit Fit hätte dies zum fixture.
Wie genau die Evaluation gestrickt ist, was passiert sind., was considered Metrik isst und why the self-test of the harness in CI steh seit – docs/evals.md.
Schnellstart
Mann braucht uv und Python ≥ 3.13 (ein Riß mit uv sync on.).
git clone https://github.com/Trum-ok/tutu-mcp-hackathon
cd tutu-mcp-hackathon
uv sync
uv run python tutu.py serve # mock-режим (по умолчанию) — http://127.0.0.1:8800/mcpTUTU_PROXY_MODE=live uv run python tutu.py serve # проксирует настоящий mcp.tutu.ruEin beliebiger MCP-Client – über http://127.0.0.1:8800/mcp (Streamable HTTP, ohne Autorisierung, wie beim Upstream). Einige Wörter <URL> – das ist diese Adresse oder die Adresse des Deployten Proxy (siehe docs/deploy.md).
claude mcp add --transport http tutu <URL> # Claude Code// Cursor · ~/.cursor/mcp.json
{ "mcpServers": { "tutu": { "url": "<URL>" } } }
// Claude Desktop · claude_desktop_config.json — через mcp-remote, он не умеет HTTP напрямую
{ "mcpServers": { "tutu": { "command": "npx", "args": ["-y", "mcp-remote", "<URL>"] } } }Was sollte sein. Der Niederlage stehen zwei Zeilen: Modus und die Abplik. Der Client zeigt nach dem Verbinden 18 Tools: 16 native Tools aus Tutu sowie assess_request und check_groundedness. Sind es nur 16, hat sich der Client mit Tutu selbst verbunden, nicht mit dem Proxy.
Wie viel konnte abgeschnitten werden
tools/list: 110 164 → 79 411 Bytes (−27,9 %), und mit initialize-Instruktionen auf meiden Seiten −33,1 % (der Proxy liefert einen eigenen Anweisungsblock von 1,9 KB statt 11,2 KB von Tutu). Beide Zahlen sind bereits unter Einbeziehung der zwei eigenen Tools (assess_request 1300 Bytes, check_groundedness 1100 Bytes).“
Die Aufschl prism Katalog-Schichten, den genoppe prize der Kompression und die Grenze, die man bewusst nicht geht – docs/compaction.md.
Dokumentation
Eine ausführlicheDokumentation finden Sie auf einer separaten Seite: make docs baut site/index.html oder öffnen Sie die bereits veröffentlichte: https://trum-ok.github.io/ttu-mcp-hackathon/.
Datei | Inhalt |
Rohmessungen des Live-Servers und die Case-Study motivieren | |
Was genau wird gepresst, was es kostet und was nicht gemacht wurde | |
Aufbau der Eval-Harness, Fixture, Moment einer | |
Repo-Struktur und Dependency-Richtung | |
environmental variables und alle make-Settings | |
Docker, Render, GitHub Pagesel, Buil (both sides) aus |
Team rezo
Artamonow Arkadi (@OpSonata)
Lizenz
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 gradedqualityDmaintenanceMCP server for Expedia travel recommendations. Enables LLMs to search hotels, flights, activities, and car rentals using natural language.21Apache 2.0
- FlicenseNot gradedqualityDmaintenanceMCP server for travel program search, comparison, and booking via Yourttoo API, optimized for LLMs with token-saving responses.
- FlicenseNot gradedqualityCmaintenanceProvides MCP tool endpoints for hotel and flight actions to support multi-agent travel planning.
- FlicenseNot gradedqualityCmaintenanceExposes travel planning data and constraint checking as MCP tools over stdio, enabling AI agents to query reference information and evaluate plan validity.
Related MCP Connectors
TravelMind: 8 MCP tools for travel (12306 trains, flights, hotels, geocode, planning, policy).
AI marketplace — flights, tours, activities, transport & more via MCP. No auth required.
Geo-based flight search MCP server. Find more flights between any two places on earth
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/Trum-ok/tutu-mcp-hackathon'
If you have feedback or need assistance with the MCP directory API, please join our Discord server