@claudinho/mcp 0.4.0 → 0.4.2
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/README.md +35 -73
- package/dist/index.js +3 -3
- package/package.json +12 -5
package/README.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# @claudinho/mcp ⚽
|
|
2
2
|
|
|
3
|
-
**An MCP server for the 2026 men's football tournament.** Ask your agent about
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
**An MCP server for the 2026 men's football tournament.** Ask your agent about live
|
|
4
|
+
scores, fixtures, group standings, and the prediction-market read — in Claude Code,
|
|
5
|
+
Cursor, Codex, Claude Desktop, Windsurf, Zed, VS Code, or any MCP client (stdio).
|
|
6
6
|
|
|
7
7
|
> ⚠️ **Not affiliated with, endorsed by, or connected to FIFA or Anthropic.**
|
|
8
8
|
> Claudinho is an independent, open-source fan project. Factual match data with
|
|
@@ -15,29 +15,18 @@ Code, Cursor, Codex, and any other MCP client.
|
|
|
15
15
|
claude mcp add claudinho -- npx -y @claudinho/mcp
|
|
16
16
|
```
|
|
17
17
|
|
|
18
|
-
**
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
**Codex CLI** — add to `~/.codex/config.toml`:
|
|
24
|
-
```toml
|
|
25
|
-
[mcp_servers.claudinho]
|
|
26
|
-
command = "npx"
|
|
27
|
-
args = ["-y", "@claudinho/mcp"]
|
|
18
|
+
**Codex CLI**
|
|
19
|
+
```bash
|
|
20
|
+
codex mcp add claudinho -- npx -y @claudinho/mcp
|
|
28
21
|
```
|
|
29
|
-
(or `codex mcp add claudinho -- npx -y @claudinho/mcp`)
|
|
30
22
|
|
|
31
|
-
**Claude Desktop
|
|
32
|
-
Edit Config), then restart Claude Desktop:
|
|
23
|
+
**Cursor / Claude Desktop / Windsurf / Zed / VS Code** — standard stdio config:
|
|
33
24
|
```json
|
|
34
25
|
{ "mcpServers": { "claudinho": { "command": "npx", "args": ["-y", "@claudinho/mcp"] } } }
|
|
35
26
|
```
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
Transport is stdio, so the same package works in Windsurf, Zed, VS Code, and
|
|
40
|
-
any other MCP client with no changes.
|
|
27
|
+
Cursor: `.cursor/mcp.json` (or `~/.cursor/mcp.json`). Claude Desktop: Settings →
|
|
28
|
+
Developer → Edit Config, then restart. Codex config file: `~/.codex/config.toml`
|
|
29
|
+
(`[mcp_servers.claudinho]`, `command = "npx"`, `args = ["-y", "@claudinho/mcp"]`).
|
|
41
30
|
|
|
42
31
|
## Tools
|
|
43
32
|
|
|
@@ -47,67 +36,40 @@ any other MCP client with no changes.
|
|
|
47
36
|
| `get_live` | matches in play right now |
|
|
48
37
|
| `get_match` | a single match by id |
|
|
49
38
|
| `get_standings` | group table(s) — one group `A`–`L`, or all |
|
|
50
|
-
| `get_next_fixture` | a team's next match (3-letter code, e.g. `MEX`) |
|
|
51
|
-
| `get_market_signal` | read-only prediction-market
|
|
52
|
-
| `get_share_snippet` | a copy-pasteable
|
|
53
|
-
|
|
54
|
-
All tools are **read-only** (annotated `readOnlyHint`) and accept optional
|
|
55
|
-
`tz` (IANA timezone), `lang` (`en`/`es`/`pt`/`fr`), and `flavor`
|
|
56
|
-
(`off`/`subtle`/`full`) arguments. Each response includes both human-readable
|
|
57
|
-
text and structured JSON.
|
|
58
|
-
|
|
59
|
-
`get_today` and `get_match` also include reliable prediction-market context when a
|
|
60
|
-
market is available. Match→market event slugs are derived automatically, so no
|
|
61
|
-
mapping is needed. Market data is **read-only and informational only — not betting
|
|
62
|
-
advice** (market-implied percentages with attribution, never links or trade
|
|
63
|
-
calls), sourced from Polymarket public data and shown only when a market maps
|
|
64
|
-
cleanly to the result. Disable it with `CLAUDINHO_MARKETS=off`; set
|
|
65
|
-
`CLAUDINHO_MARKETS_SOURCE=fake` (in the server `env`) for a network-free synthetic
|
|
66
|
-
preview.
|
|
67
|
-
|
|
68
|
-
`get_share_snippet` returns a polished, **copy-pasteable** match card (the same
|
|
69
|
-
artifact as the CLI's `claudinho share`) for a match, a team's next fixture, a
|
|
70
|
-
date, or live matches — plain text, no links, with the non-affiliation disclaimer
|
|
71
|
-
baked in. Hand the returned `snippet` to the user as-is. `style` picks `social`
|
|
72
|
-
(default) or `compact`; market lines (when reliable) stay **informational only**.
|
|
73
|
-
|
|
74
|
-
## Resources & prompts
|
|
75
|
-
|
|
76
|
-
- Resources: `standings://{group}` (e.g. `standings://A`), `fixtures://{date}` (UTC date, e.g. `fixtures://2026-06-11`)
|
|
77
|
-
- Prompts: `tournament_today`, `my_team`
|
|
39
|
+
| `get_next_fixture` | a team's next match (3-letter code, e.g. `MEX`) — fully offline |
|
|
40
|
+
| `get_market_signal` | read-only prediction-market signal for a match, a team's next fixture, or a date — informational only |
|
|
41
|
+
| `get_share_snippet` | a copy-pasteable plain-text match card — hand the returned snippet to the user as-is |
|
|
78
42
|
|
|
79
|
-
|
|
43
|
+
All tools are **read-only** (`readOnlyHint`) and accept optional `tz`, `lang`
|
|
44
|
+
(`en`/`es`/`pt`/`fr`), and `flavor` (`off`/`subtle`/`full`). Every response carries
|
|
45
|
+
human-readable text **and** structured JSON.
|
|
80
46
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
energy. The phrases are generic — no real commentator is quoted or impersonated —
|
|
85
|
-
and they never touch the structured JSON, so the facts stay clean.
|
|
47
|
+
Resources: `standings://{group}`, `fixtures://{date}`. Prompts: `tournament_today`,
|
|
48
|
+
and `my_team` (give it a 3-letter team code; combines next fixture, standings, and
|
|
49
|
+
the prediction-market read).
|
|
86
50
|
|
|
87
|
-
|
|
88
|
-
or per call via the `flavor` tool argument. In Claude Code, add it to the `env`
|
|
89
|
-
block of your server entry:
|
|
51
|
+
## Market signals
|
|
90
52
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
53
|
+
`get_today` / `get_match` include a short market line when a reliable market exists
|
|
54
|
+
(slugs are auto-derived per fixture; matching fails closed). **Read-only and
|
|
55
|
+
informational only — not betting advice:** market-implied percentages with Polymarket
|
|
56
|
+
attribution, never links or trade calls. Disable with `CLAUDINHO_MARKETS=off`; set
|
|
57
|
+
`CLAUDINHO_MARKETS_SOURCE=fake` in the server `env` for a network-free, clearly
|
|
58
|
+
labeled synthetic preview.
|
|
97
59
|
|
|
98
|
-
##
|
|
60
|
+
## Commentary flair
|
|
99
61
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
62
|
+
Match lines in the text end with a short, localized, genre-style exclamation
|
|
63
|
+
(`— ¡GOOOOL!`) — generic energy, no real commentator quoted or impersonated, never
|
|
64
|
+
in the structured JSON. Control with `CLAUDINHO_FLAVOR` (`off`|`subtle`|`full`,
|
|
65
|
+
default `full`) in the server `env`, or per call via the `flavor` argument.
|
|
104
66
|
|
|
105
67
|
## How it works
|
|
106
68
|
|
|
107
|
-
|
|
108
|
-
live scores from **ESPN's** public scoreboard (
|
|
109
|
-
|
|
110
|
-
|
|
69
|
+
All 104 fixtures ship bundled in the package; only live state hits the network —
|
|
70
|
+
live scores from **ESPN's** public scoreboard (swappable provider, attributed in
|
|
71
|
+
output), market signals from Polymarket. Stdout carries only the MCP protocol;
|
|
72
|
+
diagnostics go to stderr.
|
|
111
73
|
|
|
112
74
|
## License
|
|
113
75
|
|
package/dist/index.js
CHANGED
|
@@ -3845,7 +3845,7 @@ async function toolGetShareSnippet(args) {
|
|
|
3845
3845
|
|
|
3846
3846
|
// src/server.ts
|
|
3847
3847
|
var SERVER_NAME = "claudinho";
|
|
3848
|
-
var SERVER_VERSION = "0.4.
|
|
3848
|
+
var SERVER_VERSION = "0.4.2";
|
|
3849
3849
|
var VOICE = asFlavorLevel(process.env.CLAUDINHO_FLAVOR) === "off" ? "" : `
|
|
3850
3850
|
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.`;
|
|
3851
3851
|
var INSTRUCTIONS = `Claudinho serves live scores, fixtures, and group standings for the 2026 men's football tournament.
|
|
@@ -4023,7 +4023,7 @@ function buildServer() {
|
|
|
4023
4023
|
"my_team",
|
|
4024
4024
|
{
|
|
4025
4025
|
title: "My team",
|
|
4026
|
-
description: "Focus on one team's next match and
|
|
4026
|
+
description: "Focus on one team's next match, group situation, and the prediction-market read.",
|
|
4027
4027
|
argsSchema: { team: teamArg.describe("3-letter team code, e.g. MEX") }
|
|
4028
4028
|
},
|
|
4029
4029
|
({ team }) => ({
|
|
@@ -4032,7 +4032,7 @@ function buildServer() {
|
|
|
4032
4032
|
role: "user",
|
|
4033
4033
|
content: {
|
|
4034
4034
|
type: "text",
|
|
4035
|
-
text: `Using get_next_fixture and
|
|
4035
|
+
text: `Using get_next_fixture, get_standings, and get_market_signal, tell me about ${team}'s next match in the 2026 tournament, their current group standing, and what prediction markets currently say about that match. Treat the market percentages as informational context only \u2014 relay them factually, never as betting or trading advice.`
|
|
4036
4036
|
}
|
|
4037
4037
|
}
|
|
4038
4038
|
]
|
package/package.json
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@claudinho/mcp",
|
|
3
|
-
"version": "0.4.
|
|
4
|
-
"
|
|
3
|
+
"version": "0.4.2",
|
|
4
|
+
"mcpName": "io.github.arturogarrido/claudinho",
|
|
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.",
|
|
5
6
|
"type": "module",
|
|
6
7
|
"license": "MIT",
|
|
7
8
|
"author": "Arturo Garrido",
|
|
@@ -30,12 +31,18 @@
|
|
|
30
31
|
],
|
|
31
32
|
"keywords": [
|
|
32
33
|
"mcp",
|
|
34
|
+
"mcp-server",
|
|
33
35
|
"model-context-protocol",
|
|
36
|
+
"claude-code",
|
|
37
|
+
"cursor",
|
|
38
|
+
"world-cup",
|
|
39
|
+
"world-cup-2026",
|
|
34
40
|
"football",
|
|
35
41
|
"soccer",
|
|
36
|
-
"world-cup",
|
|
37
|
-
"2026",
|
|
38
42
|
"live-scores",
|
|
43
|
+
"fixtures",
|
|
44
|
+
"standings",
|
|
45
|
+
"2026",
|
|
39
46
|
"vibinglavidaloca"
|
|
40
47
|
],
|
|
41
48
|
"dependencies": {
|
|
@@ -47,7 +54,7 @@
|
|
|
47
54
|
"tsup": "^8.0.0",
|
|
48
55
|
"typescript": "^5.7.0",
|
|
49
56
|
"vitest": "^4.1.0",
|
|
50
|
-
"@claudinho/core": "0.4.
|
|
57
|
+
"@claudinho/core": "0.4.2"
|
|
51
58
|
},
|
|
52
59
|
"scripts": {
|
|
53
60
|
"build": "tsup",
|