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

CamadaTecnologia
FrontendNext.js 15 App Router, TypeScript strict, Tailwind CSS
Banco de dadosPostgreSQL — SQL direto, sem ORM
AutenticaçãoJWT, middleware baseado em papéis
IAWaterfall: 14 provedores — OpenRouter · DeepSeek · Gemini · MiMo · GLM · NVIDIA · Groq · Cerebras · Mistral · xAI · YandexGPT · MiniMax · MuseSpark · Anthropic. Além de Mistral OCR (passaportes de rotas)
PWAService Worker, Web Push (VAPID), Background Sync, IndexedDB
MeshWebRTC P2P (VolcanoMesh) — retransmissão de SOS entre dispositivos do grupo
DeployTimeweb Cloud — autodeploy ao fazer push em main
BotsTelegram + 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étricaValor
Páginas249
API routes878
Componentes de UI242
Módulos lib1078
Migrações SQL757 (última 1301)
Testes unitários21135 em 1904 arquivos
GitHub Actions183 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):

EntidadeVivos
Locais (places)384
Rotas (kamchatka_routes)366
Guias com certificação ativa112

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

GrupoExemplosAgendamento
SegurançaSafety Ingest, Watchdog, Rescue, SOS Bridge, KVERT ACCa cada 5 min – 6 h
ConteúdoEditor, Import Routes, Enrich Routes, Places Enricher22:00–23:00 UTC
InteligênciaScout Digest, Scout Innovator, Intelligence, KB Gap, Industry Intel, Legislation Sync07:00–08:00 UTC
MemóriaMemory Reflector, Contradiction Scanner (safety)uma vez ao dia
QualidadeKuzmich Eval (faithfulness: fixture + perguntas reais de turistas), métrica de grounding, guardião SSRsemanalmente
NegóciosAbandoned Bookings, Payouts, Tour Reminder, Leadspor hora / 06:00 UTC
BotsKuzmich (Telegram, MAX, Web, Widget)tempo real

Agentes de loop (trabalham com o repositório, loop engineering):

LoopGatilhoO que faz
CI SweeperCI falhouLê o log, corrige: branch de PR → commit de correção; main → hotfix draft-PR
Issue Triagediariamente 21:00 UTCClassifica tickets; safety/dinheiro → proprietário, triviais → draft-PR durante a noite
Post-Merge Cleanupmerge de PRRemove branches mescladas, fecha issues
Weekly Chronicleapenas 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

HubCaminhoPapé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/safetypublic
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 import
  • FROM operator_bookings / FROM operator_tours — não bookings, não tours
  • 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 via v_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, /catalog renderizadas 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.