Metacritic
Pesquise filmes, séries e jogos no Metacritic, leia pontuações e críticas de especialistas. Sem chave de API.
Documentação
mcp-metacritic
O Metacritic reúne o que críticos e público disseram sobre filmes, séries de televisão e jogos eletrônicos. Cada entrada traz o ano, a classificação etária, os gêneros e duas notas próprias: o Metascore, uma média ponderada das resenhas profissionais, e a nota do usuário, de zero a dez, dada pelas pessoas que se cadastraram para avaliar. Abaixo de cada entrada estão as próprias resenhas, com a publicação que as veiculou e o trecho citado.
Este servidor conecta um cliente de chat a esse catálogo. Você pode pesquisar um título, ler sua entrada com notas e detalhes, navegar por um catálogo por nota, novidade ou popularidade, e ler as resenhas de um título, filtradas por crítico ou público e por quão favoráveis foram. Não exige chave de API nem conta.
Instalação
Instalação em um clique
Claude Code
claude mcp add metacritic -- npx -y mcp-metacritic
Claude Desktop, Cursor e qualquer cliente que use o formato de configuração padrão
{
"mcpServers": {
"metacritic": {
"command": "npx",
"args": ["-y", "mcp-metacritic"]
}
}
}
É necessário Node 24 ou posterior, e nenhuma variável de ambiente precisa ser definida.
Com Docker
{
"mcpServers": {
"metacritic": {
"command": "docker",
"args": ["run", "-i", "--rm", "ghcr.io/smeet666/mcp-metacritic:2.0.1"]
}
}
}
-i mantém o stdin aberto, que é por onde o protocolo trafega, e -t fica de fora
porque um TTY reescreve o fluxo. O contêiner precisa de HTTPS de saída para
backend.metacritic.com, e nada mais: sem volume, sem porta, sem credencial.
Pacote, sem npm
Baixe mcp-metacritic-2.0.1.mcpb de
a versão mais recente
e abra-o. Um cliente que suporte pacotes MCP o instala por conta própria, sem
npm e sem arquivo de configuração para editar. O pacote carrega suas dependências,
então nada é baixado na instalação.
O que você pode perguntar
- "O que os críticos acharam de Matrix?"
- "Leia algumas resenhas negativas desse jogo."
- "Quais são os filmes de terror mais bem avaliados?"
- "Como a nota do usuário se compara ao Metascore?"
- "O que foi lançado recentemente e foi bem avaliado?"
O caminho comum vai de uma pesquisa a uma entrada: uma linha carrega um slug e um
kind, e get_title e get_reviews aceitam ambos juntos.
Ferramentas
| Ferramenta | O que faz |
|---|---|
search_titles | Encontra filmes, séries e jogos por título. |
get_title | Lê uma entrada, suas notas e seus detalhes. |
get_reviews | Lê as resenhas de uma entrada, por fonte e por sentimento. |
browse_titles | Lista um catálogo por nota, novidade ou popularidade. |
Um título é identificado pelo seu slug junto com seu kind, já que o mesmo slug
pode nomear um filme e um jogo.
search_titles
Encontra filmes, séries e jogos por título.
| Argumento | Tipo | Obrigatório | O que faz |
|---|---|---|---|
query | string, pelo menos 1 caractere | sim | Um título, ou parte dele. |
kind | movie, show, game ou any, padrão any | não | Qual catálogo pesquisar. |
limit | inteiro, 1 a 50, padrão 10 | não | Linhas a retornar. |
Em retorno: linhas com slug e kind, que get_title e
get_reviews aceitam juntos; title; year; release_date; rating, a classificação
etária como publicada; metascore; user_score; e source_url. Uma nota que o
site não calculou é null, nunca 0: em uma escala que começa em zero, os
dois seriam indistinguíveis, e um título com poucas resenhas não carrega nenhuma.
get_title
Lê uma entrada. As partes mais pesadas são solicitadas em vez de retornadas por padrão, e cada uma além do padrão custa uma requisição.
| Argumento | Tipo | Obrigatório | O que faz |
|---|---|---|---|
slug | string, pelo menos 1 caractere | sim | O identificador que uma linha carrega. |
kind | movie, show ou game | sim | A qual catálogo pertence. |
sections | array de basic, scores, awards, production, networks, where_to_watch, padrão ["basic", "scores"] | não | Quais partes retornar. |
max_chars | inteiro, 200 a 20000, padrão 4000 | não | Quanto da descrição retornar. |
offset | inteiro, 0 ou mais, padrão 0 | não | Onde retomar a descrição. |
Em retorno: a entrada que uma linha de pesquisa carrega, mais description, tagline,
genres, duration_minutes e imdb_id, cada um null quando a página não informa
nada. total_chars, returned_chars e offset descrevem o trecho da
descrição retornado.
get_reviews
Lê as resenhas de uma entrada.
| Argumento | Tipo | Obrigatório | O que faz |
|---|---|---|---|
slug | string, pelo menos 1 caractere | sim | O identificador que uma linha carrega. |
kind | movie, show ou game | sim | A qual catálogo pertence. |
source | critic ou user, padrão critic | não | De quem ler as resenhas. |
sentiment | all, positive, neutral ou negative, padrão all | não | Quão favorável uma resenha precisa ser. |
limit | inteiro, 1 a 50, padrão 10 | não | Resenhas a retornar. |
offset | inteiro, 0 ou mais, padrão 0 | não | Resenhas a pular, para paginação. |
Em retorno: reviews, cada uma com seu quote como publicado, seu score, o
max sobre o qual essa nota é calculada, que é 100 para um crítico e 10 para um usuário, e a
publication que a veiculou. Nomeie a publicação ao citar uma resenha.
total_available conta as resenhas que correspondem à fonte e ao sentimento
solicitados, e next_offset continua.
browse_titles
Lista um catálogo.
| Argumento | Tipo | Obrigatório | O que faz |
|---|---|---|---|
kind | movie, show ou game, padrão movie | não | Qual catálogo listar. |
sort | score, recent ou popular, padrão score | não | Como as linhas são ordenadas. |
genre | string | não | Um único nome de gênero, como Horror. |
limit | inteiro, 1 a 50, padrão 20 | não | Linhas a retornar. |
offset | inteiro, 0 ou mais, padrão 0 | não | Linhas a pular, para paginação. |
Em retorno: as linhas que search_titles retorna, com total_available,
offset, next_offset e o kind, sort e genre sob os quais a listagem foi lida.
Duas notas, duas coisas medidas
O Metascore é uma média ponderada das resenhas profissionais, de 0 a 100. A nota
do usuário é a média do que os membros registrados deram, de 0 a 10. Elas medem
populações diferentes em escalas diferentes, e um título pode ter uma e não a
outra. Leia cada uma com o max que suas resenhas informam, e relate uma nota ausente como
ausente.
Configuração
Toda variável é opcional. Defina-as no bloco env da configuração do seu cliente.
| Variável | Padrão | O que faz |
|---|---|---|
MC_USER_AGENT | a identidade do projeto | Nomeia seu aplicativo para o site, com um endereço onde uma pessoa pode ser contatada. |
MC_MIN_INTERVAL_MS | 1000 | Intervalo entre duas requisições, de 500 a 60000. |
MC_TIMEOUT_MS | 15000 | Prazo para uma requisição, de 1000 a 120000. |
MC_MAX_RETRIES | 3 | Tentativas após uma falha transitória, de 0 a 10. |
MC_CACHE_TTL_MS | 86400000 | Por quanto tempo uma entrada de catálogo fica na memória, de 0 a 604800000. |
MC_SCORES_CACHE_TTL_MS | 3600000 | Por quanto tempo notas e resenhas ficam na memória, de 0 a 86400000. |
MC_CACHE_MAX_ENTRIES | 200 | Respostas mantidas na memória de uma vez, de 0 a 10000. |
MC_LOG_LEVEL | error | silent, error, info ou debug, escritos em stderr. |
As notas mudam conforme as resenhas chegam, especialmente perto de um lançamento, então são mantidas por uma hora, enquanto uma entrada de catálogo é mantida por um dia. Um valor fora do intervalo cai para o padrão, e o motivo é escrito em stderr.
Erros
Toda falha carrega um de seis códigos, uma mensagem e, quando ajuda, uma dica indicando o próximo passo.
| Código | O que aconteceu | O que fazer |
|---|---|---|
not_found | O site respondeu e não possui tal entrada. | Verifique o slug e o tipo com search_titles. |
invalid_input | Os argumentos foram recusados antes de qualquer requisição ser enviada. | Leia a mensagem, que nomeia o argumento. |
rate_limited | O site pediu que este cliente diminuísse o ritmo. | Aguarde o número de segundos que a dica indica e chame novamente com os mesmos argumentos. A entrada ainda está lá. |
parse_failure | A resposta chegou em um formato que este cliente não consegue ler. | Reporte em o rastreador de problemas. |
network_error | A requisição não foi concluída. | Tente novamente em breve. |
timeout | A requisição passou do prazo. | Aumente MC_TIMEOUT_MS, ou peça menos linhas. |
Como biblioteca
A camada que lê o site é publicada separadamente, com seu ritmo, seu cache e seus erros, e sem protocolo anexado.
import { McClient } from "mcp-metacritic/client";
const client = new McClient();
const { data, cached } = await client.getTitle({ slug: "the-matrix", kind: "movie" });
console.log(data.title, data.metascore, cached);
Cada leitura responde com { data, cached }, e lança um erro carregando um dos seis
códigos. O intervalo mínimo entre duas requisições também se aplica aqui.
Ritmo e atribuição
As requisições saem uma de cada vez com pelo menos um segundo entre elas, e o
intervalo de meio segundo se mantém independentemente de como o servidor está configurado. O User-Agent sempre
termina com a identidade do projeto e um endereço onde uma pessoa pode ser contatada.
Cada resultado carrega o endereço da página do Metacritic, e cada crítica citada carrega a publicação que a veiculou. As críticas pertencem aos seus autores e às publicações que as veicularam.
Este servidor MCP é um projeto não oficial, sem afiliação com o Metacritic.
Privacidade
Este servidor não coleta nada sobre você e não envia nada ao seu autor. Ele roda
na sua máquina, contata backend.metacritic.com e nada mais, mantém suas
respostas em memória enquanto roda e não grava nada em disco.
PRIVACY.md declara o que uma requisição carrega e quais configurações alteram
qualquer parte disso.
Desenvolvimento
npm install
npm run build:fixtures
npm test
npm run check
Os testes rodam contra fixtures geradas e não fazem nenhuma requisição de rede. A suíte ao vivo,
npm run test:live, faz uma requisição por rota e roda diariamente contra o
próprio site.
Contribuindo
Bugs, perguntas e ideias pertencem ao rastreador de problemas. Pull requests são bem-vindos; abrir um problema primeiro ajuda a concordar sobre a forma da mudança. Veja CONTRIBUTING.md.
Licença
MIT, veja LICENSE. As pontuações e as críticas pertencem ao Metacritic e às publicações que ele cita.
mcp-metacritic (francês)
Metacritic reúne o que a crítica e o público disseram sobre filmes, séries e jogos de vídeo. Cada ficha traz o ano, a classificação etária, os gêneros e duas notas que lhe são próprias: o Metascore, média ponderada das críticas profissionais, e a nota dos usuários, de zero a dez, dada pelos inscritos. Abaixo de cada ficha estão as próprias críticas, com a publicação que as assinou e a frase citada.
Este servidor conecta um cliente de conversa a esse catálogo. Pode-se buscar um título, ler sua ficha com suas notas e detalhes, percorrer um catálogo por nota, por novidade ou por popularidade, e ler as críticas de um título, filtradas por fonte e por tom. Nenhuma chave de API, nenhuma conta.
Instalação
Instalação em um clique
Claude Code
claude mcp add metacritic -- npx -y mcp-metacritic
Claude Desktop, Cursor e qualquer cliente no formato de configuração padrão
{
"mcpServers": {
"metacritic": {
"command": "npx",
"args": ["-y", "mcp-metacritic"]
}
}
}
Node 24 ou mais recente é necessário, e nenhuma variável de ambiente precisa ser preenchida.
Com Docker
{
"mcpServers": {
"metacritic": {
"command": "docker",
"args": ["run", "-i", "--rm", "ghcr.io/smeet666/mcp-metacritic:2.0.1"]
}
}
}
-i mantém a entrada padrão aberta, que é o canal do protocolo, e -t é
omitido porque um TTY reescreve o fluxo. O contêiner precisa de acesso HTTPS
de saída para backend.metacritic.com, e de nada mais: nenhum volume, nenhuma
porta, nenhum identificador.
Bundle, sem npm
Baixe mcp-metacritic-2.0.1.mcpb de
a última publicação
e abra-o. Um cliente que gerencia bundles MCP o instala sozinho, sem npm e
sem arquivo de configuração para modificar. O bundle carrega suas dependências, portanto
nada é baixado na instalação.
O que se pode pedir
- « O que a crítica achou de Matrix? »
- « Leia algumas críticas negativas deste jogo. »
- « Quais são os filmes de terror mais bem avaliados? »
- « Como a nota do público se compara ao Metascore? »
- « O que saiu recentemente que foi bem recebido? »
O caminho comum vai de uma busca a uma ficha: uma linha carrega um slug e
um kind, e get_title como get_reviews retomam os dois juntos.
As ferramentas
| Ferramenta | O que faz |
|---|---|
search_titles | Encontra filmes, séries e jogos pelo título. |
get_title | Lê uma ficha, suas notas e detalhes. |
get_reviews | Lê as críticas de uma ficha, por fonte e por tom. |
browse_titles | Lista um catálogo por nota, por novidade ou por popularidade. |
Um título é endereçado pelo seu slug acompanhado do seu kind, um mesmo slug podendo
nomear um filme e um jogo.
search_titles
Encontra filmes, séries e jogos pelo título.
| Argumento | Tipo | Obrigatório | O que faz |
|---|---|---|---|
query | string, pelo menos 1 caractere | sim | Um título, ou uma parte. |
kind | movie, show, game ou any, padrão any | não | O catálogo onde buscar. |
limit | inteiro, 1 a 50, padrão 10 | não | Linhas a servir. |
Em retorno: linhas carregando slug e kind, que get_title e
get_reviews retomam juntos; title; year; release_date; rating,
a classificação etária tal como publicada; metascore; user_score; e
source_url. Uma nota que o site não calculou vale null, nunca 0:
numa escala que começa em zero, os dois seriam indistinguíveis, e um título
com poucas críticas não carrega nenhuma.
get_title
Lê uma ficha. As partes pesadas são pedidas em vez de serem servidas por padrão, e cada uma além do padrão custa uma requisição.
| Argumento | Tipo | Obrigatório | O que faz |
|---|---|---|---|
slug | string, pelo menos 1 caractere | sim | O identificador de uma linha. |
kind | movie, show ou game | sim | O catálogo ao qual pertence. |
sections | array de basic, scores, awards, production, networks, where_to_watch, padrão ["basic", "scores"] | não | As partes a render. |
max_chars | inteiro, 200 a 20000, padrão 4000 | não | O comprimento da descrição a servir. |
offset | inteiro, 0 ou mais, padrão 0 | não | Onde retomar a descrição. |
Em retorno: a ficha que uma linha de busca carrega, mais description,
tagline, genres, duration_minutes e imdb_id, cada um null onde a página
não indica nada. total_chars, returned_chars e offset descrevem a faixa
de descrição servida.
get_reviews
Lê as críticas de uma ficha.
| Argumento | Tipo | Obrigatório | O que faz |
|---|---|---|---|
slug | string, pelo menos 1 caractere | sim | O identificador de uma linha. |
kind | movie, show ou game | sim | O catálogo ao qual pertence. |
source | critic ou user, padrão critic | não | De quem ler as críticas. |
sentiment | all, positive, neutral ou negative, padrão all | não | O tom exigido de uma crítica. |
limit | inteiro, 1 a 50, padrão 10 | não | Críticas a servir. |
offset | inteiro, 0 ou mais, padrão 0 | não | Críticas a pular, para paginar. |
Em retorno: reviews, cada uma com sua quote tal como publicada, seu
score, o max sobre o qual essa nota é dada, que vale 100 para um crítico
e 10 para um usuário, e a publication que a assinou. Nomeie a
publicação ao citar uma crítica. total_available conta as
críticas correspondentes à fonte e ao tom pedidos, e next_offset
continua.
browse_titles
Lista um catálogo.
| Argumento | Tipo | Obrigatório | O que faz |
|---|---|---|---|
kind | movie, show ou game, padrão movie | não | O catálogo a listar. |
sort | score, recent ou popular, padrão score | não | A ordem das linhas. |
genre | string | não | Um único nome de gênero, como Horror. |
limit | inteiro, 1 a 50, padrão 20 | não | Linhas a servir. |
offset | inteiro, 0 ou mais, padrão 0 | não | Linhas a pular, para paginar. |
Em retorno: as linhas que search_titles retorna, com total_available, | |||
offset, next_offset e os kind, sort e genre sob os quais a lista foi | |||
| lida. |
Duas notas, duas coisas medidas
O Metascore é uma média ponderada das críticas profissionais, de 0 a 100. A
nota dos usuários é a média do que deram os membros registrados, de 0 a 10. Elas medem populações diferentes em escalas diferentes, e
um título pode ter uma sem a outra. Leia cada uma com o max que suas
críticas indicam, e reporte uma nota ausente como ausente.
Configuração
Cada variável é opcional. Elas ficam no bloco env da
configuração do cliente.
| Variável | Padrão | O que ela faz |
|---|---|---|
MC_USER_AGENT | a identidade do projeto | Nomeia seu aplicativo junto ao site, com um endereço para contatar uma pessoa. |
MC_MIN_INTERVAL_MS | 1000 | Intervalo entre duas requisições, de 500 a 60000. |
MC_TIMEOUT_MS | 15000 | Tempo limite de uma requisição, de 1000 a 120000. |
MC_MAX_RETRIES | 3 | Tentativas após uma falha temporária, de 0 a 10. |
MC_CACHE_TTL_MS | 86400000 | Duração durante a qual uma ficha permanece em memória, de 0 a 604800000. |
MC_SCORES_CACHE_TTL_MS | 3600000 | Duração durante a qual as notas e críticas permanecem em memória, de 0 a 86400000. |
MC_CACHE_MAX_ENTRIES | 200 | Respostas mantidas em memória por vez, de 0 a 10000. |
MC_LOG_LEVEL | error | silent, error, info ou debug, escrito na saída de erro. |
As notas mudam conforme as críticas, especialmente em torno de um lançamento, então elas são mantidas por uma hora, enquanto uma ficha é mantida por um dia. Um valor fora de sua faixa cai no padrão, e o motivo é escrito na saída de erro.
Erros
Cada falha tem um dos seis códigos, uma mensagem e, quando ajuda, uma indicação do próximo passo.
| Código | O que aconteceu | O que fazer |
|---|---|---|
not_found | O site respondeu e não tem essa ficha. | Verifique o slug e o tipo com search_titles. |
invalid_input | Os argumentos foram recusados antes de qualquer requisição. | Leia a mensagem, que nomeia o argumento. |
rate_limited | O site pede que este cliente desacelere. | Aguarde os segundos indicados e chame novamente com os mesmos argumentos. A ficha ainda está lá. |
parse_failure | A resposta chegou em um formato ilegível aqui. | Reporte em o rastreador de incidentes. |
network_error | A requisição não foi concluída. | Tente novamente em breve. |
timeout | A requisição excedeu seu tempo limite. | Aumente MC_TIMEOUT_MS, ou peça menos linhas. |
Como biblioteca
A camada que lê o site é publicada separadamente, com seu ritmo, seu cache e seus erros, sem protocolo anexado.
import { McClient } from "mcp-metacritic/client";
const client = new McClient();
const { data, cached } = await client.getTitle({ slug: "the-matrix", kind: "movie" });
console.log(data.title, data.metascore, cached);
Cada leitura responde { data, cached }, e levanta um erro com um dos seis
códigos. O piso entre duas requisições também se aplica aqui.
Ritmo e atribuição
As requisições saem uma a uma com pelo menos um segundo entre elas, e o
piso de meio segundo se aplica independentemente da configuração. O
User-Agent sempre termina com a identidade do projeto e um endereço para
contatar uma pessoa.
Cada resultado traz o endereço da página do Metacritic, e cada crítica citada traz a publicação que a assinou. As críticas pertencem aos seus autores e às publicações que as publicaram.
Este MCP é um projeto não oficial, sem afiliação com a Metacritic.
Privacidade
Este servidor não coleta nada sobre você e não envia nada ao seu autor. Ele roda na
sua máquina, junta apenas backend.metacritic.com, mantém suas respostas em
memória enquanto roda, e não grava nada no disco.
PRIVACY.md diz o que uma requisição leva e quais ajustes mudam
isso.
Desenvolvimento
npm install
npm run build:fixtures
npm test
npm run check
Os testes rodam em fixtures geradas e não emitem nenhuma requisição.
A suíte ao vivo, npm run test:live, emite uma requisição por rota e roda
todas as noites contra o próprio site.
Contribuindo
Anomalias, perguntas e ideias têm seu lugar em o rastreador de incidentes. Propostas de modificação são bem-vindas; abrir um ticket primeiro ajuda a alinhar a forma da mudança. Veja CONTRIBUTING.md.
Licença
MIT, veja LICENSE. As notas e as críticas pertencem à Metacritic e às publicações que ela cita.