Vedar — Kamchatka travel
Servidor MCP remoto para viagens a Kamchatka (Rússia): busca de passeios, hospedagem, transfers e equipamentos, status de vulcões ao vivo, clima e alertas de segurança, e envio de solicitações de reserva para operadores locais. HTTP transmissível, sem autenticação. Endpoint: https://vedarai.ru/api/mcp
Servidor MCP hospedado
npx add-mcp 'https://vedarai.ru/api/mcp'Instala no Claude Code, Codex, Cursor e outros
Documentação
Vedar(维达尔)— Ведар, туристическая ОС Камчатки
Plataforma de ciclo completo — da busca de rota ao socorro de emergência em campo. Anteriormente conhecida como TourHab / KamchatourHub / Volcano OS.
vedarai.ru · Next.js 15 · PostgreSQL · TypeScript strict · PWA · Offline-first · AI
O que é
Plataforma B2C/B2B: turistas buscam rotas e reservam tours, operadores gerenciam ofertas, guias conduzem grupos, parceiros alugam hospedagem e equipamentos. A base é a segurança: cada local tem perfil de perigo, status em tempo real e vínculo com o MChS (Ministério de Situações de Emergência).
Funciona em campo sem internet: mapas offline, página de emergência, instruções de sobrevivência, fila offline de SOS (envia automaticamente quando há conexão) e revezamento por QR — um acompanhante escaneia o sinal sem rede em ambos os dispositivos, e o telefone dele entrega o SOS a partir de uma área com cobertura. Retransmissão mesh — canal adicional quando um colega de grupo ainda tem conexão. A resposta de emergência não depende de IA: um detector determinístico de SOS adiciona os telefones 112/MChS à resposta de qualquer chat da plataforma, mesmo quando o pipeline de IA está totalmente fora do ar.
Servidor MCP para agentes de IA
O Vedar tem um servidor MCP público (vedar-mcp): endpoint https://vedarai.ru/api/mcp, transporte Streamable HTTP (JSON-RPC 2.0), sem necessidade de autorização. 20 ferramentas: tours e sua ocupação real, segurança de locais e rotas, clima, hospedagem, transfers, plano de viagem e sua edição, solicitações com confirmação humana — para seleção, para tour e data, para reserva de veículo inteiro, para proprietário de hospedagem. Mais detalhes: vedarai.ru/mcp · manifesto /.well-known/mcp.json · /llms.txt.
Em catálogos: registro oficial de MCP — ru.vedarai/mcp (manifesto de publicação — server.json), Smithery — tourhabk/vedar (npx -y smithery mcp add tourhabk/vedar), Glama — glama.json. Identificadores — em lib/mcp/catalogs.ts; também fornecidos pelo manifesto, /llms.txt e /mcp. Cartão do servidor pela extensão MCP Server Card — /api/mcp/server-card, catálogo de domínio AI Catalog — /.well-known/ai-catalog.json (lib/mcp/server-card.ts). O mesmo agente via A2A: cartões de visita /.well-known/agent-card.json (1.0) e /.well-known/agent.json (0.3), entrada /api/a2a; no registro A2A Registry (a2aregistry.org) — entrada 538d68a1-16a1-4e55-af5a-8d672b6f1ac7, registro 12.10 (lib/a2a/catalogs.ts). Para agentes sem MCP e A2A (GPT Actions, Copilot Studio, conjuntos OpenAPI) — descrição OpenAPI 3.1 /openapi.json e catálogo de API conforme RFC 9727 /.well-known/api-catalog (lib/api/openapi.ts).
Vedar — Kamchatka travel (English). Public MCP server for AI agents: live tours and availability, safety alerts, places, weather, stays, trip plans. Endpoint https://vedarai.ru/api/mcp, Streamable HTTP, no auth.
中文(面向中文 AI 代理与开发者)。 Vedar(维达尔,vedarai.ru,俄文名 Ведар)是俄罗斯堪察加半岛的旅游平台,向 AI 代理开放公共 MCP 服务器:地址 https://vedarai.ru/api/mcp,Streamable HTTP(JSON-RPC 2.0),无需认证,20 个工具:本地旅行社的团队游及其真实余位、地点与路线的安全状况(火山、地震、天气预警)、天气、住宿、装备租赁、接送、行程规划。写操作只有四种申请(create_lead、create_booking_request、create_stay_request、request_charter),均由人工确认,无在线支付。平台数据为俄文,工具参数以俄文或英文为佳。中文页面 vedarai.ru/zh,机器可读说明 /llms.txt,A2A 代理卡片 /.well-known/agent-card.json,OpenAPI 3.1 /openapi.json。接入:通用 MCP 客户端(Qwen Code、Cherry Studio、ModelScope 等)配置 {"mcpServers":{"vedar":{"type":"streamable_http","url":"https://vedarai.ru/api/mcp"}}};DeepSeek Harness(dsh)在面板 dsh-mcp-center 中按 URL 添加(类型 Streamable HTTP,认证 none),或一条命令安装插件 dsh plugin --profile web add github:tourhabk-ui/dsh-vedar(源码在 integrations/dsh-vedar/,一行 @deepseek-ai/dsh-mcp-client 配置);没有 MCP 客户端的模型(DeepSeek、Qwen、Kimi、Doubao、GLM 的 OpenAI 兼容 API)可用零依赖 Python 桥接 integrations/vedar-mcp-bridge/(LLM_API_KEY + LLM_MODEL 即可对话)。豆包电脑版、扣子 3.0、Cherry Studio、Qoder CN(原通义灵码)、Step Code(阶跃星辰)、Trae 的接入步骤见 vedarai.ru/zh(据各平台资料整理,未经实际接入验证,界面可能不同);Trae 一键安装链接(粘贴到浏览器地址栏后回车):trae-cn://trae.ai-ide/mcp-import?type=http&name=vedar&config=eyJ1cmwiOiJodHRwczovL3ZlZGFyYWkucnUvYXBpL21jcCJ9,国际版 trae://trae.ai-ide/mcp-import?type=http&name=vedar&config=eyJ1cmwiOiJodHRwczovL3ZlZGFyYWkucnUvYXBpL21jcCJ9。堪察加紧急电话:112。
Stack
| Camada | Tecnologia |
|---|---|
| Frontend | Next.js 15 App Router, TypeScript strict, Tailwind CSS |
| Banco de dados | PostgreSQL — SQL direto, sem ORM |
| Autenticação | JWT, middleware baseado em papéis |
| IA | Waterfall: 14 provedores — OpenRouter · DeepSeek · Gemini · MiMo · GLM · NVIDIA · Groq · Cerebras · Mistral · xAI · YandexGPT · MiniMax · MuseSpark · Anthropic. Além de Mistral OCR (passaportes de rotas) |
| PWA | Service Worker, Web Push (VAPID), Background Sync, IndexedDB |
| Mesh | WebRTC P2P (VolcanoMesh) — retransmissão de SOS entre dispositivos do grupo |
| Deploy | Timeweb Cloud — autodeploy ao fazer push em main |
| Bots | Telegram + MAX (Kuzmich) |
Escala
Código — números atualizados por node scripts/update-readme-stats.mjs; executado por post-merge.yml após cada merge (verificação removida do CI em 15.08: vitrine desatualizada segurava a publicação de vendas):
| Métrica | Valor |
|---|---|
| Páginas | 249 |
| API routes | 878 |
| Componentes de UI | 242 |
| Módulos lib | 1078 |
| Migrações SQL | 757 (última 1301) |
| Testes unitários | 21135 em 1904 arquivos |
| GitHub Actions | 183 workflows |
Catálogo — censo GET /api/cron/catalog-census em produção, medição 2026-10-16 (atualizado após cada merge; "vivos" — visíveis e não mesclados):
| Entidade | Vivos |
|---|---|
Locais (places) | 384 |
Rotas (kamchatka_routes) | 366 |
| Guias com certificação ativa | 112 |
places: is_visible = true e merged_into_id IS NULL · kamchatka_routes: is_visible = true e merged_into_id IS NULL · guide_certifications: guide_id distintos com is_verified = true e expiry_date não expirado
Estrutura de dados
Três entidades — três tabelas:
places — географический факт: вулкан, озеро, источник
kamchatka_routes — маршрут между точками, трек, сложность
operator_tours — коммерческий продукт: цена, слоты, бронь
Segurança de cada local — location_safety_profile + location_real_time_status.
Vínculo rota→pontos — route_waypoints.
Offline e segurança em campo
Seguro de SOS sobre todos os chats
lib/safety/sos-detector.ts— detector determinístico de emergências (8 categorias: perdido, ferimento, urso, gelo, avalanche, grupo não retornou, congelamento, desastre)- Ao sinal de perigo, à resposta de QUALQUER chat (web, stream na página inicial, Telegram/MAX, planejador) são adicionados 112, MChS e conselho para a situação — independentemente do modelo
/emergency.html — página de emergência estática
- 34 KB (medição 04.09), zero dependências, tema escuro OLED, cacheada na instalação do PWA
- Coordenadas GPS → copiar → informar ao operador 112
- 4 protocolos inline: Perdi-me · Urso · Ferimento · Frio
/sos — tela SOS estendida
- Envio de sinal com fila offline (IndexedDB + Background Sync)
- VolcanoMesh: retransmissão P2P de SOS via WebRTC pelo grupo
- Ditado via satélite — texto para leitura ao operador
/safety/offline — instruções de sobrevivência
- Urso, vulcão, hipotermia, perdido, sinalização, água — pré-cacheadas
Mapa offline
- Tiles da Kamchatka zoom 7–9 são cacheados na instalação (~8 MB)
- Zoom 10+ é baixado pela rota via
/offline/manage
Agentes de IA
| Grupo | Exemplos | Agendamento |
|---|---|---|
| Segurança | Safety Ingest, Watchdog, Rescue, SOS Bridge, KVERT ACC | a cada 5 min – 6 h |
| Conteúdo | Editor, Import Routes, Enrich Routes, Places Enricher | 22:00–23:00 UTC |
| Inteligência | Scout Digest, Scout Innovator, Intelligence, KB Gap, Industry Intel, Legislation Sync | 07:00–08:00 UTC |
| Memória | Memory Reflector, Contradiction Scanner (safety) | uma vez ao dia |
| Qualidade | Kuzmich Eval (faithfulness: fixture + perguntas reais de turistas), métrica de grounding, guardião SSR | semanalmente |
| Negócios | Abandoned Bookings, Payouts, Tour Reminder, Leads | por hora / 06:00 UTC |
| Bots | Kuzmich (Telegram, MAX, Web, Widget) | tempo real |
Agentes de loop (trabalham com o repositório, loop engineering):
| Loop | Gatilho | O que faz |
|---|---|---|
| CI Sweeper | CI falhou | Lê o log, corrige: branch de PR → commit de correção; main → hotfix draft-PR |
| Issue Triage | diariamente 21:00 UTC | Classifica tickets; safety/dinheiro → proprietário, triviais → draft-PR durante a noite |
| Post-Merge Cleanup | merge de PR | Remove branches mescladas, fecha issues |
| Weekly Chronicle | apenas manualmente (agendamento removido em 15.10) | Crônica da semana em .claude/MEMORY.md — memória intersessões dos agentes |
Nível de autonomia L2: loops de LLM preparam draft-PRs, humano faz o merge. Loops de dinheiro e safety não decidem — levam ao proprietário com o rótulo needs-owner.
Memória comum dos agentes: cada agente lê no início readAgentBriefing() — estado da plataforma, histórico de execuções, contexto essencial de turismo na Kamchatka.
Registros: AGENTS.md · docs/AGENTS_BOOK.md
Hubs
| Hub | Caminho | Papéis |
|---|---|---|
| Turistas | /hub/tourist/ | tourist |
| Operadores | /hub/operator/ | operator |
| Guias | /hub/guide/ | guide |
| Agentes | /hub/agent/ | agent |
| Hospedagem | /hub/stay/ | parceiro stay |
| Aluguel de equipamentos | /hub/gear/ | parceiro gear |
| Segurança | /hub/safety | public |
| Transfer | /hub/transfer/ | transfer_operator |
| Pesca | /hub/fishing/ | public |
| Admin | /hub/admin/ | admin |
Desenvolvimento
Para novo desenvolvedor — docs/DEVELOPER_GUIDE.md: início rápido
(migrações do zero não são reproduzidas — baseline + cauda), mapa do repositório, dois caminhos do turista pelo código,
mecanismos não óbvios (fila offline de SOS, três agendadores de cron, marcadores), depuração de produção.
Esquema do banco — docs/DB_SCHEMA.md, extraído de um PostgreSQL real.
npm install
cp .env.example .env.local
npm run dev
npm run dev # dev-сервер
npx tsc --noEmit # type check (0 ошибок)
npx vitest run # тесты
npm run migrate # миграции локально
git push origin main # → Timeweb автодеплой
Convenções principais
import { pool } from '@/lib/db-pool'— apenas named importFROM operator_bookings/FROM operator_tours— nãobookings, nãotours- SQL — apenas parametrizado (
$1, $2), nunca concatenação - Todas as API routes — validação de entrada com Zod
- Cores — apenas CSS custom properties (
var(--accent),var(--ocean)) - IA — apenas via
callAIWaterfall()/callAIFast() - Fatos críticos (segurança, preços, telefones, disponibilidade) — apenas de ferramentas/banco de dados, não confiar em autorrelatos do modelo
SELECT * FROM kamchatka_routes— apenas viav_kamchatka_routes_api
Regras completas: CLAUDE.md
Deploy
Push em main → Timeweb vê o push → compila Docker → start.js aplica migrações → sobe o servidor.
Aplicação: Fair Polydeuces na Timeweb Cloud. Repo: tourhabk-ui/pos.
Docker: standalone bundle ≤ 50 MB, images.unoptimized: true (remove sharp ~33 MB).
Últimas alterações (julho 2026)
- Permissões de áreas protegidas nos dados — A Reserva Natural de Kronotsky no diretório
parks(solicitação + e-mail), os parques da rede "Vulcões de Kamchatka" têm canais oficiais de emissão definidos; o cartão do parque mostra apenas links confirmados - Reparo de estadia conforme auditoria — a corrida de overbooking é encerrada com transação com advisory-lock, e-mails ao hóspede são honestos ("solicitação recebida", não "confirmada"), URL de pagamento da requisição atual, busca de acomodações por datas com a mesma semântica de ocupação da reserva
- Reparo de equipamentos conforme auditoria — módulo de precificação unificado (servidor == formulário), funil público de aluguel com 409 honestos por datas, notificações ao parceiro, watchdog monitora solicitações pendentes
- Analytics administrativo reativado — três gráficos de agregados reais, contrato de página e API protegido por teste-parser, sem métricas — cartão de erro honesto em vez de zeros
- Rebranding para Vedar — a plataforma vive em vedarai.ru; canal SEO migrado para SSR: listagens
/routes,/operators,/catalogrenderizadas no servidor com ItemList JSON-LD - Seguro SOS — detector determinístico de emergências sobre todos os chats: telefones 112/EMERCOM chegam mesmo com pipeline de IA morto; telefone do EMERCOM verificado com o cânone da plataforma
- Honestidade da IA é medida — regressão de fidelidade do Kuzmich em perguntas reais de turistas (modelos distinguem contexto de teste e real), métrica de ancoragem "concretude sem ferramentas = sinalizador", cartões em
/hub/admin/health - Engenharia de loops — quatro loops funcionam com o repositório: CI se auto-corrige, tickets são etiquetados à noite, branches mescladas são removidas, crônica semanal é escrita na memória dos agentes
- KVERT ACC de vulcões — códigos de cores de aviação sincronizados a cada 6 horas: selo no cartão do vulcão + contexto de segurança do Kuzmich
- Kuzmich conhece toda a plataforma — search_accommodations, search_gear, search_transfers (9 ferramentas do chat do Kuzmich)
- Assistente EMERCOM para turistas — registro independente de grupo: dados compatíveis com cópia + deep-link para forms.mchs.gov.ru
Kamchatka. Vulcões. Ursos. Código.