@claudinho/mcp 0.8.2 → 0.8.3
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/dist/index.js +8 -9
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -3035,18 +3035,17 @@ function teamFromMatch(match, code) {
|
|
|
3035
3035
|
function matchKey(stage, index) {
|
|
3036
3036
|
return `${stage}:${index}`;
|
|
3037
3037
|
}
|
|
3038
|
-
function isGroupComplete(group, tables, standingsDegraded) {
|
|
3039
|
-
if (standingsDegraded) return false;
|
|
3040
|
-
const table = tables.find((t2) => t2.group === group);
|
|
3041
|
-
if (!table?.rows.length || table.rows.length !== 4) return false;
|
|
3042
|
-
return table.rows.every((r) => r.played >= 3);
|
|
3043
|
-
}
|
|
3044
3038
|
function teamFromStandings(group, position, tables) {
|
|
3045
3039
|
const table = tables.find((t2) => t2.group === group);
|
|
3046
3040
|
if (!table) return void 0;
|
|
3047
3041
|
const row = table.rows[position - 1];
|
|
3048
3042
|
return row?.team;
|
|
3049
3043
|
}
|
|
3044
|
+
function hasGroupStarted(group, tables) {
|
|
3045
|
+
const table = tables.find((t2) => t2.group === group);
|
|
3046
|
+
if (!table?.rows.length) return false;
|
|
3047
|
+
return table.rows.some((r) => r.played > 0);
|
|
3048
|
+
}
|
|
3050
3049
|
function resolveWinner(match) {
|
|
3051
3050
|
if (!isFinished(match.status)) return void 0;
|
|
3052
3051
|
if (match.winnerCode) {
|
|
@@ -3093,7 +3092,7 @@ function resolveSlot(ref, ctx) {
|
|
|
3093
3092
|
case "seed":
|
|
3094
3093
|
return tbd(ref.label);
|
|
3095
3094
|
case "group": {
|
|
3096
|
-
if (
|
|
3095
|
+
if (!ctx.standingsDegraded && hasGroupStarted(ref.group, ctx.tables)) {
|
|
3097
3096
|
const team = teamFromStandings(ref.group, ref.position, ctx.tables);
|
|
3098
3097
|
if (team) return participant(team, "projected");
|
|
3099
3098
|
}
|
|
@@ -5028,7 +5027,7 @@ async function toolGetShareSnippet(args) {
|
|
|
5028
5027
|
|
|
5029
5028
|
// src/server.ts
|
|
5030
5029
|
var SERVER_NAME = "claudinho";
|
|
5031
|
-
var SERVER_VERSION = "0.8.
|
|
5030
|
+
var SERVER_VERSION = "0.8.3";
|
|
5032
5031
|
var VOICE = asFlavorLevel(process.env.CLAUDINHO_FLAVOR) === "off" ? "" : `
|
|
5033
5032
|
Voice: when relaying scores, narrate with lively, regionally-appropriate football-commentary energy in the user's language. Each match line may end with a short exclamation ("\u2014 \xA1GOOOOL!") \u2014 use it as a tone cue. Keep every fact exact; never invent details and never impersonate or name a real commentator.`;
|
|
5034
5033
|
var INSTRUCTIONS = `Claudinho serves live scores, fixtures, and group standings for the 2026 men's football tournament.
|
|
@@ -5109,7 +5108,7 @@ function buildServer() {
|
|
|
5109
5108
|
"get_bracket",
|
|
5110
5109
|
{
|
|
5111
5110
|
title: "Knockout bracket",
|
|
5112
|
-
description: "Knockout bracket from the Round of 32 through the final, with live scores overlaid. Group slots project
|
|
5111
|
+
description: "Knockout bracket from the Round of 32 through the final, with live scores overlaid. Group slots project from live standings once a group has started; winner slots need a confirmed FT result. Pass an optional stage (R32, R16, QF, SF, 3P, F) to filter one round. Falls back to structure-only when live data is unavailable.",
|
|
5113
5112
|
inputSchema: {
|
|
5114
5113
|
stage: z.enum(["R32", "R16", "QF", "SF", "3P", "F"]).optional().describe("Knockout round to show (omit for the full bracket)"),
|
|
5115
5114
|
...commonArgs
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@claudinho/mcp",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.3",
|
|
4
4
|
"mcpName": "io.github.arturogarrido/claudinho",
|
|
5
5
|
"description": "MCP server for the 2026 men's football tournament — live scores, fixtures, standings, read-only prediction-market signals, and paste-ready match cards. Works with Claude Code, Cursor, Codex, Windsurf, Zed. Not affiliated with FIFA or Anthropic.",
|
|
6
6
|
"type": "module",
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"tsup": "^8.0.0",
|
|
58
58
|
"typescript": "^5.7.0",
|
|
59
59
|
"vitest": "^4.1.9",
|
|
60
|
-
"@claudinho/core": "0.8.
|
|
60
|
+
"@claudinho/core": "0.8.3"
|
|
61
61
|
},
|
|
62
62
|
"scripts": {
|
|
63
63
|
"build": "tsup",
|