Mcp Metacritic

io.github.smeet666由 GitHub 帳號 smeet666 發布v2.1.0更新於 Nov 3, 2026

Search Metacritic films, shows and games, read scores and critic reviews. No API key.

概覽

AI 產生的概覽

非官方 Metacritic 伺服器,讓助理搜尋電影、影集和遊戲,讀取 Metascore 與使用者評分,並查看影評人或使用者評論。

可以做什麼
  • 依標題搜尋電影、影集和遊戲,回傳 slug、類型、年份、分級和 Metascore
  • 讀取單筆項目的詳情、評分、獎項、製作資訊、播出平台和觀看管道
  • 讀取某項目的影評人或使用者評論,可依褒貶篩選並分頁
  • 依評分、上映日期或熱門度瀏覽片單,可依單一類型篩選
適用情境
適合讓助理回答電影、影集或遊戲的媒體評價與觀眾評價問題、引用評論,或列出高分、最新、目前熱門的作品,而不必離開對話。
執行需求
以 stdio 在本機執行;npm 套件需 Node 24 或更新版本,也可用 MCP 安裝包或 Docker,並需能連線 backend.metacritic.com 的外送 HTTPS。不需 API 金鑰或帳號。選用環境變數如 MC_USER_AGENT、MC_MIN_INTERVAL_MS、MC_TIMEOUT_MS、MC_LOG_LEVEL 可調整請求間隔、逾時和記錄。
安裝前請注意
非官方專案,與 Metacritic 無關聯;它抓取該站後端,因此結果可能失效或被限流。請求只送往 backend.metacritic.com,不寫入磁碟。引用的評論歸作者和刊載媒體所有,伺服器要求引用評分或評論時標明媒體並註明 Metacritic。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Mcp Metacritic,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

mcp-metacritic

[npm] [CI] [license] [MCP Registry] [Glama] [M8ven] [LobeHub] [Install in Cursor] [Install in VS Code]

Metacritic gathers what critics and audiences said about films, television series and video games. Each entry carries the year, the age rating, the genres, and two scores of its own: the Metascore, a weighted average of the professional reviews, and the user score, out of ten, from the people who signed up to rate it. Under each entry sit the reviews themselves, with the publication that ran them and the quoted line.

This server connects a chat client to that catalogue. You can search for a title, read its entry with its scores and its details, browse a catalogue by score, recency or popularity, and read the reviews of one title, filtered by critic or audience and by how favourable they were. It needs no API key and no account.

Version française


Install

One-click install

[Install in Cursor] [Install in VS Code]

Claude Code

bash
claude mcp add metacritic -- npx -y mcp-metacritic

Claude Desktop, Cursor, and any client using the standard config format

json
{  "mcpServers": {    "metacritic": {      "command": "npx",      "args": ["-y", "mcp-metacritic"]    }  }}

Node 24 or later is required, and no environment variable has to be set.

With Docker

json
{  "mcpServers": {    "metacritic": {      "command": "docker",      "args": ["run", "-i", "--rm", "ghcr.io/smeet666/mcp-metacritic:2.1.0"]    }  }}

-i keeps stdin open, which is where the protocol travels, and -t is left out because a TTY rewrites the stream. The container needs outbound HTTPS to backend.metacritic.com, and nothing else: no volume, no port, no credential.

Bundle, without npm

Download mcp-metacritic-2.1.0.mcpb from the latest release and open it. A client that supports MCP bundles installs it on its own, with no npm and no configuration file to edit. The bundle carries its dependencies, so nothing is fetched at install time.

What you can ask

  • "What did critics make of The Matrix?"
  • "Read me a few negative reviews of that game."
  • "What are the best-reviewed horror films?"
  • "How does the user score compare to the Metascore?"
  • "What came out recently that reviewed well?"

The ordinary path runs from a search to an entry: a row carries a slug and a kind, and get_title and get_reviews take both together.

Tools

ToolWhat it does
search_titlesFinds films, series and games by title.
get_titleReads one entry, its scores and its details.
get_reviewsReads the reviews of one entry, by source and by sentiment.
browse_titlesLists a catalogue by score, recency or popularity.

A title is addressed by its slug together with its kind, since the same slug can name a film and a game.

search_titles

Finds films, series and games by title.

ArgumentTypeRequiredWhat it does
querystring, at least 1 characteryesA title, or part of one.
kindmovie, show, game or any, default anynoWhich catalogue to search.
limitinteger, 1 to 50, default 10noRows to serve.

In return: rows carrying slug and kind, which get_title and get_reviews take together; title; year; release_date; rating, the age rating as published; metascore; user_score, which the search route publishes for no row and which is null on every one of them; and source_url. A score the site has not computed is null, never 0: on a scale that starts at zero the two would be indistinguishable, and a title with too few reviews carries none.

get_title

Reads one entry. The heavier parts are asked for rather than served by default, and each one beyond the default costs a request.

ArgumentTypeRequiredWhat it does
slugstring, at least 1 characteryesThe identifier a row carries.
kindmovie, show or gameyesWhich catalogue it belongs to.
sectionsarray of basic, scores, awards, production, networks, where_to_watch, default ["basic", "scores"]noWhich parts to return.
max_charsinteger, 200 to 20000, default 4000noHow much of the description to serve.
offsetinteger, 0 or more, default 0noWhere to resume the description.

In return: the entry a search row carries, plus description, tagline, genres, duration_minutes and imdb_id, each null where the page states nothing. total_chars, returned_chars and offset describe the slice of the description served.

get_reviews

Reads the reviews of one entry.

ArgumentTypeRequiredWhat it does
slugstring, at least 1 characteryesThe identifier a row carries.
kindmovie, show or gameyesWhich catalogue it belongs to.
sourcecritic or user, default criticnoWhose reviews to read.
sentimentall, positive, neutral or negative, default allnoHow favourable a review has to be.
limitinteger, 1 to 50, default 10noReviews to serve.
offsetinteger, 0 or more, default 0noReviews to skip, for paging.

In return: reviews, each with its quote as published, its score, the max that score is out of, which is 100 for a critic and 10 for a user, and the publication that ran it. Name the publication when quoting a review. total_available counts every review Metacritic holds from that source for the entry, whatever sentiment was asked for, since the sentiment sorts the sample this server received rather than the request that fetched it. next_offset continues.

browse_titles

Lists a catalogue.

ArgumentTypeRequiredWhat it does
kindmovie, show or game, default movienoWhich catalogue to list.
sortscore, recent or popular, default scorenoHow the rows are ordered.
genrestringnoA single genre name, such as Horror.
limitinteger, 1 to 50, default 20noRows to serve.
offsetinteger, 0 or more, default 0noRows to skip, for paging.

In return: the rows search_titles returns, with total_available, offset, next_offset and the kind, sort and genre the listing was read under.

Two scores, two things measured

The Metascore is a weighted average of professional reviews, out of 100. The user score is the average of what registered members gave, out of 10. They measure different populations on different scales, and a title can carry one and not the other. Read each with the max its reviews state, and report a missing score as missing.

Configuration

Every variable is optional. Set them in the env block of your client config.

VariableDefaultWhat it does
MC_USER_AGENTthe project identityNames your application to the site, with an address where a person can be reached.
MC_MIN_INTERVAL_MS1000Gap between two requests, from 500 to 60000.
MC_TIMEOUT_MS15000Deadline for one request, from 1000 to 120000.
MC_MAX_RETRIES3Attempts after a transient failure, from 0 to 10.
MC_CACHE_TTL_MS86400000How long a catalogue entry stays in memory, from 0 to 604800000.
MC_SCORES_CACHE_TTL_MS3600000How long scores and reviews stay in memory, from 0 to 86400000.
MC_CACHE_MAX_ENTRIES200Answers held in memory at once, from 0 to 10000.
MC_LOG_LEVELerrorsilent, error, info or debug, written to stderr.

Scores move as reviews come in, especially around a release, so they are held for an hour where a catalogue entry is held for a day. A value outside its range falls back to the default, and the reason is written to stderr.

Errors

Every failure carries one of six codes, a message, and where it helps a hint naming the next move.

CodeWhat happenedWhat to do
not_foundThe site answered, and holds no such entry.Check the slug and the kind with search_titles.
invalid_inputThe arguments were refused before any request went out.Read the message, which names the argument.
rate_limitedThe site asked this client to slow down.Wait the number of seconds the hint names and call again with the same arguments. The entry is still there.
parse_failureThe answer arrived in a shape this client cannot read.Report it at the issue tracker.
network_errorThe request did not complete.Try again shortly.
timeoutThe request passed its deadline.Raise MC_TIMEOUT_MS, or ask for fewer rows.

As a library

The layer reading the site is published on its own, with its pacing, its cache and its errors, and with no protocol attached.

ts
import { McClient } from "mcp-metacritic/client";
const client = new McClient();const { data, cached } = await client.getDetail("movie", "the-matrix");console.log(data.title, data.metascore, cached);

Each read answers { data, cached }, and throws an error carrying one of the six codes. The floor between two requests holds here as well.

Pacing and attribution

Requests go out one at a time with at least a second between them, and the floor of half a second holds however the server is configured. The User-Agent always ends with the project identity and an address where a person can be reached.

Every result carries the address of the Metacritic page, and every quoted review carries the publication that ran it. The reviews belong to their authors and to the publications that ran them.

This MCP server is an unofficial project, with no affiliation to Metacritic.

Privacy

This server collects nothing about you and sends nothing to its author. It runs on your machine, contacts backend.metacritic.com and nothing else, holds its answers in memory while it runs, and writes nothing to disk. PRIVACY.md states what a request carries and which settings change any of it.

Development

bash
npm installnpm run build:fixturesnpm testnpm run check

Tests run against generated fixtures and make no network request. The live suite, npm run test:live, makes one request per route and runs nightly against the site itself.

Contributing

Bugs, questions and ideas belong in the issue tracker. Pull requests are welcome; opening an issue first helps agree on the shape of the change. See CONTRIBUTING.md.

License

MIT, see LICENSE. The scores and the reviews belong to Metacritic and to the publications it quotes.


mcp-metacritic (français)

English version

Metacritic rassemble ce que la critique et le public ont dit des films, des séries et des jeux vidéo. Chaque fiche porte l'année, la classification par âge, les genres, et deux notes qui lui sont propres : le Metascore, moyenne pondérée des critiques professionnelles, et la note des utilisateurs, sur dix, donnée par les inscrits. Sous chaque fiche se trouvent les critiques elles-mêmes, avec la publication qui les a signées et la phrase citée.

Ce serveur relie un client de conversation à ce catalogue. On peut y chercher un titre, lire sa fiche avec ses notes et ses détails, parcourir un catalogue par note, par fraîcheur ou par popularité, et lire les critiques d'un titre, filtrées par source et par tonalité. Aucune clé d'API, aucun compte.

Installation

Installation en un clic

[Install in Cursor] [Install in VS Code]

Claude Code

bash
claude mcp add metacritic -- npx -y mcp-metacritic

Claude Desktop, Cursor, et tout client au format de configuration standard

json
{  "mcpServers": {    "metacritic": {      "command": "npx",      "args": ["-y", "mcp-metacritic"]    }  }}

Node 24 ou plus récent est nécessaire, et aucune variable d'environnement n'est à renseigner.

Avec Docker

json
{  "mcpServers": {    "metacritic": {      "command": "docker",      "args": ["run", "-i", "--rm", "ghcr.io/smeet666/mcp-metacritic:2.1.0"]    }  }}

-i garde l'entrée standard ouverte, qui est le canal du protocole, et -t est omis parce qu'un TTY réécrit le flux. Le conteneur a besoin d'un accès HTTPS sortant vers backend.metacritic.com, et de rien d'autre : aucun volume, aucun port, aucun identifiant.

Bundle, sans npm

Téléchargez mcp-metacritic-2.1.0.mcpb depuis la dernière publication et ouvrez-le. Un client qui gère les bundles MCP l'installe seul, sans npm et sans fichier de configuration à modifier. Le bundle emporte ses dépendances, donc rien n'est téléchargé à l'installation.

Ce qu'on peut demander

  • « Qu'a pensé la critique de Matrix ? »
  • « Lis-moi quelques critiques négatives de ce jeu. »
  • « Quels sont les films d'horreur les mieux notés ? »
  • « Comment la note du public se compare-t-elle au Metascore ? »
  • « Qu'est-il sorti récemment qui a été bien reçu ? »

Le chemin ordinaire va d'une recherche à une fiche : une ligne porte un slug et un kind, et get_title comme get_reviews reprennent les deux ensemble.

Les outils

OutilCe qu'il fait
search_titlesTrouve des films, des séries et des jeux par leur titre.
get_titleLit une fiche, ses notes et ses détails.
get_reviewsLit les critiques d'une fiche, par source et par tonalité.
browse_titlesListe un catalogue par note, par fraîcheur ou par popularité.

Un titre s'adresse par son slug accompagné de son kind, un même slug pouvant nommer un film et un jeu.

search_titles

Trouve des films, des séries et des jeux par leur titre.

ArgumentTypeRequisCe qu'il fait
querychaîne, au moins 1 caractèreouiUn titre, ou une partie.
kindmovie, show, game ou any, défaut anynonLe catalogue où chercher.
limitentier, 1 à 50, défaut 10nonLignes à servir.

En retour : des lignes portant slug et kind, que get_title et get_reviews reprennent ensemble ; title ; year ; release_date ; rating, la classification par âge telle que publiée ; metascore ; user_score, que la route de recherche ne publie pour aucune ligne et qui y vaut null partout ; et source_url. Une note que le site n'a pas calculée vaut null, jamais 0 : sur une échelle qui commence à zéro les deux seraient indiscernables, et un titre avec trop peu de critiques n'en porte aucune.

get_title

Lit une fiche. Les parties lourdes se demandent au lieu d'être servies par défaut, et chacune au-delà du défaut coûte une requête.

ArgumentTypeRequisCe qu'il fait
slugchaîne, au moins 1 caractèreouiL'identifiant d'une ligne.
kindmovie, show ou gameouiLe catalogue dont il relève.
sectionstableau de basic, scores, awards, production, networks, where_to_watch, défaut ["basic", "scores"]nonLes parties à rendre.
max_charsentier, 200 à 20000, défaut 4000nonLa longueur de description à servir.
offsetentier, 0 ou plus, défaut 0nonOù reprendre la description.

En retour : la fiche que porte une ligne de recherche, plus description, tagline, genres, duration_minutes et imdb_id, chacun null là où la page n'indique rien. total_chars, returned_chars et offset décrivent la tranche de description servie.

get_reviews

Lit les critiques d'une fiche.

ArgumentTypeRequisCe qu'il fait
slugchaîne, au moins 1 caractèreouiL'identifiant d'une ligne.
kindmovie, show ou gameouiLe catalogue dont il relève.
sourcecritic ou user, défaut criticnonDe qui lire les critiques.
sentimentall, positive, neutral ou negative, défaut allnonLa tonalité exigée d'une critique.
limitentier, 1 à 50, défaut 10nonCritiques à servir.
offsetentier, 0 ou plus, défaut 0nonCritiques à sauter, pour paginer.

En retour : reviews, chacune avec sa quote telle que publiée, son score, le max sur lequel cette note est donnée, qui vaut 100 pour un critique et 10 pour un utilisateur, et la publication qui l'a signée. Nommez la publication quand vous citez une critique. total_available compte toutes les critiques que Metacritic tient de cette source pour cette fiche, quelle que soit la tonalité demandée, puisque la tonalité trie l'échantillon reçu et non la requête qui l'a cherché. next_offset poursuit.

browse_titles

Liste un catalogue.

ArgumentTypeRequisCe qu'il fait
kindmovie, show ou game, défaut movienonLe catalogue à lister.
sortscore, recent ou popular, défaut scorenonL'ordre des lignes.
genrechaînenonUn seul nom de genre, comme Horror.
limitentier, 1 à 50, défaut 20nonLignes à servir.
offsetentier, 0 ou plus, défaut 0nonLignes à sauter, pour paginer.

En retour : les lignes que rend search_titles, avec total_available, offset, next_offset et les kind, sort et genre sous lesquels la liste a été lue.

Deux notes, deux choses mesurées

Le Metascore est une moyenne pondérée des critiques professionnelles, sur 100. La note des utilisateurs est la moyenne de ce qu'ont donné les membres inscrits, sur 10. Elles mesurent des populations différentes sur des échelles différentes, et un titre peut porter l'une sans l'autre. Lisez chacune avec le max que ses critiques indiquent, et rapportez une note absente comme absente.

Configuration

Chaque variable est facultative. Elles se posent dans le bloc env de la configuration du client.

VariableDéfautCe qu'elle fait
MC_USER_AGENTl'identité du projetNomme votre application auprès du site, avec une adresse où joindre une personne.
MC_MIN_INTERVAL_MS1000Écart entre deux requêtes, de 500 à 60000.
MC_TIMEOUT_MS15000Délai d'une requête, de 1000 à 120000.
MC_MAX_RETRIES3Tentatives après un échec passager, de 0 à 10.
MC_CACHE_TTL_MS86400000Durée pendant laquelle une fiche reste en mémoire, de 0 à 604800000.
MC_SCORES_CACHE_TTL_MS3600000Durée pendant laquelle les notes et critiques restent en mémoire, de 0 à 86400000.
MC_CACHE_MAX_ENTRIES200Réponses gardées en mémoire à la fois, de 0 à 10000.
MC_LOG_LEVELerrorsilent, error, info ou debug, écrit sur la sortie d'erreur.

Les notes bougent au fil des critiques, surtout autour d'une sortie, donc elles sont gardées une heure là où une fiche l'est un jour. Une valeur hors de sa plage retombe sur le défaut, et la raison est écrite sur la sortie d'erreur.

Erreurs

Chaque échec porte un des six codes, un message, et quand cela aide une indication du geste suivant.

CodeCe qui s'est passéQue faire
not_foundLe site a répondu, et n'a pas cette fiche.Vérifiez le slug et le type avec search_titles.
invalid_inputLes arguments ont été refusés avant toute requête.Lisez le message, qui nomme l'argument.
rate_limitedLe site demande à ce client de ralentir.Attendez les secondes indiquées et rappelez avec les mêmes arguments. La fiche est toujours là.
parse_failureLa réponse est arrivée dans une forme illisible ici.Signalez-le sur le suivi d'incidents.
network_errorLa requête n'a pas abouti.Réessayez sous peu.
timeoutLa requête a dépassé son délai.Augmentez MC_TIMEOUT_MS, ou demandez moins de lignes.

Comme bibliothèque

La couche qui lit le site est publiée seule, avec son rythme, son cache et ses erreurs, sans protocole attaché.

ts
import { McClient } from "mcp-metacritic/client";
const client = new McClient();const { data, cached } = await client.getDetail("movie", "the-matrix");console.log(data.title, data.metascore, cached);

Chaque lecture répond { data, cached }, et lève une erreur portant un des six codes. Le plancher entre deux requêtes tient également ici.

Rythme et attribution

Les requêtes partent une à une avec au moins une seconde entre elles, et le plancher d'une demi-seconde tient quelle que soit la configuration. Le User-Agent se termine toujours par l'identité du projet et une adresse où joindre une personne.

Chaque résultat porte l'adresse de la page Metacritic, et chaque critique citée porte la publication qui l'a signée. Les critiques appartiennent à leurs auteurs et aux publications qui les ont publiées.

Ce MCP est un projet non officiel, sans affiliation à Metacritic.

Confidentialité

Ce serveur ne collecte rien sur vous et n'envoie rien à son auteur. Il tourne sur votre machine, ne joint que backend.metacritic.com, garde ses réponses en mémoire le temps qu'il tourne, et n'écrit rien sur le disque. PRIVACY.md dit ce qu'une requête emporte et quels réglages changent cela.

Développement

bash
npm installnpm run build:fixturesnpm testnpm run check

Les tests s'exécutent sur des fixtures engendrées et n'émettent aucune requête. La suite en direct, npm run test:live, émet une requête par route et tourne chaque nuit contre le site lui-même.

Contribuer

Les anomalies, les questions et les idées ont leur place dans le suivi d'incidents. Les propositions de modification sont bienvenues ; ouvrir un ticket d'abord aide à s'accorder sur la forme du changement. Voir CONTRIBUTING.md.

Licence

MIT, voir LICENSE. Les notes et les critiques appartiennent à Metacritic et aux publications qu'il cite.

來源:README.md,提交 ea45890

工具

4

search_titles

Search Metacritic

Search Metacritic for films, shows and games by title. Returns one compact row per match, carrying the critic Metascore, so a question about the critical verdict needs no second call. Search rows carry no audience score: use get_title for that, or browse_titles, which does return it. Use the slug and kind with get_title for the full entry, or with get_reviews for what critics wrote. There is no paging: 'limit' is the only lever, and results always start from the most relevant match. This searches titles only. It cannot find an entry from a plot detail, a person or a studio.

輸入參數kindlimitquery必填

get_title

Read an entry

Read one Metacritic entry by slug and kind, both from search_titles. Sections are opt-in because a full entry is large: 'basic' and 'scores' are the default and cover most questions. 'scores' fetches the critic and audience breakdowns, each with its own scale, so never compare the two numbers directly. Sections gate the payload: asking for 'scores' alone returns no description, and 'basic' alone returns no scores. 'networks' lists the broadcasters of a show; 'where_to_watch' costs an extra request and covers films and shows only. A long description paginates: when 'truncated' is true, call again with 'offset' set to 'next_offset'.

輸入參數kind必填slug必填offsetsectionsmax_chars

get_reviews

Read reviews

Read individual reviews of a Metacritic entry, from critics or from users. Get the slug and kind from search_titles first. Filter with 'sentiment' to read only what praised or panned it, which Metacritic groups itself. Metacritic returns a fixed sample rather than the full list, so 'total_available' is usually far larger than what comes back, and there is no way to page past the sample. Critic reviews carry the publication and a link to the original article: quote them with both. Critic scores run to 100 and user scores to 10, so do not average the two together.

輸入參數kind必填slug必填limitoffsetsourcesentiment

browse_titles

Browse rankings

List films, shows or games by score, by release date or by current popularity. Use this when there is no specific title to look up: best rated, newest, what people are looking at now. Filter by genre with a single name such as Horror, Comedy or Action. Sorting by score returns the all-time ranking, which is dominated by older titles: combine with a genre to narrow it. Scores come back on their own scales, 100 for critics and 10 for users. Paging is approximate: Metacritic does not order tied entries stably, so an entry can appear on two consecutive pages. Deduplicate by slug rather than counting rows.

輸入參數kindsortgenrelimitoffset

版本歷史

2
  1. v2.1.0最新Oct 29, 2026
  2. v2.0.1Sep 16, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分
  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分