Videogame Encyclopedia MCP Server

Servidor MCP dedicado a reunir informações sobre videogames.

Documentação

Servidor MCP de Enciclopédia de Videogames

Um servidor Model Context Protocol (MCP) que fornece informações estruturadas sobre videogames da Steam e SteamGridDB. Este servidor expõe ferramentas para pesquisar jogos e recuperar metadados abrangentes, incluindo descrições, categorias, datas de lançamento, contagens de jogadores e recursos visuais como logotipos, capas e ícones.

Recursos

Integração com Steam

  • steam_search_game: Pesquise jogos por nome na Steam
  • steam_get_details: Obtenha informações abrangentes do jogo, incluindo:
    • Descrição e informações detalhadas
    • Categorias e gêneros
    • Plataformas suportadas (Windows, Mac, Linux)
    • Recursos multiplayer/singleplayer
    • Data de lançamento
    • Informações de preço
    • Detalhes do desenvolvedor e publicadora
  • steam_get_dlc_list: Liste todos os DLCs disponíveis para um jogo específico
  • steam_get_reviews_summary: Obtenha avaliações da comunidade e trechos das principais análises
  • steam_get_game_news: Obtenha as últimas notícias e anúncios de um jogo
  • steam_get_player_count: Obtenha o número atual de jogadores online de um jogo
  • steam_get_top_sellers: Obtenha os jogos mais vendidos globalmente no momento
  • steam_get_top_games: Navegue pelos principais jogos por gênero ou categoria
  • steam_get_genres: Obtenha uma lista de gêneros comuns da Steam para descoberta

Integração com SteamGridDB

  • steamgrid_search_game: Pesquise jogos no SteamGridDB
  • steamgrid_get_assets: Recupere recursos visuais, incluindo:
    • Logotipos transparentes
    • Imagens de capa/grade
    • Imagens hero/banner
    • Ícones
    • Múltiplas variações com metadados (dimensões, tipo MIME, autor)
  • steamgrid_get_best_logo: Obtenha o melhor logotipo transparente para um jogo

Integração com ScreenScraper

  • screenscraper_get_systems: Obtenha uma lista de todos os sistemas de jogos retrô suportados
  • screenscraper_search_game: Pesquise jogos retrô por nome com filtro opcional de sistema
  • screenscraper_get_game_info: Obtenha informações detalhadas do jogo e recursos de mídia, incluindo:
    • Metadados do jogo (desenvolvedor, publicadora, data de lançamento, classificação)
    • Capturas de tela, capas e artes de caixa
    • Logotipos de roda e marquees
    • Pré-visualizações de vídeo
    • Fan art e imagens de cartucho
    • Suporte para identificação de ROM via checksums (CRC, MD5, SHA1)

Ferramentas Unificadas

  • game_get_full_profile: Obtenha um perfil abrangente do jogo em uma única solicitação, agregando metadados da Steam e recursos visuais da comunidade do SteamGridDB. Esta é a ferramenta recomendada para fornecer uma visão geral completa de um jogo.

Instalação

Pré-requisitos

  • Node.js 18 ou superior
  • npm ou yarn

Configuração

  1. Clone ou baixe este repositório

    cd /Users/hoanicross/devel/perso/genai/mcp/game-encyclopedia-mcp-server
    
  2. Instale as dependências

    npm install
    
  3. Configure as chaves de API

    Copie o arquivo de ambiente de exemplo:

    cp .env.example .env
    

    Edite .env e adicione suas chaves de API:

    • Chave de API do SteamGridDB: Necessária para recursos visuais de alta qualidade (grades, heroes, logotipos). Obtenha em steamgriddb.com.

Configuração

O servidor requer as seguintes variáveis de ambiente:

VariávelObrigatóriaDescrição
STEAMGRIDDB_API_KEYSimSua chave de API do SteamGridDB
SCREENSCRAPER_DEV_IDNãoID de desenvolvedor do ScreenScraper (para jogos retrô)
SCREENSCRAPER_DEV_PASSWORDNãoSenha de desenvolvedor do ScreenScraper
SCREENSCRAPER_USER_IDNãoNome de usuário do ScreenScraper (opcional, fornece cota de API maior)
SCREENSCRAPER_USER_PASSWORDNãoSenha de usuário do ScreenScraper
SCREENSCRAPER_SOFTWARE_NAMENãoIdentificador de software (padrão: 'game-encyclopedia-mcp-server')

Configuração

1. Variáveis de Ambiente

Crie um arquivo .env no diretório raiz:

STEAMGRIDDB_API_KEY=your_steamgriddb_key_here

# Optional: For retro game support via ScreenScraper
SCREENSCRAPER_DEV_ID=your_dev_id_here
SCREENSCRAPER_DEV_PASSWORD=your_dev_password_here
SCREENSCRAPER_USER_ID=your_username_here
SCREENSCRAPER_USER_PASSWORD=your_password_here

Para obter credenciais do ScreenScraper:

  1. Compile o projeto
    npm run build
    

Uso

Com o Claude Desktop

Adicione este servidor ao seu arquivo de configuração do Claude Desktop:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "game-encyclopedia": {
      "command": "node",
      "args": ["/Users/hoanicross/devel/perso/genai/mcp/game-encyclopedia-mcp-server/dist/index.js"],
      "env": {
        "STEAMGRIDDB_API_KEY": "your_steamgriddb_api_key_here"
      }
    }
  }
}

Reinicie o Claude Desktop para carregar o servidor.

Instalação/Inicialização Rápida

Via Smithery

Você pode instalar este servidor no seu cliente MCP (como o Claude Desktop) com um único comando:

npx -y @smithery/cli@latest install videogame-encyclopedia-mcp-server --client claude

Via uvx

Se você tiver o uv instalado, pode executar o servidor diretamente (requer Node.js localmente):

uvx --from node videogame-encyclopedia-mcp-server

Via npx

npx videogame-encyclopedia-mcp-server

[!NOTE] Para publicar este pacote no NPM, você deve definir um segredo NPM_TOKEN nas configurações do seu repositório GitHub.

Ferramentas Disponíveis

1. steam_search_game

Pesquise jogos na Steam por nome.

Entrada:

  • query (string, obrigatório): Nome do jogo a pesquisar
  • limit (número, opcional): Máximo de resultados (padrão: 10)

Exemplo:

{
  "query": "Elden Ring",
  "limit": 5
}

2. steam_get_details

Obtenha informações detalhadas sobre um jogo da Steam.

Entrada:

  • appid (número, obrigatório): ID do aplicativo Steam

Exemplo:

{
  "appid": 1245620
}

3. steam_get_dlc_list

Obtenha uma lista de todos os DLCs disponíveis para um jogo específico da Steam.

Entrada:

  • appid (número, obrigatório): ID do aplicativo Steam

Exemplo:

{
  "appid": 1245620
}

4. steam_get_reviews_summary

Obtenha um resumo das análises e avaliações de usuários para um jogo específico da Steam.

Entrada:

  • appid (número, obrigatório): ID do aplicativo Steam

Exemplo:

{
  "appid": 1245620
}

5. steam_get_game_news

Obtenha as últimas notícias e anúncios para um jogo específico da Steam.

Entrada:

  • appid (número, obrigatório): ID do aplicativo Steam do jogo
  • count (número, opcional): Número de notícias a buscar (padrão: 5)

Exemplo:

{
  "appid": 1245620,
  "count": 3
}

6. steam_get_player_count

Obtenha o número atual de jogadores online para um jogo específico da Steam.

Entrada:

  • appid (número, obrigatório): ID do aplicativo Steam do jogo

Exemplo:

{
  "appid": 1245620
}

7. steam_get_genres

Obtenha uma lista de gêneros e categorias comuns da Steam para descoberta.

Exemplo:

{}

8. steam_get_top_sellers

Obtenha os jogos mais vendidos globalmente no momento na Steam.

Entrada:

  • limit (número, opcional): Máximo de resultados (padrão: 10)

Exemplo:

{
  "limit": 5
}

9. steam_get_top_games

Navegue pelos principais jogos para uma categoria ou gênero específico da Steam (ex.: "Action", "RPG", "Strategy").

Entrada:

  • genreId (string, opcional): Nome do gênero a navegar
  • limit (número, opcional): Máximo de resultados (padrão: 10)

Exemplo:

{
  "genreId": "RPG",
  "limit": 5
}

10. steamgrid_search_game

Pesquise jogos no SteamGridDB.

Entrada:

  • query (string, obrigatório): Nome do jogo a pesquisar

Exemplo:

{
  "query": "Elden Ring"
}

11. steamgrid_get_assets

Obtenha recursos visuais para um jogo do SteamGridDB.

Entrada:

  • gameId (número, obrigatório): ID do jogo no SteamGridDB
  • assetTypes (array, opcional): Tipos de recursos a recuperar: grid, hero, logo, icon (padrão: todos)

Exemplo:

{
  "gameId": 123456,
  "assetTypes": ["logo", "grid"]
}

12. steamgrid_get_best_logo

Obtenha o melhor logotipo transparente para um jogo do SteamGridDB, otimizado para uso em interface.

Entrada:

  • gameId (número, opcional): ID do jogo no SteamGridDB
  • appid (número, opcional): ID do aplicativo Steam

Exemplo:

{
  "appid": 1245620
}

13. game_get_full_profile

Obtenha um perfil abrangente do jogo combinando metadados da Steam e recursos visuais do SteamGridDB. Esta ferramenta lida automaticamente com o mapeamento entre Steam e SteamGridDB.

Entrada:

  • query (string, obrigatório): Nome do jogo a pesquisar

Exemplo:

{
  "query": "Elden Ring"
}

14. screenscraper_get_systems

Obtenha uma lista de todos os sistemas de jogos retrô suportados do ScreenScraper.fr.

Entrada: Nenhuma necessária.

Exemplo:

{}

Retorna: Lista de sistemas com ID, nome, fabricante, data de lançamento e extensões de arquivo suportadas.

15. screenscraper_search_game

Pesquise jogos retrô no ScreenScraper.fr por nome.

Entrada:

  • gameName (string, obrigatório): Nome do jogo a pesquisar
  • systemId (número, opcional): Filtrar por ID do sistema de jogos (use screenscraper_get_systems para encontrar IDs)
  • language (string, opcional): Código de idioma para nomes e descrições de jogos (padrão: "en")

Exemplo:

{
  "gameName": "Super Mario Bros",
  "systemId": 4,
  "language": "en"
}

Retorna: Lista de jogos correspondentes com metadados incluindo sistema, desenvolvedor, publicadora, gêneros e sinopse.

16. screenscraper_get_game_info

Obtenha informações detalhadas e recursos de mídia para um jogo retrô do ScreenScraper.fr.

Entrada:

  • gameId (número, opcional): ID do jogo no ScreenScraper
  • gameName (string, opcional): Nome do jogo a pesquisar
  • systemId (número, opcional): ID do sistema de jogos
  • crc (string, opcional): Checksum CRC da ROM
  • md5 (string, opcional): Checksum MD5 da ROM
  • sha1 (string, opcional): Checksum SHA1 da ROM
  • romName (string, opcional): Nome do arquivo da ROM
  • romSize (número, opcional): Tamanho do arquivo da ROM em bytes
  • language (string, opcional): Código de idioma (padrão: "en")

Exemplo (por ID do jogo):

{
  "gameId": 12345,
  "systemId": 4
}

Exemplo (por checksum da ROM):

{
  "md5": "a31ec74822f6e93f848ac58d9c85716c",
  "systemId": 4
}

Retorna: Informações abrangentes do jogo incluindo toda a mídia disponível (capturas de tela, capas, rodas, marquees, vídeos, fanarts, caixas, cartuchos, mapas).

Desenvolvimento

Scripts

  • npm run build - Compilar TypeScript para JavaScript
  • npm start - Executar o servidor compilado
  • npm run dev - Compilar e executar em um único comando

Estrutura do Projeto

game-encyclopedia-mcp-server/
├── src/
│   ├── index.ts           # Main server entry point
│   ├── config.ts          # Configuration management
│   ├── types.ts           # TypeScript type definitions
│   └── tools/
│       ├── steam.ts       # Steam API integration
│       ├── steamgrid.ts   # SteamGridDB API integration
│       ├── screenscraper.ts # ScreenScraper API integration
│       └── unified.ts     # Unified search tool implementation
├── package.json
├── tsconfig.json
└── .env.example

Solução de Problemas

"Erro de configuração" na inicialização

Certifique-se de ter criado um arquivo .env com chaves de API válidas:

  • Verifique se .env existe na raiz do projeto
  • Confirme se STEAMGRIDDB_API_KEY está definido
  • Garanta que não há aspas ao redor das chaves no arquivo .env

Erros de "Jogo não encontrado"

  • Para SteamGridDB: Certifique-se de que o ID do jogo é do SteamGridDB, não da Steam

Nenhum recurso visual retornado

Alguns jogos podem não ter todos os tipos de recursos disponíveis. O servidor retorna apenas os recursos que existem no SteamGridDB.

Licença

MIT