mcp-metacritic 2.0.1 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/PRIVACY.md +25 -19
- package/README.md +19 -13
- package/dist/index.js +177 -79
- package/dist/index.js.map +1 -1
- package/dist/mc/client.d.ts +13 -3
- package/dist/mc/client.js +76 -26
- package/dist/mc/client.js.map +1 -1
- package/package.json +13 -12
- package/server.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2.1.0
|
|
4
|
+
|
|
5
|
+
- **Node.js 24.22.1 or later**, inside the Node.js 24 line. The package, the
|
|
6
|
+
extension manifest and the image all declare it.
|
|
7
|
+
- **zod `^4.6.7`.** Below 4.6.6, zod can exhaust memory while
|
|
8
|
+
validating oversized constrained collections, and the range accepts none of
|
|
9
|
+
those versions.
|
|
10
|
+
- **Dependency floors:** `@modelcontextprotocol/sdk` `^1.32.2`.
|
|
11
|
+
|
|
3
12
|
## 2.0.1
|
|
4
13
|
|
|
5
14
|
- **Every tool is documented, with its arguments and what its answer carries.**
|
package/PRIVACY.md
CHANGED
|
@@ -16,19 +16,21 @@ It needs no API key and no account, so there is no credential for it to hold and
|
|
|
16
16
|
|
|
17
17
|
## What leaves your machine, and where it goes
|
|
18
18
|
|
|
19
|
-
**
|
|
19
|
+
**1 host is contacted**, and nothing else.
|
|
20
20
|
|
|
21
21
|
| Host | What is read there |
|
|
22
22
|
| ------------------------ | ------------------ |
|
|
23
|
-
| `www.metacritic.com` | the site's pages |
|
|
24
23
|
| `backend.metacritic.com` | the site's own API |
|
|
25
24
|
|
|
25
|
+
`www.metacritic.com` appears in the links an answer carries, so a reader can open
|
|
26
|
+
the entry on the site. No request is sent there.
|
|
27
|
+
|
|
26
28
|
What a request carries:
|
|
27
29
|
|
|
28
30
|
| What | Why it is there |
|
|
29
31
|
| ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
|
|
30
32
|
| The question you asked | A search term or an identifier reaches the site as you wrote it. |
|
|
31
|
-
| A `User-Agent` | `mcp-metacritic
|
|
33
|
+
| A `User-Agent` | `mcp-metacritic v<version> (https://github.com/smeet666/mcp-metacritic)`, so the site can reach a person about the traffic it receives. |
|
|
32
34
|
| Your IP address | Sent by your network to any host you contact, as with any web request. |
|
|
33
35
|
|
|
34
36
|
Your requests reach Metacritic. What is done with them there is governed by that site's own privacy policy, which this project does not control.
|
|
@@ -56,11 +58,12 @@ becomes of them. `MC_LOG_LEVEL` governs how much is written and defaults to `err
|
|
|
56
58
|
|
|
57
59
|
## The settings that change any of this
|
|
58
60
|
|
|
59
|
-
| Variable
|
|
60
|
-
|
|
|
61
|
-
| `MC_USER_AGENT`
|
|
62
|
-
| `MC_CACHE_TTL_MS`
|
|
63
|
-
| `
|
|
61
|
+
| Variable | What it changes |
|
|
62
|
+
| ------------------------ | ---------------------------------------------------------------------------------------------------------------- |
|
|
63
|
+
| `MC_USER_AGENT` | Adds your own identifier in front of this project's, which stays appended so the site can always reach a person. |
|
|
64
|
+
| `MC_CACHE_TTL_MS` | How long a catalogue answer is held in memory. `0` turns that cache off. |
|
|
65
|
+
| `MC_SCORES_CACHE_TTL_MS` | How long a score or a review is held, which moves as reviews come in and so has a lifetime of its own. |
|
|
66
|
+
| `MC_LOG_LEVEL` | How much is written to stderr. |
|
|
64
67
|
|
|
65
68
|
## Children
|
|
66
69
|
|
|
@@ -91,19 +94,21 @@ Il ne demande ni clé d'API ni compte, donc il ne détient aucun identifiant et
|
|
|
91
94
|
|
|
92
95
|
## Ce qui quitte votre machine, et où cela va
|
|
93
96
|
|
|
94
|
-
**
|
|
97
|
+
**1 hôte est joint**, et rien d'autre.
|
|
98
|
+
|
|
99
|
+
| Hôte | Ce qui y est lu |
|
|
100
|
+
| ------------------------ | --------------- |
|
|
101
|
+
| `backend.metacritic.com` | l'API du site |
|
|
95
102
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
| `www.metacritic.com` | les pages du site |
|
|
99
|
-
| `backend.metacritic.com` | l'API du site |
|
|
103
|
+
`www.metacritic.com` figure dans les liens que porte une réponse, pour qu'un
|
|
104
|
+
lecteur ouvre la fiche sur le site. Aucune requête n'y est envoyée.
|
|
100
105
|
|
|
101
106
|
Ce qu'une requête emporte :
|
|
102
107
|
|
|
103
108
|
| Quoi | Pourquoi |
|
|
104
109
|
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
105
110
|
| La question posée | Un terme de recherche ou un identifiant atteint le site tel que vous l'avez écrit. |
|
|
106
|
-
| Un `User-Agent` | `mcp-metacritic
|
|
111
|
+
| Un `User-Agent` | `mcp-metacritic v<version> (https://github.com/smeet666/mcp-metacritic)`, pour que le site puisse joindre une personne au sujet du trafic qu'il reçoit. |
|
|
107
112
|
| Votre adresse IP | Transmise par votre réseau à tout hôte que vous joignez, comme pour n'importe quelle requête web. |
|
|
108
113
|
|
|
109
114
|
Vos requêtes atteignent Metacritic. Ce qui en est fait là-bas relève de la politique de confidentialité de ce site, que ce projet ne contrôle pas.
|
|
@@ -133,11 +138,12 @@ qu'ils deviennent. `MC_LOG_LEVEL` règle leur quantité et vaut `error` par déf
|
|
|
133
138
|
|
|
134
139
|
## Les réglages qui changent tout cela
|
|
135
140
|
|
|
136
|
-
| Variable
|
|
137
|
-
|
|
|
138
|
-
| `MC_USER_AGENT`
|
|
139
|
-
| `MC_CACHE_TTL_MS`
|
|
140
|
-
| `
|
|
141
|
+
| Variable | Ce qu'elle change |
|
|
142
|
+
| ------------------------ | ---------------------------------------------------------------------------------------------------------------------------- |
|
|
143
|
+
| `MC_USER_AGENT` | Ajoute votre identifiant devant celui du projet, qui reste accolé pour que le site puisse toujours joindre une personne. |
|
|
144
|
+
| `MC_CACHE_TTL_MS` | Combien de temps une réponse de catalogue est gardée en mémoire. `0` éteint ce cache. |
|
|
145
|
+
| `MC_SCORES_CACHE_TTL_MS` | Combien de temps une note ou une critique est gardée, ce qui bouge à mesure que les avis arrivent et a donc sa propre durée. |
|
|
146
|
+
| `MC_LOG_LEVEL` | La quantité écrite sur stderr. |
|
|
141
147
|
|
|
142
148
|
## Les enfants
|
|
143
149
|
|
package/README.md
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
[](https://registry.modelcontextprotocol.io/v0/servers?search=io.github.smeet666/mcp-metacritic)
|
|
7
7
|
[](https://glama.ai/mcp/servers/smeet666/mcp-metacritic)
|
|
8
8
|
[](https://m8ven.ai/mcp/smeet666-mcp-metacritic-1yvblv)
|
|
9
|
+
[](https://lobehub.com/mcp/smeet666-mcp-metacritic)
|
|
9
10
|
[](https://cursor.com/en/install-mcp?name=metacritic&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIm1jcC1tZXRhY3JpdGljIl19)
|
|
10
11
|
[](https://insiders.vscode.dev/redirect/mcp/install?name=metacritic&config=%7B%22name%22%3A%22metacritic%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22mcp-metacritic%22%5D%7D)
|
|
11
12
|
|
|
@@ -62,7 +63,7 @@ Node 24 or later is required, and no environment variable has to be set.
|
|
|
62
63
|
"mcpServers": {
|
|
63
64
|
"metacritic": {
|
|
64
65
|
"command": "docker",
|
|
65
|
-
"args": ["run", "-i", "--rm", "ghcr.io/smeet666/mcp-metacritic:2.0
|
|
66
|
+
"args": ["run", "-i", "--rm", "ghcr.io/smeet666/mcp-metacritic:2.1.0"]
|
|
66
67
|
}
|
|
67
68
|
}
|
|
68
69
|
}
|
|
@@ -74,7 +75,7 @@ because a TTY rewrites the stream. The container needs outbound HTTPS to
|
|
|
74
75
|
|
|
75
76
|
### Bundle, without npm
|
|
76
77
|
|
|
77
|
-
Download `mcp-metacritic-2.0.
|
|
78
|
+
Download `mcp-metacritic-2.1.0.mcpb` from
|
|
78
79
|
[the latest release](https://github.com/smeet666/mcp-metacritic/releases/latest)
|
|
79
80
|
and open it. A client that supports MCP bundles installs it on its own, with no
|
|
80
81
|
npm and no configuration file to edit. The bundle carries its dependencies, so
|
|
@@ -115,7 +116,8 @@ Finds films, series and games by title.
|
|
|
115
116
|
|
|
116
117
|
**In return:** rows carrying `slug` and `kind`, which `get_title` and
|
|
117
118
|
`get_reviews` take together; `title`; `year`; `release_date`; `rating`, the age
|
|
118
|
-
rating as published; `metascore`; `user_score
|
|
119
|
+
rating as published; `metascore`; `user_score`, which the search route publishes
|
|
120
|
+
for no row and which is null on every one of them; and `source_url`. **A score the
|
|
119
121
|
site has not computed is `null`, never `0`:** on a scale that starts at zero the
|
|
120
122
|
two would be indistinguishable, and a title with too few reviews carries none.
|
|
121
123
|
|
|
@@ -153,8 +155,10 @@ Reads the reviews of one entry.
|
|
|
153
155
|
**In return:** `reviews`, each with its `quote` as published, its `score`, the
|
|
154
156
|
`max` that score is out of, which is 100 for a critic and 10 for a user, and the
|
|
155
157
|
`publication` that ran it. **Name the publication when quoting a review.**
|
|
156
|
-
`total_available` counts
|
|
157
|
-
|
|
158
|
+
`total_available` counts every review Metacritic holds from that source for the
|
|
159
|
+
entry, whatever `sentiment` was asked for, since the sentiment sorts the sample
|
|
160
|
+
this server received rather than the request that fetched it. `next_offset`
|
|
161
|
+
continues.
|
|
158
162
|
|
|
159
163
|
### `browse_titles`
|
|
160
164
|
|
|
@@ -222,7 +226,7 @@ and its errors, and with no protocol attached.
|
|
|
222
226
|
import { McClient } from "mcp-metacritic/client";
|
|
223
227
|
|
|
224
228
|
const client = new McClient();
|
|
225
|
-
const { data, cached } = await client.
|
|
229
|
+
const { data, cached } = await client.getDetail("movie", "the-matrix");
|
|
226
230
|
console.log(data.title, data.metascore, cached);
|
|
227
231
|
```
|
|
228
232
|
|
|
@@ -331,7 +335,7 @@ renseigner.
|
|
|
331
335
|
"mcpServers": {
|
|
332
336
|
"metacritic": {
|
|
333
337
|
"command": "docker",
|
|
334
|
-
"args": ["run", "-i", "--rm", "ghcr.io/smeet666/mcp-metacritic:2.0
|
|
338
|
+
"args": ["run", "-i", "--rm", "ghcr.io/smeet666/mcp-metacritic:2.1.0"]
|
|
335
339
|
}
|
|
336
340
|
}
|
|
337
341
|
}
|
|
@@ -344,7 +348,7 @@ port, aucun identifiant.
|
|
|
344
348
|
|
|
345
349
|
### Bundle, sans npm
|
|
346
350
|
|
|
347
|
-
Téléchargez `mcp-metacritic-2.0.
|
|
351
|
+
Téléchargez `mcp-metacritic-2.1.0.mcpb` depuis
|
|
348
352
|
[la dernière publication](https://github.com/smeet666/mcp-metacritic/releases/latest)
|
|
349
353
|
et ouvrez-le. Un client qui gère les bundles MCP l'installe seul, sans npm et
|
|
350
354
|
sans fichier de configuration à modifier. Le bundle emporte ses dépendances, donc
|
|
@@ -385,7 +389,8 @@ Trouve des films, des séries et des jeux par leur titre.
|
|
|
385
389
|
|
|
386
390
|
**En retour :** des lignes portant `slug` et `kind`, que `get_title` et
|
|
387
391
|
`get_reviews` reprennent ensemble ; `title` ; `year` ; `release_date` ; `rating`,
|
|
388
|
-
la classification par âge telle que publiée ; `metascore` ; `user_score
|
|
392
|
+
la classification par âge telle que publiée ; `metascore` ; `user_score`, que la
|
|
393
|
+
route de recherche ne publie pour aucune ligne et qui y vaut `null` partout ; et
|
|
389
394
|
`source_url`. **Une note que le site n'a pas calculée vaut `null`, jamais `0` :**
|
|
390
395
|
sur une échelle qui commence à zéro les deux seraient indiscernables, et un titre
|
|
391
396
|
avec trop peu de critiques n'en porte aucune.
|
|
@@ -424,9 +429,10 @@ Lit les critiques d'une fiche.
|
|
|
424
429
|
**En retour :** `reviews`, chacune avec sa `quote` telle que publiée, son
|
|
425
430
|
`score`, le `max` sur lequel cette note est donnée, qui vaut 100 pour un critique
|
|
426
431
|
et 10 pour un utilisateur, et la `publication` qui l'a signée. **Nommez la
|
|
427
|
-
publication quand vous citez une critique.** `total_available` compte les
|
|
428
|
-
critiques
|
|
429
|
-
|
|
432
|
+
publication quand vous citez une critique.** `total_available` compte toutes les
|
|
433
|
+
critiques que Metacritic tient de cette source pour cette fiche, quelle que soit
|
|
434
|
+
la tonalité demandée, puisque la tonalité trie l'échantillon reçu et non la
|
|
435
|
+
requête qui l'a cherché. `next_offset` poursuit.
|
|
430
436
|
|
|
431
437
|
### `browse_titles`
|
|
432
438
|
|
|
@@ -494,7 +500,7 @@ erreurs, sans protocole attaché.
|
|
|
494
500
|
import { McClient } from "mcp-metacritic/client";
|
|
495
501
|
|
|
496
502
|
const client = new McClient();
|
|
497
|
-
const { data, cached } = await client.
|
|
503
|
+
const { data, cached } = await client.getDetail("movie", "the-matrix");
|
|
498
504
|
console.log(data.title, data.metascore, cached);
|
|
499
505
|
```
|
|
500
506
|
|