Dida-Hotel-MCP-Global

Servidor MCP oficial de reservas do DIDA Hotel para Agentes de IA globais. Pesquise, compare e reserve mais de 2 milhões de hotéis em todo o mundo diretamente no Cursor, Claude Desktop, Windsurf e ChatGPT.

Documentação

RollingGo Hotel MCP — Busca e Reserva de Hotéis

Version ModelScope MCP Version License: MIT Python 3.10+

🏠 Aplicar Chave · 🚀 Início Rápido · 📚 Exemplos · 💬 Suporte · 🔍 Perguntas Frequentes · ✈ Desenvolvido pela Dida · 💰Ganhe com a RollingGo

Este é um servidor MCP oficial que capacita Agentes de IA a buscar, comparar e reservar mais de 2 milhões de hotéis globalmente. Desenvolvido pela DIDA (14 anos, a 3ª maior plataforma de distribuição de viagens do mundo), este servidor conecta as recomendações de viagem da IA com reservas reais.

ServiçoEndpointFerramentas DisponíveisAutenticação
Hotel MCPhttps://mcp.rollinggo.ai/mcpsearchHotels, getHotelDetail, getHotelSearchTagsAuthorization: Bearer <YOUR_API_KEY>
  • Protocolo de Transporte: streamable-http
  • Preço: Completamente gratuito, sem limites de uso
  • Método de Acesso: Autoatendimento seguindo esta documentação; adequado para prototipagem rápida e desenvolvimento de ferramentas.

O RollingGo MCP também oferece um fluxo de Código de Autorização OAuth 2.0, fornecendo 7 ferramentas, incluindo getHotelSearchTags, searchHotels, getHotelDetail, hotelPriceConfirm, searchHotelOrders e outras. Este modo é projetado para integração profunda com aplicações de produção de nível empresarial e requer contato comercial via contact@rollinggo.ai.

Para usuários chineses ou fluxos de trabalho voltados principalmente para o mercado da China continental e sistemas de pagamento Alipay, consulte esta versão: Dida-hotel-MCP-CN


🌟 Por que o DIDA Hotel MCP?

Agentes de IA tradicionais só podem recomendar hotéis com base em conjuntos de dados estáticos de treinamento. O DIDA Hotel MCP equipa seu agente LLM com capacidades transacionais diretas e em tempo real:

Tarifas em Tempo Real e Inventário Reservável — Verificação de preços com latência zero; cada resultado é imediatamente reservável.

Cadeia de Suprimentos — A plataforma B2B de viagens Top 3 do mundo, com 14 anos de experiência, totalmente nativa em API de ponta a ponta.

Rede Global de Hotéis2.000.000+ propriedades cobrindo 200+ países/regiões. 500+ fornecedores cobrindo todos os níveis, de redes de luxo a boutiques locais.

Contratos Diretos110.000+ hotéis conectados diretamente com sincronização de preços e inventário em tempo real.

Vantagem de Preço na Origem — Preços acima dos OTAs; tarifas competitivas em destinos populares.

Pronto para Agentes — Funciona com 40+ agentes líderes: Cursor, Claude Code, Codex, Windsurf, Copilot e outros.

Ganhe Receita em Cada Chamada MCP — Defina margens por país, ganhe comissão em cada reserva concluída e acompanhe seus pedidos, ganhos e pagamentos em tempo real. Saques flexíveis para empresas e desenvolvedores individuais.


🎯 Para quem é

• Empresas ou desenvolvedores individuais que criam Agentes de IA

• Desenvolvedores que buscam integrar capacidades de reserva de hotéis em Clientes MCP

• Desenvolvedores que criam agentes de planejamento de viagens, gestão de viagens corporativas, OTA e serviços de estilo de vida

• Equipes de produto que buscam validar loops de transações comerciais de Agentes de IA

• Indivíduos com necessidades de busca de hotéis, comparação de preços e alertas de queda de preços******

🎯 Casos de Uso

  • Agentes de Propósito Geral: Equipe qualquer agente de IA com reserva nativa de hotéis. Os usuários podem comparar, filtrar e reservar—tudo em uma única conversa em linguagem natural.
  • Planejadores de Viagem com IA: Integre a busca de hotéis diretamente em itinerários em linguagem natural.
  • Assistentes de Viagens Corporativas: Permita que funcionários consultem, comparem e reservem viagens de negócios no Slack, Teams ou interfaces de chat personalizadas.
  • Demonstrações Transacionais: Valide fluxos de comércio e pagamento de ponta a ponta de agentes de IA sem integração pesada de backend.

🚀 Início Rápido

Integre busca e reserva global de hotéis ao seu assistente de IA em menos de 5 minutos, sem necessidade de codificação.

Passo 1: Obtenha Sua Chave de API de Desenvolvedor

  1. Acesse o Centro de Parceiros DIDA e cadastre-se para obter uma chave gratuita.
  2. Você receberá um e-mail contendo: Credenciais para o painel do seu Centro de Parceiros B2B (para monitorar pedidos, configurar margens e acompanhar ganhos).

Passo 2: Conecte ao Seu Agente

Clientes recomendados: Claude CLI, Codex e Cursor. Outros clientes compatíveis com MCP (como Kiro, Doubao, etc.) podem ser configurados de forma semelhante.

Claude CLI

Crie .mcp.json na raiz do seu projeto:

{
  "mcpServers": {
    "Dida-Hotel": {
      "url": "https://mcp.rollinggo.ai/mcp",
      "type": "http",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}

Ou adicione diretamente pela linha de comando:

claude mcp add \
  --transport http \
  --header "Authorization: Bearer YOUR_API_KEY" \
  Dida-Hotel \
  https://mcp.rollinggo.ai/mcp

Codex

Local do arquivo de configuração: .codex/config.json na raiz do projeto, ou globalmente em ~/.codex/config.json

{
  "mcpServers": {
    "Dida-Hotel": {
      "url": "https://mcp.rollinggo.ai/mcp",
      "type": "streamable-http",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}

Cursor

Local do arquivo de configuração: .cursor/mcp.json na raiz do projeto, ou globalmente em ~/.cursor/mcp.json

{
  "mcpServers": {
    "Dida-Hotel": {
      "url": "https://mcp.rollinggo.ai/mcp",
      "type": "streamable-http",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}

Substitua YOUR_API_KEY pela sua Chave de API real.

Teste Diretamente com cURL

Nota: O cURL deve incluir -H "Accept: application/json, text/event-stream", caso contrário o servidor retornará um erro 400.

curl -X POST https://mcp.rollinggo.ai/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "jsonrpc": "2.0",
    "method": "tools/call",
    "params": {
      "name": "searchHotels",
      "arguments": {
        "originQuery": "Shanghai Bund five-star hotel",
        "place": "Shanghai Bund",
        "placeType": "Attraction",
        "checkInParam": {
          "checkInDate": "2026-06-01",
          "stayNights": 2
        },
        "filterOptions": {
          "starRatings": [5.0]
        },
        "size": 3
      }
    },
    "id": 1
  }'

Passo 3: Sua Primeira Chamada MCP

Após a configuração, basta dizer ao seu assistente de IA:

"Encontre um hotel cinco estrelas perto do Bund, em Xangai, para uma estadia começando depois de amanhã."

A IA chamará automaticamente a Ferramenta searchHotels e retornará uma lista de hotéis.

Exemplo de Busca de Hotéis

{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "searchHotels",
    "arguments": {
      "originQuery": "Shanghai Bund five-star hotel",
      "place": "Shanghai Bund",
      "placeType": "Attraction",
      "checkInParam": {
        "checkInDate": "2026-06-01",
        "stayNights": 2
      },
      "filterOptions": {
        "starRatings": [5.0]
      },
      "size": 3
    }
  },
  "id": 1
}

Passo 4: Visualize Resultados e Dados de Exemplo

Resultados de Busca de Hotéis (Dados Reais)

Buscando "hotel cinco estrelas no Bund, Xangai", 2 noites, retorna:

HotelEstrelasMenor Preço/NoiteDistância ao Bund
Fairmont Peace Hotel Shanghai⭐⭐⭐⭐⭐$648124m
The Peninsula Shanghai⭐⭐⭐⭐⭐$940252m

Exemplo de JSON de Resposta Esperada

{
  "message": "Hotel search successful",
  "hotelInformationList": [
    {
      "hotelId": 29529,
      "bookingUrl": "https://rollinggo.ai/pages/hotel/detail/index?...",
      "name": "Fairmont Peace Hotel on the Bund",
      "address": "No. 20 Nanjing East Road",
      "starRating": 5.0,
      "price": {
        "message": "Price query successful. Lowest price: 648, Currency: USD",
        "hasPrice": true,
        "currency": "USD",
        "lowestPrice": 648.0
      },
      "hotelAmenities": ["Bar", "Gym", "Pool", "SPA", "Parking", "WIFI"],
      "tags": ["SPA Service", "Resort Hotel", "Sports-Friendly Hotel"]
    }
  ]
}

🔧 Ferramentas Disponíveis

Documentação Oficial | Ferramentas MCP Dida

O servidor registra 3 ferramentas principais para lidar com o ciclo completo de busca até a reserva:

1) searchHotels

Encontre hotéis por localização, data, preço, classificação por estrelas e tags.

  • Parâmetros de Entrada:
    • originQuery (string, obrigatório): Solicitação em texto bruto do usuário (ex.: "Encontre hotéis boutique em Tóquio abaixo de $200").
    • place (string, obrigatório): Destino específico, atração ou nome de aeroporto.
    • placeType (string, obrigatório): Tipo de localização (city, airport, point_of_interest, hotel, etc.). Valores suportados: city, airport, point_of_interest, train_station, subway_station, hotel, district/county, detailed address.
    • countryCode (string, opcional): Código de país ISO 3166-1 alpha-2, ex.: CN, US.
    • size (número, opcional, padrão: 5): Número de hotéis a retornar, máximo 20.
    • checkInParam (objeto, opcional): Parâmetros relacionados ao check-in.
    • filterOptions (objeto, opcional): Parâmetros de filtro.
    • hotelTags (objeto, opcional): Filtros de tag / marca / orçamento.
🔎 Ver Parâmetros de Entrada Detalhados (checkInParam, filterOptions, hotelTags)

Campos de checkInParam:

  • adultCount (número, opcional, padrão: 2): Adultos por quarto.
  • checkInDate (string, opcional, formato: YYYY-MM-DD): Data de check-in. Se omitida, no passado ou mal formatada, o padrão é amanhã.
  • stayNights (número, opcional, padrão: 1): Número de noites (máximo 28).

Campos de filterOptions:

  • distanceInMeter (número, opcional): Distância em linha reta do ponto de interesse em metros. O padrão é 2000 quando um ponto de interesse é usado.
  • starRatings (número[], opcional): Faixa de classificação por estrelas, padrão [0.0, 5.0], passo 0.5.

Campos de hotelTags:

  • requiredTags (string[], opcional): Tags obrigatórias (restrição rígida).
  • preferredBrands (string[], opcional): Marcas preferidas.
  • maxPricePerNight (número, opcional): Orçamento máximo por noite (CNY).
📄 Ver Exemplo de Esquema JSON de Resposta
{
  "message": "Hotel search succeeded",
  "hotelInformationList": [
    {
      "hotelId": 43615,
      "bookingUrl": "https://rollinggo.ai/pages/hotel/detail/index?...",
      "name": "Sunworld Dynasty Hotel Beijing",
      "brand": null,
      "address": "50 Wangfujing Street",
      "destinationId": "6140156",
      "latitude": 39.917748,
      "longitude": 116.412249,
      "distanceInMeters": 205,
      "starRating": 5.0,
      "price": {
        "message": "Price found, lowest: 626.0, currency: CNY",
        "hasPrice": true,
        "currency": "CNY",
        "lowestPrice": 626.0
      },
      "areaCode": "CN",
      "description": "...",
      "imageUrl": "https://image-cdn.RollingGo.com/...",
      "hotelAmenities": ["24h Front Desk", "WiFi"],
      "score": 1.0,
      "tags": ["Near Shopping Mall", "Free WiFi"]
    }
  ]
}

Nota: price é um objeto, não um número. Os campos podem estar ausentes ou ser null dependendo da cidade/fonte de fornecimento.


2) getHotelDetail

Busque tipos de quartos em tempo real, preços dinâmicos, inventário e políticas de cancelamento para um hotel selecionado.

  • Parâmetros de Entrada:
    • hotelId (número, opcional): ID do hotel. Mutuamente exclusivo com name; se ambos forem fornecidos, hotelId tem prioridade.
    • name (string, opcional): Nome do hotel (correspondência difusa).
    • dateParam (objeto, opcional): Parâmetros de data de check-in / check-out.
    • occupancyParam (objeto, opcional): Parâmetros de número de hóspedes e quartos.
    • localeParam (objeto, opcional): Parâmetros de país e moeda.
🔎 Ver Parâmetros de Entrada Detalhados (dateParam, occupancyParam, localeParam)

Campos de dateParam:

  • checkInDate (string, opcional, formato: YYYY-MM-DD): Data de check-in. O padrão é amanhã se vazio, mal formatado ou no passado.
  • checkOutDate (string, opcional, formato: YYYY-MM-DD): Data de check-out. O padrão é o dia checkInDate + 1 se vazio, mal formatado ou não após o check-in.

Campos de occupancyParam:

  • adultCount (número, opcional, padrão: 2): Adultos por quarto.
  • childCount (número, opcional, padrão: 0): Crianças por quarto.
  • childAgeDetails (número[], opcional): Idades das crianças, ex.: [3, 5].
  • roomCount (número, opcional, padrão: 1): Número de quartos.

Campos de localeParam:

  • countryCode (string, opcional, padrão: US): Código de país ISO 3166-1 alpha-2.
  • currency (string, opcional, padrão: USD): Código de moeda.
📄 Ver Exemplo de Esquema JSON de Resposta
{
  "success": true,
  "errorMessage": null,
  "hotelId": 43615,
  "bookingUrl": "https://rollinggo.ai/pages/hotel/detail/index?...",
  "name": "Sunworld Dynasty Hotel Beijing",
  "checkIn": "2026-03-05",
  "checkOut": "2026-03-06",
  "roomRatePlans": [
    {
      "roomTypeId": 4984714,
      "roomName": "Superior Room",
      "roomNameCn": "高级客房",
      "ratePlanId": "7012072001634754626",
      "ratePlanName": "Superior Room King Bed, 1 King Bed",
      "bedType": 73,
      "bedTypeDescription": "Unknown",
      "currency": "CNY",
      "totalPrice": 0,
      "totalSalesRate": null,
      "inventoryCount": null,
      "isOnRequest": null,
      "recommendIndex": null,
      "cancellationPolicies": [
        {
          "fromDate": "2026-03-02T10:00:00+08:00",
          "toDate": null,
          "amount": 634,
          "percent": null,
          "type": null,
          "description": null
        }
      ],
      "includedFees": null,
      "excludedFees": null,
      "metadata": null
    }
  ]
}

Nota: Em caso de falha, a resposta pode conter uma mensagem de erro (ex.: "Falha ao buscar preços, tente novamente mais tarde") ou campos de erro estruturados. O array roomRatePlans pode ser longo — considere paginar ou limitar a exibição no lado do cliente.


3) getHotelSearchTags

Recupere metadados contendo todos os nomes de tags filtráveis (ex.: "WiFi Grátis", "Academia", "Adequado para Crianças") para refinar a filtragem de busca. Adequado para cache local e mapeamento de intenção no lado do cliente.

📄 Ver Exemplo de Esquema JSON de Resposta
{
  "tags": [
    {
      "name": "Free WiFi",
      "category": "Core Amenities",
      "description": "Provides free WiFi"
    }
  ],
  "usageGuide": {
    "tagUsage": "Place tag names into hotelTags.preferredTags (preference), requiredTags (hard requirement), or excludedTags (exclusion)",
    "exampleRequest": "{...}"
  }
}

Categorias comuns de tags:

  • Marca e Classificações
  • Destaques Especiais
  • Comodidades Principais
  • Família e Crianças
  • Detalhes de Serviço
  • Serviço e Restaurantes
  • Transporte e Pagamento
  • Vistas e Tipos de Quarto
  • Tipo de Hotel
  • Preços

📚 Exemplos de Uso

Exemplo 1: Busca por Cidade
{
  "originQuery": "Find 4-star+ hotels in Beijing for 2 nights",
  "place": "Beijing",
  "placeType": "city",
  "checkInParam": {
    "checkInDate": "2026-03-01",
    "stayNights": 2
  },
  "filterOptions": {
    "starRatings": [4.0, 5.0]
  },
  "size": 5
}
Exemplo 2: Com Tags e Restrições de Orçamento
{
  "originQuery": "Find quality hotels in Beijing with free WiFi, budget under 1000 per night",
  "place": "Beijing",
  "placeType": "city",
  "hotelTags": {
    "requiredTags": ["Free WiFi"],
    "maxPricePerNight": 1000
  },
  "size": 5
}
Exemplo 3: Consultar Tipos de Quarto e Preços
{
  "hotelId": 43615,
  "dateParam": {
    "checkInDate": "2026-03-05",
    "checkOutDate": "2026-03-06"
  },
  "occupancyParam": {
    "adultCount": 2,
    "roomCount": 1
  },
  "localeParam": {
    "currency": "CNY",
    "countryCode": "CN"
  }
}

💬 Perguntas Frequentes

🔍Guia de Solução de Problemas

Perguntas Frequentes

P1: O cliente não mostra a Ferramenta após a configuração

  1. Verifique se o formato da configuração JSON está correto
  2. Confirme que url e type estão corretos
  3. Confirme que a Chave de API no cabeçalho Authorization está correta
  4. Reinicie o cliente (as alterações só têm efeito após a reinicialização) Q2: Retorna 401 Não Autorizado Chave de API inválida ou formatada incorretamente:
  5. A chave de API deve começar com mcp_
  6. Em Authorization: Bearer YOUR_API_KEY, deve haver um espaço após Bearer
  7. Certifique-se de que não há espaços extras ou quebras de linha na chave de API

Q3: Retorna 400 Requisição Inválida Comum ao chamar diretamente com cURL. Verifique se o cabeçalho Accept está incluído:

-H "Accept: application/json, text/event-stream"

Q4: searchHotels retorna resultados vazios

  1. Verifique se place e placeType correspondem (por exemplo, "Shanghai Bund" deve ser pareado com "Attraction")
  2. Relaxe os critérios de filtro (remova restrições de classificação por estrelas / tags)
  3. Confirme que checkInDate não está no passado

Q5: Os preços não correspondem às tarifas reais Os resultados da pesquisa mostram preços de referência; os preços em tempo real podem variar. Atualmente, apenas consultas são suportadas — reserva online ainda não está disponível.

💬 Suporte

  • 📧 E-mail: york.lu@dida.com
  • 🐛 Issues: Envie problemas ou solicitações de recursos no GitHub Issues.
  • 💬 Comunidade Discord: Junte-se ao nosso Servidor Discord ou escaneie o código QR abaixo para conectar-se com outros desenvolvedores, discutir integrações e obter suporte em tempo real da equipe DIDA.
Discord Support

🌟 Dida Hotel MCP (OAuth) v2.3 Atualização Principal

A v2.3 otimiza a estrutura de consulta de pedidos e adiciona vários campos de detalhes de pedidos para ajudar os Agentes a lidar melhor com cenários de check-in, pagamento e cancelamento. Nota: Esta atualização se aplica apenas à versão de integração OAuth, não à versão com chave de API documentada aqui. A versão OAuth requer integração comercial contact@rollinggo.ai.

O que mudou

Ferramentas inalteradas (4)

  • getHotelSearchTags — Obter todas as tags de filtro de hotel habilitadas
  • searchHotels — Pesquisar lista global de hotéis por condições
  • getHotelDetail — Obter tipos de quartos disponíveis e preços para um hotel
  • hotelPriceConfirm — Bloquear preço final de varejo em tempo real para o quarto selecionado

Ferramentas modificadas (2)

  • createHotelBookingWithPaymentURL — Removido o parâmetro alipayUrlScene; unificado bookingResult.paymentUrl para checkout genérico
  • searchHotelOrders — Saída simplificada para 9 campos principais (orderNo, hotelName, roomName, orderStatus, totalPrice, etc.) para visualização em lista; detalhes completos movidos para ferramenta dedicada

Novas ferramentas (1)

  • getHotelOrderDetail — Consultar detalhes completos e estruturados do pedido por orderNo, incluindo hotelConfirmationNo, lista de hóspedes, tipo de cama, telefones de contato, coordenadas, prazos de pagamento/cancelamento e sinalizadores de política

Novos campos

  • hotelConfirmationNo — Número de confirmação real do lado do hotel para consulta na recepção
  • stayInfo.bedTypeStr — Descrição legível do tipo de cama (por exemplo, "1 King Bed (1.8m)")
  • stayInfo.guestNames — Lista oficial de nomes de hóspedes em pinyin/inglês para verificação
  • priceInfo.paymentDeadline — Timestamp do prazo de pagamento (YYYY-MM-DD HH:mm:ss) para alertas de contagem regressiva
  • policyInfo.freeCancelDeadline — Timestamp do prazo de cancelamento gratuito para verificações de janela de reembolso
  • policyInfo.isCancelable — Se o cancelamento gratuito ainda está disponível no momento atual

Contagem de ferramentas: 7 no total (aumento de 6 na v2.2) — 1 nova, 2 modificadas, 4 inalteradas.


Apêndice

🔣 Se você quiser implantação local

Método A: Executar via uv (Recomendado - Configuração Zero)

Se você tiver o uv instalado, execute o servidor instantaneamente:

uv run --with-requirements requirements.txt server.py

Método B: Configuração Padrão em Python

# Clone the repository
git clone https://github.com/DIDA-AI/dida_hotel_mcp_global.git
cd dida_hotel_mcp_global

# Setup virtual environment
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install dependencies and run
pip install -r requirements.txt
python server.py

O servidor local será executado em http://localhost:8000/mcp, encaminhando automaticamente as solicitações para os nós seguros da API global da DIDA.


🔑 Segurança e Cabeçalhos

  • O servidor local encaminha solicitações para a API global segura da DIDA.
  • Sempre forneça sua chave de API nos cabeçalhos. As chaves devem começar com mcp_.
  • Cabeçalho obrigatório: Authorization: Bearer mcp_your_key_here

📜 Licença

Este projeto é licenciado sob a Licença MIT - consulte o arquivo LICENSE para obter detalhes.


Feito com ❤️ pela equipe DIDA