Gopaxo

MCP Gopaxo — Liga a tua IA ao comparador de comboio, autocarro e avião

Servidor Model Context Protocol público da Gopaxo: liga Claude, Cursor ou o teu agente IA a /api/mcp e compara comboio, autocarro, carpooling e avião em linguagem natural.

Acesso protegido por token : o endpoint /api/mcp exige um token Bearer pessoal. Solicite-o gratuitamente pelo nosso formulário dedicado. Resposta por e-mail em 2 dias úteis.

Endpoint
https://www.gopaxo.com/api/mcp
Transporte
Streamable HTTP (stateless)
Versão do servidor
gopaxo-mcp@0.1.0

O que é o Model Context Protocol?

O Model Context Protocol é um padrão aberto publicado pela Anthropic no final de 2024. Descreve um protocolo JSON-RPC 2.0 para que um modelo de linguagem possa chamar ferramentas externas, aceder a recursos e receber prompts estruturados. Os principais clientes (Claude Desktop, Claude Code, Cursor, VS Code, Cline, Continue…) implementam-no nativamente.

Na prática, quando pede ao seu assistente «encontra-me um Paris-Lyon para amanhã por menos de 30 €», ele chama a ferramenta search_trips do nosso servidor, recebe uma resposta JSON estruturada com todas as viagens disponíveis e apresenta-a de forma legível — exatamente como se estivesse no gopaxo.com.

Pedir um token de acesso

O acesso ao MCP está sujeito a um token Bearer pessoal para proteger os nossos parceiros transportadores. O token é gratuito e entregue mediante simples pedido em três etapas:

  1. 1

    Preencher o formulário

    Nome, e-mail profissional, organização e descrição do uso previsto. O seu pedido segue para dev@gopaxo.com.

  2. 2

    Validação Gopaxo

    Estudamos o pedido, geramos um token único e adicionamo-lo ao registo de tokens autorizados. Tempo médio: menos de 2 dias úteis.

  3. 3

    Receção do token

    Recebe o token por e-mail. Cole-o no cabeçalho Authorization do seu cliente MCP — a configuração detalhada está mais abaixo.

Solicitar um token agora

Instalação

Claude Desktop / Claude.ai

Abra Definições → Developer → Edit Config (ou manualmente ~/Library/Application Support/Claude/claude_desktop_config.json no macOS), e adicione:

{
  "mcpServers": {
    "gopaxo": {
      "transport": "http",
      "url": "https://www.gopaxo.com/api/mcp",
      "headers": {
        "Authorization": "Bearer VOTRE_TOKEN_GOPAXO"
      }
    }
  }
}

Reinicie o Claude Desktop — as quatro ferramentas Gopaxo aparecem no menu «Available tools».

Claude Code (CLI)

Um comando e o MCP é adicionado ao seu projeto:

claude mcp add --transport http gopaxo https://www.gopaxo.com/api/mcp \
    --header "Authorization: Bearer VOTRE_TOKEN_GOPAXO"

Valide depois no Claude Code com /mcp para listar os servidores ativos.

Cursor / VS Code

No ficheiro .cursor/mcp.json (Cursor) ou na configuração MCP do VS Code:

{
  "mcpServers": {
    "gopaxo": {
      "url": "https://www.gopaxo.com/api/mcp",
      "headers": {
        "Authorization": "Bearer VOTRE_TOKEN_GOPAXO"
      }
    }
  }
}

Recarregue a janela para que o agente detete as ferramentas.

Testar com o MCP Inspector

Para explorar o servidor sem integração prévia, o MCP Inspector abre uma interface web de introspeção:

npx @modelcontextprotocol/inspector https://www.gopaxo.com/api/mcp \
    --header "Authorization: Bearer VOTRE_TOKEN_GOPAXO"

A ferramenta mostra a lista de tools, o respetivo JSON-Schema e permite executar chamadas de teste.

Uso programático — TypeScript

Através do SDK oficial @modelcontextprotocol/sdk:

import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";

const transport = new StreamableHTTPClientTransport(
  new URL("https://www.gopaxo.com/api/mcp"),
  {
    requestInit: {
      headers: {
        Authorization: `Bearer ${process.env.GOPAXO_MCP_TOKEN}`,
      },
    },
  },
);
const client = new Client({ name: "my-agent", version: "0.1.0" });
await client.connect(transport);

// Find the cheapest Paris → Lyon for tomorrow
const trips = await client.callTool({
  name: "search_trips",
  arguments: {
    from: "Paris",
    to: "Lyon",
    departureDate: "2026-04-25",
    passengers: "adulte",
  },
});
console.log(trips.structuredContent);

Ferramentas expostas

Quatro ferramentas cobrem todo o fluxo Gopaxo, da resolução de uma cidade à proposta de um itinerário com preço. Todas as operações são apenas de leitura (nenhuma reserva do lado MCP — a finalização é feita no site do transportador parceiro através do link devolvido).

autocomplete_cities

read-onlyidempotentopen-world

Resolve a free-text city query to a list of Gopaxo / Tictactrip stops (city groups). Returns the 1-7 best matches, each with a human-readable label, an ISO-2 country code, and the gpuid needed for precise follow-up calls. Use this tool before `search_trips` whenever the user input is ambiguous or you need the canonical name.

Ver o JSON-Schema dos parâmetros
{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 2,
      "description": "Free-text search, e.g. 'paris', 'bordeaux', 'london', 'bcn'. The Tictactrip autocomplete is fuzzy and accepts accents and partial names."
    }
  },
  "required": [
    "query"
  ],
  "additionalProperties": false
}

search_trips

read-onlyopen-world

Compare all available outbound (and optional return) trips between two locations on a given date, across train, bus, carpool and plane partners. Returns normalised trips with price in euros, duration, provider, stops and a partner `redirectionLink` to finalise the booking.

Ver o JSON-Schema dos parâmetros
{
  "type": "object",
  "properties": {
    "from": {
      "type": "string",
      "description": "Origin city or station name (e.g. 'Paris', 'Lyon', 'Londres'). Prefer the label returned by the autocomplete tool for exact matches."
    },
    "to": {
      "type": "string",
      "description": "Destination city or station name."
    },
    "fromId": {
      "type": "string",
      "description": "Optional Tictactrip gpuid for the origin. When absent, the server resolves it via autocomplete."
    },
    "toId": {
      "type": "string",
      "description": "Optional Tictactrip gpuid for the destination."
    },
    "departureDate": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Date of the outbound trip in ISO 8601 (YYYY-MM-DD). Example: '2026-05-03'."
    },
    "returnDate": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Optional return date (YYYY-MM-DD). When provided, the response includes a `returnTrips` array. Omit for a one-way search."
    },
    "passengers": {
      "type": "string",
      "description": "Comma-separated passenger types. Allowed values: adulte, jeune, senior, enfant. Defaults to 'adulte' (1 adult).",
      "default": "adulte"
    }
  },
  "required": [
    "from",
    "to",
    "departureDate"
  ],
  "additionalProperties": false
}

price_calendar

read-onlyidempotentopen-world

Return the cheapest price per day for a given origin/destination around a pivot date (±3 to ±5 days, as 3, 5, 7 or 11-day windows). Useful when the user wants to know if moving their trip by a day or two changes the price.

Ver o JSON-Schema dos parâmetros
{
  "type": "object",
  "properties": {
    "from": {
      "type": "string",
      "description": "Origin label."
    },
    "to": {
      "type": "string",
      "description": "Destination label."
    },
    "fromId": {
      "type": "string",
      "description": "Optional origin gpuid."
    },
    "toId": {
      "type": "string",
      "description": "Optional destination gpuid."
    },
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Centre date (YYYY-MM-DD)."
    },
    "days": {
      "type": "integer",
      "minimum": 3,
      "maximum": 11,
      "default": 7,
      "description": "Total window size centred on `date` (3, 5, 7 or 11 days)."
    },
    "passengers": {
      "type": "string",
      "default": "adulte",
      "description": "Passenger composition (same format as search_trips)."
    }
  },
  "required": [
    "from",
    "to",
    "date"
  ],
  "additionalProperties": false
}

popular_destinations

read-onlyidempotentopen-world

List the most popular destinations from (or to) a given city, using Gopaxo's curated Tictactrip top-cities dataset. Use this for inspiration when the user has only a starting city in mind.

Ver o JSON-Schema dos parâmetros
{
  "type": "object",
  "properties": {
    "uniqueName": {
      "type": "string",
      "description": "Tictactrip `unique_name` of the pivot city (for example 'paris', 'lyon', 'berlin'). Use autocomplete_cities to resolve."
    },
    "direction": {
      "type": "string",
      "enum": [
        "from",
        "to"
      ],
      "default": "from",
      "description": "Whether to list popular destinations *from* the city ('from') or popular origins *to* the city ('to')."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "default": 12,
      "description": "Max number of destinations to return (1-50)."
    }
  },
  "required": [
    "uniqueName"
  ],
  "additionalProperties": false
}

Exemplos de uso em linguagem natural

  • «Encontra-me o comboio mais barato Paris → Bordéus para a próxima sexta-feira.»
  • «Compara as ofertas Lyon-Barcelona para o fim de semana, comboio e autocarro incluídos.»
  • «Quais são os 10 destinos mais populares à partida de Lyon?»
  • «Dá-me o preço mais baixo Paris-Marselha nos próximos 7 dias.»
  • «Procura um round-trip Paris-Milão de TGV, partida terça, regresso domingo, 2 adultos.»
  • «Há um autocarro direto Lille-Amesterdão amanhã? Diz-me o preço.»

As perguntas mais frequentes sobre a Gopaxo

O que é o MCP (Model Context Protocol)?

O Model Context Protocol é um padrão aberto publicado pela Anthropic no final de 2024 que permite a um modelo de linguagem (Claude, ChatGPT, Gemini, Mistral, etc.) chamar ferramentas externas de forma estruturada.

Como a Gopaxo usa o MCP?

A Gopaxo expõe um servidor MCP em /api/mcp via Streamable HTTP, protegido por um token Bearer. Há quatro ferramentas disponíveis: autocomplete_cities, search_trips, price_calendar, popular_destinations.

Como obter um token de acesso?

Acede a /mcp/request-token e preenche o formulário. A equipa da Gopaxo revê o pedido e envia-te um token por e-mail em até 2 dias úteis. É gratuito.

Como passo o token a um cliente MCP?

O token vai no header Authorization: Bearer <token>. Claude Desktop, Cursor e VS Code aceitam um campo headers na sua configuração MCP.

Que clientes MCP são compatíveis?

Qualquer cliente que suporte o transporte Streamable HTTP do MCP: Claude Desktop, Claude Code, Cursor, VS Code, Cline, Continue, e o Claude Agent SDK.

É gratuito?

Sim. A Gopaxo é um comparador gratuito, e o acesso via MCP segue as mesmas regras: sem taxas de serviço, sem acréscimos. O token é entregue gratuitamente.

Que dados devolve o servidor MCP?

Cada chamada devolve uma resposta JSON estruturada. search_trips devolve preço, duração, horários, estações, ligações, transportadora, pegada de CO₂ e link do parceiro.

O que acontece se usar um token inválido?

O servidor devolve 401 Unauthorized com um header WWW-Authenticate a indicar onde pedir um token.

Posso usar o MCP num produto comercial?

Sim, respeitando as nossas CGU e citando visivelmente «powered by Gopaxo». Os preços devem ser apresentados tal como são.

Como testar rapidamente o servidor MCP?

Abre o MCP Inspector com npx @modelcontextprotocol/inspector e aponta para /api/mcp com o teu token.

Precisa de um acesso dedicado ou de suporte para programadores?

Escreva-nos para contact@gopaxo.com: integração de produto, rate limits alargados, co-marketing ou simples feedback sobre o MCP.

Contacte-nos