@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.
Files changed (3) hide show
  1. package/README.md +35 -73
  2. package/dist/index.js +3 -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
- live scores, fixtures, group standings, and prediction-market odds — in Claude
5
- Code, Cursor, Codex, and any other MCP client.
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
- **Cursor** — add to `.cursor/mcp.json` (project) or `~/.cursor/mcp.json` (global):
19
- ```json
20
- { "mcpServers": { "claudinho": { "command": "npx", "args": ["-y", "@claudinho/mcp"] } } }
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** edit `claude_desktop_config.json` (Settings Developer
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
- Config location: macOS `~/Library/Application Support/Claude/claude_desktop_config.json`,
37
- Windows `%APPDATA%\Claude\claude_desktop_config.json`.
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 odds for a match, a team's next fixture, or a date — informational only |
52
- | `get_share_snippet` | a copy-pasteable match-card snippet for a match, a team's next fixture, a date, or live plain text, ready to paste |
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
- ## Commentary flair
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
- By default the server adds a light, localized football-commentary voice: each
82
- match line in the text ends with a short genre-style exclamation (`— ¡GOOOOL!`),
83
- and the server instructions nudge the model to narrate scores with matching
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
- Control it with `CLAUDINHO_FLAVOR` (`off` | `subtle` | `full`, default `full`),
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
- ```json
92
- { "mcpServers": { "claudinho": {
93
- "command": "npx", "args": ["-y", "@claudinho/mcp"],
94
- "env": { "CLAUDINHO_FLAVOR": "subtle" }
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
- ## Other competitions
60
+ ## Commentary flair
99
61
 
100
- By default the server follows the 2026 World Cup. Set the `CLAUDINHO_COMPETITION`
101
- env var (e.g. `fifa.friendly`) to point the live tools at another
102
- competition useful for testing before the tournament. In Claude Code, add it
103
- to the `env` block of your MCP server entry.
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
- The fixture list ships bundled in the package; only live state hits the network —
108
- live scores from **ESPN's** public scoreboard (a swappable provider, attributed
109
- in the `source` field and text) and market odds from Polymarket. The server writes
110
- nothing to stdout except the MCP protocol; diagnostics go to stderr.
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.0";
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 group situation.",
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 get_standings, tell me about ${team}'s next match in the 2026 tournament and their current group standing.`
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.0",
4
- "description": "Claudinho MCP server — ask your agent about the 2026 men's football tournament: live scores, fixtures, standings, prediction-market odds. Not affiliated with FIFA or Anthropic.",
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.0"
57
+ "@claudinho/core": "0.4.2"
51
58
  },
52
59
  "scripts": {
53
60
  "build": "tsup",