soccer_mcp/__init__.py (4 loc)
soccer_mcp/data_loader.py (169 loc)class Datasets, def strip_accents, def normalize_team, def team_key, def team_matches, def _parse_date, def summary, def _std, def load_all
soccer_mcp/query.py (194 loc)class QueryEngine, def _team_mask, def find_matches, def head_to_head, def team_record, def standings, def find_players, def biggest_wins, def average_goals, def top_scoring_teams
soccer_mcp/server.py (191 loc)def _df_to_records, def _format_result, def dispatch, def build_server, def main
tests/conftest.py (8 loc, test)def datasets, def engine
tests/test_data_loader.py (27 loc, test)def test_normalizes_accents_and_case, def test_preserves_state_suffix_for_disambiguation, def test_aliases_map_consistently, def test_team_key_strips_state_suffix, def test_team_matches_ignores_suffix, def test_datasets_loaded, def test_unified_matches_have_expected_columns
tests/test_matches.py (27 loc, test)def test_find_matches_between_two_teams, def test_find_matches_by_season, def test_head_to_head_totals_are_consistent, def _nan_games, def test_find_matches_by_date_range
tests/test_players_and_stats.py (25 loc, test)def test_find_players_by_nationality, def test_find_players_by_name, def test_find_players_by_club, def test_average_goals_reasonable, def test_biggest_wins_sorted_by_margin
tests/test_server.py (23 loc, test)def test_all_tools_have_schema, def test_dispatch_returns_serializable_results, def test_build_server_registers_tools, def test_unknown_tool_raises
tests/test_team_and_competition.py (20 loc, test)def test_team_record_points_formula, def test_home_only_restricts, def test_standings_flamengo_champion_2019, def test_standings_has_20_teams_modern_era