Tutu MCP
찾아지지 않는 곳으로
직행 티켓이 없을 때, 환승으로 여정을 조합합니다.
어떤 서비스의 검색도 "A에서 B로 가는 티켓이 있는가"라는 질문에 답합니다. 직행 연결편이 없으면 결과는 비어 있고 — 사용자는 떠나갑니다. 하지만 갈 수 있는 방법이 있고, 필요한 두 티켓 모두 같은 곳에서 판매되고 있습니다.
실제 사례. MCP Tutu에서 2026년 8월 20일 "모스크바 → 우글리치" 요청:
search_multitransport → 0 вариантов
search_bus → 0 вариантов
search_rail → 0 вариантов같은 요청에 대한 우리의 답변:
Москва → Ярославль автобус 09:00 → 13:00 863 ₽
пересадка в Ярославле — 40 минут
Ярославль → Углич автобус 13:40 → 16:25 616 ₽
итого 1 479 ₽, на месте в 16:25두 티켓 모두 Tutu가 판매합니다. 그들의 검색은 이 경로를 절대 보여주지 않습니다.
작동 방식
запрос «Москва → Плёс»
↓
MCP Туту: прямой поиск → 0 вариантов, регион «Ивановская область»
↓
узлы-кандидаты: справочник «регион → центр» + предложения агента
↓
для каждого узла: сначала плечо «узел → цель», затем «откуда → узел»
↓
код сводит стыковки: отбрасывает рейсы, на которые не успеть, считает запас и сумму
↓
карточки маршрутов검색은 에이전트가 제어합니다. 에이전트가 어떤 도시와 날짜를 확인할지 스스로 결정하고, 사용자는 화면의 피드로 그 작업 과정을 볼 수 있습니다. 하지만 환승, 가격, 순위는 코드가 계산합니다 — 모델은 산술에 접근할 수 없습니다. 바로 그 부분에서 에이전트가 실수하기 때문입니다. Tutu의 무거운 응답은 모델을 통과하지 않습니다. 모델은 찾은 구간의 식별자와 짧은 요약만 받고, 전체 데이터는 인터페이스로 직접 전달됩니다.
선택한 날짜에 출발할 수 없으면, 백엔드가 에이전트를 호텔 검색으로 보냅니다: 가장 가까운 출발일을 찾고, 기다려야 하는 밤 수만큼 정확히 숙박을 선택합니다.
에이전트를 사용할 수 없거나 한도에 도달하면, 인터페이스는 조용히 결정론적 검색으로 전환됩니다 — 화면은 어떤 경우에도 결과를 표시합니다.
Related MCP server: mcp-sbb-transport
실행
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는 선택 사항입니다. 없으면 도시 힌트가 비활성화되고,
검색은 지역 디렉토리로 작동합니다.
명령어
명령어 | 기능 |
| http://localhost:3100에서 애플리케이션 |
| 콘솔에서 경로 조합 |
|
|
| 현재 캐시에 있는 내용 |
| MCP Tutu와의 실시간 연결 확인 |
| Docker의 Postgres |
| Prisma 마이그레이션 |
| ESLint |
구조
모든 코드는 src/에 있고, 루트에는 설정만 있습니다. 인터페이스는 한 폴더로
구성되고, 로직은 파일 유형이 아닌 의미에 따라 모듈로 나뉩니다:
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/ клиент Prisma모듈 내부에 domain/, infra/, api/ 레이어가 없는 이유. 이러한 구분은
수만 줄의 코드와 15개 이상의 도메인에서 정당화됩니다. 여기에는 하나의 시나리오만
있습니다. 레이어를 만들면 파일 하나짜리 폴더와 빈 contract/가 생길 뿐입니다.
모듈이 천 줄을 넘어서면 기존 파일 주위에 레이어가 생길 것입니다.
MCP Tutu 작업
연결: https://mcp.tutu.ru/mcp, streamable HTTP, 인증 불필요.
이것 없이는 작동하지 않는 두 가지 엔지니어링 결정:
응답 크기가 약 26KB입니다. 도구는 전체 JSON이 인터페이스로 전달되어 카드로
그려지고, 언어 모델에는 toModelOutput을 통한 압축 요약만 전달되도록 래핑되어
있습니다. 실제 검색 측정: 26,305 → 1,971자, 93% 절약.
서버에 엄격한 rate limit이 있습니다. 약 50개의 연속 요청으로 TCP 수준에서
몇 시간 동안 전체 도메인에 대한 접근이 차단되었습니다. 따라서: view: 'compact',
Postgres의 응답 캐시, 검색당 최대 2개 노드, 데모 전에는 npm run warm 명령으로
fixtures/에서 캐시를 예열합니다. 서버를 사용할 수 없으면 화면은 캐시에 있는
내용을 표시하고 충돌하지 않습니다.
스택
Next.js 16 (App Router) · TypeScript · @ai-sdk/mcp · Prisma 7 + Postgres 18 ·
Tailwind 4 + shadcn/ui · OpenRouter (선택 사항)
문서
SPECIFICATION.md— 제품 전체: 문제, 증거, 기술, 규정SCREEN-SPEC.md— 퍼블리싱을 위한 화면 사양USER-GUIDE.md— 사용자 가이드fixtures/README.md— 저장된 응답이 무엇이고 왜 필요한지
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