Koskamo

Football Charts MCP

An MCP server providing read-only access to football data for 98 leagues, including results, fixtures, league tables, goal timing, per-match statistics, and Monte Carlo season projections. It supports integration with Claude Desktop, Claude Code, and other MCP clients via stdio or Streamable HTTP.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Football Charts MCP logo, by Football ChartsCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-06Published by Football Charts
MCP endpoint (Streamable HTTP)
https://mcp.football-charts.com/mcp
Vendor documentation

What its tools do

10 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

10 of 10 have a description · 10 of 10 declare behavior hints · 8 of 8 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Retrieve league tables and match results
  • Get goal timing and per-match statistics
  • Access Monte Carlo season projections
  • Query match predictions and probabilities

Source and maintenance

Community listingRegistry 0.5.0
Maintenance checked

Protocol and capabilities

Server
football-charts 0.6.0
MCP protocol negotiated in check
2025-11-25
Tools
10 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  }
}

Tools

10 advertised

about_football_charts — About this source
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Returns a summary of the football-charts.com source: the leagues and data it covers (98 leagues, including lower divisions), what it does not hold (live scores, player data, bookmaker odds), the league-key and season-string formats, how the model probabilities are produced, and the free-tier limits. No parameters.

about_football_charts input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {}
}
about_football_charts output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "what",
    "covers",
    "not_held",
    "notes",
    "free_tier",
    "get_a_key",
    "tools"
  ],
  "properties": {
    "what": {
      "type": "string"
    },
    "notes": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "tools": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      }
    },
    "covers": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "not_held": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "free_tier": {
      "type": "string"
    },
    "get_a_key": {
      "type": "string"
    }
  },
  "additionalProperties": true
}
about_football_charts annotations
{
  "title": "About this source",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
list_leagues — List leagues
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Returns every league covered (98 across 44 countries) with its league key, display name, country and the seasons available, newest first. Other tools take these league keys and season strings. Season format depends on the competition: '2026-2027' for winter-calendar leagues, '2026' for summer-calendar leagues. No parameters.

list_leagues input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {}
}
list_leagues output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "leagues"
  ],
  "properties": {
    "count": {},
    "leagues": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "league",
          "name",
          "country",
          "seasons"
        ],
        "properties": {
          "url": {},
          "name": {
            "type": "string"
          },
          "league": {
            "type": "string",
            "description": "The key to pass as `league`"
          },
          "country": {
            "type": "string"
          },
          "seasons": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Newest first; exact strings for `season`"
          }
        },
        "additionalProperties": true
      }
    },
    "attribution": {
      "type": [
        "string",
        "null"
      ],
      "description": "Cite as \"Data by football-charts.com\""
    },
    "season_window": {}
  },
  "additionalProperties": true
}
list_leagues annotations
{
  "title": "List leagues",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
get_league_table — League table
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Returns the standings of one league season: one row per team with position, played, wins, draws, losses, goals, points and last-five form, plus expected points and a luck category (how far results run ahead of or behind the underlying performance). view='luck' orders the same rows by over- or under-performance and view='goals' by goals scored; the default orders by points. Without a season, returns the current season.

get_league_table input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "league"
  ],
  "properties": {
    "view": {
      "anyOf": [
        {
          "enum": [
            "classic",
            "luck",
            "goals"
          ],
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Row order; default 'classic' (by points)"
    },
    "league": {
      "type": "string",
      "description": "League key as listed by list_leagues, e.g. 'premier' (England), 'spain1', 'brazil1', 'sweden1', 'wgermany1' (women). Not the display name."
    },
    "season": {
      "type": "string",
      "description": "Season string as listed by list_leagues: '2026-2027' for winter-calendar leagues, '2026' for summer-calendar leagues (Brazil, Sweden, Norway, Japan…). Omit for the current season. The free tier serves the current and previous season."
    }
  },
  "additionalProperties": false
}
get_league_table output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "view": {},
    "table": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "team"
            ],
            "properties": {
              "won": {},
              "lost": {},
              "team": {
                "type": "string"
              },
              "drawn": {},
              "played": {},
              "points": {},
              "position": {},
              "goals_for": {},
              "last_5_form": {
                "description": "Latest results as letters, e.g. 'WWDLW'"
              },
              "clean_sheets": {},
              "goals_against": {},
              "last_5_points": {},
              "luck_category": {
                "description": "'lucky' | 'fair' | 'unlucky'"
              },
              "expected_points": {
                "description": "Points the underlying numbers say the team should have"
              },
              "goal_difference": {},
              "luck_difference": {
                "description": "points − expected_points; positive = ahead of the numbers"
              },
              "avg_goals_scored": {},
              "expected_position": {},
              "avg_goals_conceded": {},
              "over_25_percentage": {}
            },
            "additionalProperties": true
          }
        },
        {
          "type": "null"
        }
      ]
    },
    "league": {},
    "season": {},
    "attribution": {
      "type": [
        "string",
        "null"
      ],
      "description": "Cite as \"Data by football-charts.com\""
    },
    "season_state": {
      "description": "'in_season' or 'finished'"
    },
    "current_season": {}
  },
  "additionalProperties": true
}
get_league_table annotations
{
  "title": "League table",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
get_results — Match results
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Returns the finished matches of one league season in chronological order: date, teams, full-time and half-time score, first-goal minute and a goalless flag. team keeps the matches where either side's name contains the given text (case-insensitive); last=N keeps only the N most recent matches. Contains no odds.

get_results input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "league"
  ],
  "properties": {
    "last": {
      "anyOf": [
        {
          "type": "integer",
          "maximum": 500,
          "minimum": 1
        },
        {
          "type": "null"
        }
      ],
      "description": "Keep only the N latest matches of the season, e.g. 5 for recent form (default: all)"
    },
    "team": {
      "type": [
        "string",
        "null"
      ],
      "description": "Team name substring, e.g. 'Liverpool'"
    },
    "league": {
      "type": "string",
      "description": "League key as listed by list_leagues, e.g. 'premier' (England), 'spain1', 'brazil1', 'sweden1', 'wgermany1' (women). Not the display name."
    },
    "season": {
      "type": "string",
      "description": "Season string as listed by list_leagues: '2026-2027' for winter-calendar leagues, '2026' for summer-calendar leagues (Brazil, Sweden, Norway, Japan…). Omit for the current season. The free tier serves the current and previous season."
    }
  },
  "additionalProperties": false
}
get_results output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "note": {},
    "count": {},
    "league": {},
    "season": {},
    "matches": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "homeTeam",
              "awayTeam"
            ],
            "properties": {
              "date": {},
              "time": {},
              "score": {
                "description": "Full-time 'home:away', e.g. '3:0'"
              },
              "awayTeam": {
                "type": "string"
              },
              "goalless": {
                "type": [
                  "boolean",
                  "null"
                ]
              },
              "homeTeam": {
                "type": "string"
              },
              "ht_result": {
                "description": "Half-time 'home:away'"
              },
              "first_goal_time": {
                "description": "Minute of the first goal; null when goalless"
              },
              "first_goal_time_extra": {
                "description": "Stoppage-time minutes added to first_goal_time"
              }
            },
            "additionalProperties": true
          }
        },
        {
          "type": "null"
        }
      ]
    },
    "attribution": {
      "type": [
        "string",
        "null"
      ],
      "description": "Cite as \"Data by football-charts.com\""
    },
    "season_state": {
      "description": "'in_season' or 'finished'"
    },
    "current_season": {}
  },
  "additionalProperties": true
}
get_results annotations
{
  "title": "Match results",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
get_fixtures — Upcoming fixtures
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Returns the upcoming matches of one league, earliest first: kick-off date and time, teams, a match slug, and the model's calibrated probabilities (home and away win, over/under goal lines, both teams to score, half-time lines; the draw probability is 1 - home - away) with team attack and defence ratings. The probabilities come from a baseline statistical model of past results (no injuries, motivation or weather) and are not bookmaker prices.

get_fixtures input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "league"
  ],
  "properties": {
    "league": {
      "type": "string",
      "description": "League key as listed by list_leagues, e.g. 'premier' (England), 'spain1', 'brazil1', 'sweden1', 'wgermany1' (women). Not the display name."
    }
  },
  "additionalProperties": false
}
get_fixtures output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "count": {},
    "league": {},
    "matches": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "slug",
              "home_team",
              "away_team"
            ],
            "properties": {
              "slug": {
                "type": "string",
                "description": "Input to get_match"
              },
              "time": {},
              "league": {},
              "status": {},
              "country": {},
              "away_team": {
                "type": "string"
              },
              "home_team": {
                "type": "string"
              },
              "match_date": {},
              "real_league_name": {},
              "model_predictions": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "dc_v2": {
                        "anyOf": [
                          {
                            "type": "object",
                            "properties": {
                              "model": {},
                              "calibrated": {
                                "anyOf": [
                                  {
                                    "type": "object",
                                    "properties": {
                                      "away": {},
                                      "home": {},
                                      "btts_yes": {},
                                      "over_0.5": {},
                                      "over_1.5": {},
                                      "over_2.5": {},
                                      "over_3.5": {},
                                      "over_4.5": {},
                                      "ht_over_0.5": {},
                                      "ht_over_1.5": {},
                                      "expected_ht_goals": {},
                                      "expected_away_goals": {},
                                      "expected_home_goals": {}
                                    },
                                    "description": "Probabilities 0–1. The draw is NOT a field: draw = 1 − home − away.",
                                    "additionalProperties": true
                                  },
                                  {
                                    "type": "null"
                                  }
                                ],
                                "description": "Use these. Calibrated on settled matches."
                              },
                              "computed_at": {},
                              "data_through": {
                                "description": "Last match date the model has seen"
                              }
                            },
                            "additionalProperties": true
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "additionalProperties": true
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "additionalProperties": true
          }
        },
        {
          "type": "null"
        }
      ]
    },
    "attribution": {
      "type": [
        "string",
        "null"
      ],
      "description": "Cite as \"Data by football-charts.com\""
    }
  },
  "additionalProperties": true
}
get_fixtures annotations
{
  "title": "Upcoming fixtures",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
get_match — Match detail
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Returns one match in full, identified by its slug ('country/league-slug/YYYY-MM-DD-home-vs-away', as listed in the slug field of upcoming fixtures): the complete model probability block (calibrated and raw), team ratings, first-goal-time histograms for both sides, recent form and, once played, the score, half-time score and status.

get_match input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "slug"
  ],
  "properties": {
    "slug": {
      "type": "string",
      "description": "Match slug as listed in upcoming fixtures, e.g. 'england/premier-league/2026-09-05-brentford-vs-sunderland'"
    }
  },
  "additionalProperties": false
}
get_match output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "match"
  ],
  "properties": {
    "match": {
      "type": "object",
      "properties": {
        "slug": {},
        "time": {},
        "fgt_a": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "description": "Away side first-goal-time histogram"
        },
        "fgt_h": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "description": "Home side first-goal-time histogram"
        },
        "label": {},
        "league": {},
        "season": {},
        "country": {},
        "away_team": {},
        "home_team": {},
        "ht_result": {},
        "away_score": {},
        "home_score": {},
        "match_date": {},
        "match_status": {
          "description": "'scheduled' before kick-off; 'ft' when finished"
        },
        "real_league_name": {},
        "model_predictions": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "dc_v2": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "model": {},
                        "calibrated": {
                          "anyOf": [
                            {
                              "type": "object",
                              "properties": {
                                "away": {},
                                "home": {},
                                "btts_yes": {},
                                "over_0.5": {},
                                "over_1.5": {},
                                "over_2.5": {},
                                "over_3.5": {},
                                "over_4.5": {},
                                "ht_over_0.5": {},
                                "ht_over_1.5": {},
                                "expected_ht_goals": {},
                                "expected_away_goals": {},
                                "expected_home_goals": {}
                              },
                              "description": "Probabilities 0–1. The draw is NOT a field: draw = 1 − home − away.",
                              "additionalProperties": true
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "Use these. Calibrated on settled matches."
                        },
                        "computed_at": {},
                        "data_through": {
                          "description": "Last match date the model has seen"
                        }
                      },
                      "additionalProperties": true
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "additionalProperties": true
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "additionalProperties": true
    },
    "attribution": {
      "type": [
        "string",
        "null"
      ],
      "description": "Cite as \"Data by football-charts.com\""
    }
  },
  "additionalProperties": true
}
get_match annotations
{
  "title": "Match detail",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
get_season_projection — Season projection
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Returns how one league's current season is projected to finish, from 10,000 Monte Carlo simulations refreshed daily: for each team the probabilities of winning the title, finishing in the top four and finishing in the bottom three, current points, mean final points, a 10th-90th percentile points range, a finishing-position matrix, and the change since the previous run. Covers the current season only; returns a note when no projection exists for the league yet.

get_season_projection input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "league"
  ],
  "properties": {
    "league": {
      "type": "string",
      "description": "League key as listed by list_leagues, e.g. 'premier' (England), 'spain1', 'brazil1', 'sweden1', 'wgermany1' (women). Not the display name."
    }
  },
  "additionalProperties": false
}
get_season_projection output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "note": {
      "description": "Set when no projection exists for the league yet"
    },
    "projection": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "teams"
          ],
          "properties": {
            "teams": {
              "type": "object",
              "description": "Keyed by team name",
              "additionalProperties": {
                "type": "object",
                "properties": {
                  "top4": {},
                  "title": {},
                  "gd_now": {},
                  "played": {},
                  "bottom1": {},
                  "bottom2": {},
                  "bottom3": {
                    "description": "Relegation-zone probability (bottom three)"
                  },
                  "p10_pts": {},
                  "p90_pts": {},
                  "pts_now": {},
                  "mean_pts": {},
                  "position_matrix": {
                    "anyOf": [
                      {
                        "type": "array",
                        "items": {
                          "type": "number"
                        }
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Probability of finishing 1st…last"
                  }
                },
                "additionalProperties": true
              }
            },
            "league": {},
            "n_sims": {},
            "season": {},
            "run_date": {},
            "deltas_vs_prev": {
              "anyOf": [
                {
                  "type": "object",
                  "additionalProperties": {
                    "type": "object",
                    "properties": {
                      "top4": {},
                      "title": {},
                      "bottom3": {}
                    },
                    "additionalProperties": true
                  }
                },
                {
                  "type": "null"
                }
              ],
              "description": "Change since the previous run"
            },
            "partial_schedule": {
              "type": [
                "boolean",
                "null"
              ]
            },
            "expected_remaining": {},
            "scheduled_remaining": {}
          },
          "additionalProperties": true
        },
        {
          "type": "null"
        }
      ]
    },
    "attribution": {
      "type": [
        "string",
        "null"
      ],
      "description": "Cite as \"Data by football-charts.com\""
    }
  },
  "additionalProperties": true
}
get_season_projection annotations
{
  "title": "Season projection",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
get_team — Team page
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Returns one team's season in one league: its table row (with expected points and luck category), the full match log (date, opponent, home or away, score, half-time score, first-goal minute, outcome), goals per 15-minute period, the first-goal distribution, and season averages of match statistics (shots, shots on target, possession, corners, xG) where the league has them. team is a lower-case slug with hyphens, e.g. 'arsenal' or 'manchester-city'.

get_team input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "league",
    "team"
  ],
  "properties": {
    "team": {
      "type": "string",
      "description": "Team slug, e.g. 'arsenal', 'manchester-city' (from the table's team names, lower-case, spaces as hyphens)"
    },
    "league": {
      "type": "string",
      "description": "League key as listed by list_leagues, e.g. 'premier' (England), 'spain1', 'brazil1', 'sweden1', 'wgermany1' (women). Not the display name."
    },
    "season": {
      "type": "string",
      "description": "Season string as listed by list_leagues: '2026-2027' for winter-calendar leagues, '2026' for summer-calendar leagues (Brazil, Sweden, Norway, Japan…). Omit for the current season. The free tier serves the current and previous season."
    }
  },
  "additionalProperties": false
}
get_team output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "slug": {},
    "team": {},
    "stats": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "xg_avg": {},
            "shots_avg": {},
            "corners_avg": {},
            "possession_avg": {},
            "xg_against_avg": {},
            "shots_against_avg": {},
            "matches_with_stats": {},
            "shots_on_target_avg": {}
          },
          "additionalProperties": true
        },
        {
          "type": "null"
        }
      ],
      "description": "Per-match averages over this season, computed from stored match statistics; null where the league has none"
    },
    "league": {},
    "season": {},
    "matches": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "ht": {},
              "away": {},
              "date": {},
              "home": {},
              "time": {},
              "score": {},
              "venue": {
                "description": "'H' or 'A'"
              },
              "outcome": {
                "description": "'W' | 'D' | 'L'"
              },
              "first_goal_time": {}
            },
            "additionalProperties": true
          }
        },
        {
          "type": "null"
        }
      ]
    },
    "ranking": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "team"
          ],
          "properties": {
            "won": {},
            "lost": {},
            "team": {
              "type": "string"
            },
            "drawn": {},
            "played": {},
            "points": {},
            "position": {},
            "goals_for": {},
            "last_5_form": {
              "description": "Latest results as letters, e.g. 'WWDLW'"
            },
            "clean_sheets": {},
            "goals_against": {},
            "last_5_points": {},
            "luck_category": {
              "description": "'lucky' | 'fair' | 'unlucky'"
            },
            "expected_points": {
              "description": "Points the underlying numbers say the team should have"
            },
            "goal_difference": {},
            "luck_difference": {
              "description": "points − expected_points; positive = ahead of the numbers"
            },
            "avg_goals_scored": {},
            "expected_position": {},
            "avg_goals_conceded": {},
            "over_25_percentage": {}
          },
          "additionalProperties": true
        },
        {
          "type": "null"
        }
      ],
      "description": "The team's table row"
    },
    "seasons": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        {
          "type": "null"
        }
      ]
    },
    "attribution": {
      "type": [
        "string",
        "null"
      ],
      "description": "Cite as \"Data by football-charts.com\""
    },
    "first_goal_bins": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "time": {},
              "count": {}
            },
            "additionalProperties": true
          }
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": true
}
get_team annotations
{
  "title": "Team page",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
get_goal_timing — Goal timing
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Returns goals per 15-minute period (0-15 to 90+) for every team in one league season, with each team's peak period or periods (ties are listed together), share of late goals and share of first-half goals, plus league totals and the league's most active period. team limits the result to teams whose name contains the given text.

get_goal_timing input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "league"
  ],
  "properties": {
    "team": {
      "type": [
        "string",
        "null"
      ],
      "description": "Team name substring, e.g. 'Flamengo' — returns that team's row only"
    },
    "league": {
      "type": "string",
      "description": "League key as listed by list_leagues, e.g. 'premier' (England), 'spain1', 'brazil1', 'sweden1', 'wgermany1' (women). Not the display name."
    },
    "season": {
      "type": "string",
      "description": "Season string as listed by list_leagues: '2026-2027' for winter-calendar leagues, '2026' for summer-calendar leagues (Brazil, Sweden, Norway, Japan…). Omit for the current season. The free tier serves the current and previous season."
    }
  },
  "additionalProperties": false
}
get_goal_timing output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "data": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "team"
            ],
            "properties": {
              "bins": {
                "anyOf": [
                  {
                    "type": "object",
                    "additionalProperties": {
                      "type": "number"
                    }
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Goals per bin: '0-15','15-30','30-45','45+','46-60','60-75','75-90','90+'"
              },
              "team": {
                "type": "string"
              },
              "total": {},
              "peak_bins": {
                "anyOf": [
                  {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Bin(s) with most goals — ties are listed; report a tie as a tie"
              },
              "peak_goals": {},
              "first_half_pct": {},
              "late_share_pct": {
                "description": "% of goals from 75′ on"
              }
            },
            "additionalProperties": true
          }
        },
        {
          "type": "null"
        }
      ]
    },
    "note": {},
    "stats": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "late_goals": {},
            "match_count": {},
            "total_goals": {},
            "most_active_period": {}
          },
          "additionalProperties": true
        },
        {
          "type": "null"
        }
      ]
    },
    "league": {},
    "season": {},
    "time_bins": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        {
          "type": "null"
        }
      ]
    },
    "attribution": {
      "type": [
        "string",
        "null"
      ],
      "description": "Cite as \"Data by football-charts.com\""
    },
    "team_filter": {},
    "team_not_found": {}
  },
  "additionalProperties": true
}
get_goal_timing annotations
{
  "title": "Goal timing",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
get_track_record — Model calibration record
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Returns the public calibration record of the model: every probability published before kick-off and scored after the result, with count, hit rate, Brier score and reliability buckets (predicted probability against observed frequency), overall and by question type (match result, total goals over 2.5 and 3.5, half-time goals over 1.5, both teams to score), plus the 50 most recent scored predictions. Misses are included. days sets the lookback window (default 90).

get_track_record input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "days": {
      "anyOf": [
        {
          "type": "integer",
          "maximum": 365,
          "minimum": 1
        },
        {
          "type": "null"
        }
      ],
      "description": "Lookback window in days (default 90)"
    }
  },
  "additionalProperties": false
}
get_track_record output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "track_record"
  ],
  "properties": {
    "attribution": {
      "type": [
        "string",
        "null"
      ],
      "description": "Cite as \"Data by football-charts.com\""
    },
    "track_record": {
      "type": "object",
      "properties": {
        "recent": {
          "anyOf": [
            {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "line": {},
                  "side": {},
                  "slug": {},
                  "league": {},
                  "outcome": {
                    "description": "'correct' | 'incorrect' | 'void'"
                  },
                  "question": {},
                  "away_team": {},
                  "home_team": {},
                  "match_date": {},
                  "model_prob": {},
                  "result_score": {}
                },
                "additionalProperties": true
              }
            },
            {
              "type": "null"
            }
          ],
          "description": "The 50 most recent scored predictions"
        },
        "pending": {
          "description": "Published but not yet scored"
        },
        "summary": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "n": {
                  "description": "Scored predictions"
                },
                "void": {
                  "description": "Postponed or abandoned; not scored"
                },
                "correct": {},
                "hit_rate": {
                  "description": "correct / (correct + incorrect)"
                },
                "incorrect": {}
              },
              "additionalProperties": true
            },
            {
              "type": "null"
            }
          ],
          "description": "Whole window"
        },
        "accuracy": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "n": {},
                "brier": {
                  "description": "Brier score over scored probabilities; lower is better, 0.25 = coin flip"
                },
                "buckets": {
                  "anyOf": [
                    {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "n": {},
                          "hi": {},
                          "lo": {},
                          "avg_prob": {},
                          "hit_rate": {}
                        },
                        "additionalProperties": true
                      }
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "additionalProperties": true
            },
            {
              "type": "null"
            }
          ]
        },
        "by_question": {
          "anyOf": [
            {
              "type": "object",
              "additionalProperties": {
                "type": "object",
                "properties": {
                  "n": {
                    "description": "Scored predictions"
                  },
                  "void": {
                    "description": "Postponed or abandoned; not scored"
                  },
                  "correct": {},
                  "hit_rate": {
                    "description": "correct / (correct + incorrect)"
                  },
                  "incorrect": {}
                },
                "additionalProperties": true
              }
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "additionalProperties": true
    }
  },
  "additionalProperties": true
}
get_track_record annotations
{
  "title": "Model calibration record",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (2 of 2 answered).

  1. 2026-11-06: 1 of 1 checks answered
  2. 2026-11-07: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
1100 ms
95th percentile latency
1100 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 1100 ms · metadata changed · 10 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http football-charts-mcp https://mcp.football-charts.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add football-charts-mcp --url https://mcp.football-charts.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable football-charts-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "football-charts-mcp": {
      "url": "https://mcp.football-charts.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "football-charts-mcp": {
      "type": "streamableHttp",
      "url": "https://mcp.football-charts.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start football-charts-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "football-charts-mcp": {
      "type": "http",
      "url": "https://mcp.football-charts.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http football-charts-mcp https://mcp.football-charts.com/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://mcp.football-charts.com/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "football-charts-mcp": {
      "serverUrl": "https://mcp.football-charts.com/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Football Charts MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.