影院信息查询服务

Ingresso.com MCP 是一个用于查询城市、影院、电影场次和座位图的服务器,支持通过标准输入输出或HTTP/SSE协议提供服务。

  • by publi0
  • Go
  • 本地部署
  • 更新于
在 GitHub 查看 publi0/ingresso-mcp

使用说明

Ingresso.com MCP

Servidor MCP (Model Context Protocol) para consultar cidades, cinemas, sessões e mapas de assentos do Ingresso.com. Por padrão, expõe ferramentas via stdio para uso por clientes MCP. Também pode rodar como servidor HTTP/SSE quando INGRESSO_MCP_HTTP_ADDR estiver definido.

Recursos

  • Listagem de cidades e cinemas.
  • Sessões por cidade/cinema com filtro por data.
  • Detalhes de sessão e mapa de assentos.
  • Cache local com TTL configurado por tipo.

Requisitos

  • Go 1.25.7+

Executar

go run .

Executar como servidor web (HTTP/SSE):

INGRESSO_MCP_HTTP_ADDR=:8080 INGRESSO_MCP_HTTP_PATH=/mcp go run .

Build local:

go build -o ingresso-mcp
./ingresso-mcp

Build com metadados (opcional):

go build -ldflags "-X main.version=1.0.0 -X main.commit=$(git rev-parse --short HEAD)" -o ingresso-mcp

Por padrão, o servidor usa stdio (stdin/stdout) e deve ser iniciado pelo cliente MCP. Para conectores remotos (ChatGPT/Claude), execute no modo HTTP/SSE e exponha o endpoint via HTTPS.

Configuração

Variáveis de ambiente:

  • INGRESSO_MCP_API_BASE_URL
    • Override do endpoint de conteúdo.
    • Padrão: https://api-content.ingresso.com/v0.
  • INGRESSO_MCP_CHECKOUT_URL
    • Override do endpoint de checkout.
    • Padrão: https://api.ingresso.com/v1.
  • INGRESSO_MCP_CHECKOUT_WEB_URL
    • Override da base web para gerar links de compra (ingresso.sessions.checkout_url).
    • Padrão: https://checkout.ingresso.com.
  • INGRESSO_MCP_USER_AGENT
    • Override do User-Agent.
  • INGRESSO_MCP_TIMEOUT
    • Timeout HTTP. Aceita duração (12s) ou segundos (10).
    • Padrão: 12s.
  • INGRESSO_MCP_DISABLE_CACHE
    • Se true, desativa o cache local.
  • INGRESSO_MCP_HTTP_ADDR
    • Se definido, inicia servidor HTTP (MCP via Streaming HTTP/SSE).
    • Exemplo: :8080.
  • INGRESSO_MCP_HTTP_PATH
    • Path do endpoint MCP HTTP.
    • Padrão: /mcp.
  • INGRESSO_MCP_HTTP_JSON
    • Se true, usa respostas application/json em vez de text/event-stream (Streamable HTTP).

Ferramentas MCP

Tool Descrição Entradas
ingresso.cities.list Lista todas as cidades disponíveis. -
ingresso.cities.get_by_name Busca dados de uma cidade pelo nome (case-insensitive). name
ingresso.theaters.by_city Lista cinemas de uma cidade. city_id, refresh (opcional)
ingresso.sessions.by_city_and_theater Lista sessões por cidade e cinema. city_id, theater_id, date (YYYY-MM-DD, opcional), refresh (opcional)
ingresso.sessions.detail Detalha uma sessão (inclui seções disponíveis). session_id
ingresso.sessions.seat_map Busca o mapa de assentos de uma sessão e seção. session_id, section_id
ingresso.sessions.checkout_url Retorna a URL de compra (checkout) para uma sessão. session_id, partnership (opcional)

Recursos MCP

URIs disponíveis:

  • ingresso:///cities
  • ingresso:///cities/{city_id}/theaters
  • ingresso:///cities/{city_id}/theaters/{theater_id}/sessions
  • ingresso:///cities/{city_id}/theaters/{theater_id}/sessions/{date} (YYYY-MM-DD)
  • ingresso:///sessions/{session_id}
  • ingresso:///sessions/{session_id}/sections/{section_id}/seatmap

Usar em clientes MCP populares

ChatGPT (Developer Mode)

O ChatGPT conecta-se a servidores MCP remotos; servidores stdio locais não são aceitos diretamente. Para desenvolvimento local, exponha o endpoint HTTP com um túnel e use a URL pública (ex.: https://<dominio>/mcp).

Passos gerais:

  1. Em workspaces Business/Enterprise/Edu, admins devem habilitar o Developer mode nas configurações do workspace (o caminho pode variar por plano).
  2. Usuários autorizados podem ativar o Developer mode nas configurações pessoais.
  3. Crie um conector e informe o endpoint HTTPS do seu servidor MCP.
  4. Em chats, selecione o conector no menu de ferramentas e use os tools.

Referência: Developer mode, apps and full MCP connectors in ChatGPT

Claude Desktop

Claude Desktop lê a configuração de servidores MCP a partir de claude_desktop_config.json. Exemplo usando go run .:

{
  "mcpServers": {
    "ingresso-mcp": {
      "command": "go",
      "args": ["run", "."],
      "env": {
        "INGRESSO_MCP_TIMEOUT": "12s"
      }
    }
  }
}

Você também pode apontar para o binário compilado:

{
  "mcpServers": {
    "ingresso-mcp": {
      "command": "/caminho/para/ingresso-mcp",
      "args": [],
      "env": {}
    }
  }
}

O formato mcpServers e o arquivo claude_desktop_config.json seguem o padrão documentado pela Anthropic.

Nota: conectores MCP remotos devem ser adicionados via Settings → Connectors. O Claude Desktop não conecta servidores remotos configurados diretamente em claude_desktop_config.json. Referência: Building custom connectors via remote MCP servers

Codex (CLI/VS Code)

O Codex permite adicionar servidores MCP via CLI. Exemplo:

codex mcp add ingresso-mcp --env INGRESSO_MCP_TIMEOUT=12s -- go run .

Ou configure manualmente em ~/.codex/config.toml:

[mcp_servers.ingresso-mcp]
command = "go"
args = ["run", "."]
env = { INGRESSO_MCP_TIMEOUT = "12s" }

Comandos e formato de configuração são descritos na documentação do Codex. Referência: Model Context Protocol (Codex)

Cache local

  • Cidades: 7 dias.
  • Cinemas: 72 horas.
  • Sessões: 10 minutos.

O cache é salvo em os.UserCacheDir() na pasta ingresso-mcp.

Exemplos comuns:

  • macOS: ~/Library/Caches/ingresso-mcp
  • Linux: ~/.cache/ingresso-mcp
  • Windows: %LocalAppData%\ingresso-mcp

Testes

go test ./...

Teste integrado (chamadas reais):

INGRESSO_MCP_INTEGRATION=1 go test -tags=integration ./...