fantasy-nba-israel-mcp 0.3.6
A Model Context Protocol server for accessing our Fantasy NBA League statistics and rankings
Requires Python: >=3.10
Keywords: basketball, fantasy, league, mcp, model-context-protocol, nba, rankings, statistics

# Fantasy NBA Israel League MCP

A Model Context Protocol (MCP) server that provides tools for accessing our Fantasy NBA Israel League statistics and rankings.

## Description

This MCP server connects to a specific Fantasy NBA League API (Fantasy NBA Israel League) and provides tools to retrieve team rankings, player statistics, and detailed analytics.

**Note:** This server is configured for a specific private league and connects to its dedicated API endpoint. It is not a general-purpose tool for any Fantasy NBA league - it's designed specifically for our league's data structure and API.

## Features

- **Get Average League Rankings**: Retrieve team rankings with detailed statistics
  - Sort in ascending or descending order
  - Detailed stats per category (FG%, FT%, 3PM, AST, REB, STL, BLK, PTS, GP)
  - Total points and rank for each team
- **Get Teams**: Retrieve list of all teams in the league
- **Get Average Stats**: Get team statistics in a user-friendly format with stats mapped by category
  - Option to retrieve raw or normalized (0-1 scale) data
  - Includes games played (GP) for each team
- **Get Team Details**: Retrieve comprehensive details for a specific team
  - Team statistics (totals and averages)
  - Complete roster with player stats including minutes played
  - ESPN team page URL
  - Shot chart stats and ranking information
  - Category ranks across all statistical categories
- **Get All Players**: Retrieve all players in the league with comprehensive statistics
  - Includes minutes played and games played for each player
- **Get League Shots Stats**: Retrieve league-wide shooting statistics for all teams

## Prerequisites

Before using this MCP server, you'll need:

1. **`uv` or `uvx`**: A fast Python package installer and runner
   - Install from [https://docs.astral.sh/uv/](https://docs.astral.sh/uv/)
   - On macOS/Linux: `curl -LsSf https://astral.sh/uv/install.sh | sh`
   - On Windows: `powershell -c "irm https://astral.sh/uv/install.ps1 | iex"`

2. **An MCP-compatible client**: Choose one of the following or similar:
   - [Claude Desktop](https://claude.ai/download) - AI assistant with MCP support
   - [Cursor](https://cursor.sh/) - AI-powered code editor
   - [VSCode](https://code.visualstudio.com/) with [GitHub Copilot Chat](https://marketplace.visualstudio.com/items?itemName=GitHub.copilot-chat)
   - [Cline](https://github.com/cline/cline) - VSCode extension for AI assistance
   - Any other MCP-compatible application

## Usage

### As an MCP Server

This server works with any MCP-compatible client (Claude Desktop, Cursor, Cline, VSCode with GitHub Copilot Chat, etc.). Add the following configuration to your client's MCP settings file:

```json
{
  "mcpServers": {
    "fantasynbaleague": {
      "command": "uvx",
      "args": ["fantasy-nba-israel-mcp@latest"]
    }
  }
}
```

**Common configuration file locations:**
- **Claude Desktop**: `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\Claude\claude_desktop_config.json` (Windows)
- **Cursor**: `.cursor/mcp.json` in your project or global settings
- **Cline**: Use the MCP settings UI or edit `cline_mcp_settings.json`
- **VSCode**: `.vscode/mcp.json` in your workspace

### Local Development

For local development and testing, you can run the MCP server in development mode:

```bash
uv run mcp dev fantasy_nba_israel_mcp/server.py
```

This will start an interactive MCP inspector where you can test your tools.

### Standalone Testing

```python
from fantasy_nba_israel_mcp import mcp

# Run the MCP server
if __name__ == "__main__":
    mcp.run()
```

Or run directly:

```bash
python -m fantasy_nba_israel_mcp
```

## Available Tools

### getAveragesLeagueRankings

Get the average league rankings from the API.

**Parameters:**
- `order` (str, optional): Sort order for rankings
  - `"desc"` = best to worst (top teams first) - Default
  - `"asc"` = worst to best (bottom teams first)

**Returns:**
A list of teams with their rankings, total points, and stats per category.

**Example Response:**
```json
[
  {
    "team": {
      "team_id": 1,
      "team_name": "Team Name"
    },
    "fg_percentage": 0.456,
    "ft_percentage": 0.789,
    "three_pm": 12.5,
    "ast": 24.3,
    "reb": 45.6,
    "stl": 8.2,
    "blk": 5.4,
    "pts": 112.3,
    "gp": 55,
    "total_points": 36,
    "rank": 1
  }
]
```

### getTeams

Get the list of all teams in the league.

**Parameters:**
None

**Returns:**
A list of teams with their IDs and names.

**Example Response:**
```json
[
  {
    "team_id": 1,
    "team_name": "First team example"
  },
  {
    "team_id": 2,
    "team_name": "Another team name"
  }
]
```

### getAverageStats

Get average stats for all teams in a user-friendly format with stats mapped by category name.

**Parameters:**
- `use_normalized` (bool, optional): If `true`, returns normalized data (0-1 scale). If `false`, returns raw stat values. Default is `false`.

**Returns:**
A list of teams with their stats mapped by category name.

**Example Response:**
```json
[
  {
    "team": {
      "team_id": 1,
      "team_name": "First team example"
    },
    "stats": {
      "FG%": 0.48532033,
      "FT%": 0.80961071,
      "3PM": 1.71184371,
      "AST": 4.28449328,
      "REB": 6.75579976,
      "STL": 1.13919414,
      "BLK": 0.72405372,
      "PTS": 17.5970696,
      "GP": 55
    }
  }
]
```

### getTeamDetails

Get comprehensive details for a specific team including statistics, roster, and rankings.

**Parameters:**
- `team_id` (int): The ID of the team to get details for

**Returns:**
Comprehensive team information including team stats, ESPN URL, shot chart, rankings, and full roster.

**Example Response:**
```json
{
  "team": {
    "team_id": 1,
    "team_name": "Team Name"
  },
  "espn_url": "https://fantasy.espn.com/basketball/team?leagueId=123&teamId=1",
  "shot_chart": {
    "team": {"team_id": 1, "team_name": "Team Name"},
    "fgm": 14,
    "fga": 23,
    "fg_percentage": 0.608,
    "ftm": 7,
    "fta": 12,
    "ft_percentage": 0.583,
    "gp": 2
  },
  "raw_averages": {
    "fg_percentage": 0.608,
    "ft_percentage": 0.583,
    "three_pm": 0.5,
    "ast": 4.5,
    "reb": 5.5,
    "stl": 1.0,
    "blk": 0.5,
    "pts": 18.0,
    "gp": 2,
    "team": {"team_id": 1, "team_name": "Team Name"}
  },
  "ranking_stats": {
    "team": {"team_id": 1, "team_name": "Team Name"},
    "fg_percentage": 12.0,
    "ft_percentage": 5.0,
    "three_pm": 5.0,
    "ast": 8.0,
    "reb": 7.0,
    "stl": 6.0,
    "blk": 9.0,
    "pts": 9.0,
    "gp": 2,
    "total_points": 61.0,
    "rank": 6
  },
  "category_ranks": {
    "FG%": 12,
    "FT%": 5,
    "3PM": 5,
    "AST": 8,
    "REB": 7,
    "STL": 6,
    "BLK": 9,
    "PTS": 9
  },
  "players": [
    {
      "player_name": "LeBron James",
      "pro_team": "LAL",
      "positions": ["SF", "PF"],
      "stats": {
        "pts": 25.4,
        "reb": 7.3,
        "ast": 7.4,
        "stl": 1.3,
        "blk": 0.5,
        "fgm": 9.5,
        "fga": 18.5,
        "ftm": 4.8,
        "fta": 6.3,
        "fg_percentage": 0.513,
        "ft_percentage": 0.762,
        "three_pm": 2.1,
        "minutes": 35.2,
        "gp": 55
      },
      "team_id": 1
    }
  ]
}
```

### getAllPlayers

Get all players in the league with comprehensive statistics.

**Parameters:**
None

**Returns:**
A list of all players with their stats and team association.

**Example Response:**
```json
[
  {
    "player_name": "LeBron James",
    "pro_team": "LAL",
    "positions": ["SF", "PF"],
    "team_id": 1,
    "stats": {
      "pts": 25.4,
      "reb": 7.3,
      "ast": 7.4,
      "stl": 1.3,
      "blk": 0.5,
      "fgm": 9.5,
      "fga": 18.5,
      "ftm": 4.8,
      "fta": 6.3,
      "fg_percentage": 0.513,
      "ft_percentage": 0.762,
      "three_pm": 2.1,
      "minutes": 35.2,
      "gp": 55
    }
  }
]
```

### getLeagueShotsStats

Get league-wide shooting statistics for all teams.

**Parameters:**
None

**Returns:**
League-wide shooting statistics with field goal and free throw data for each team.

**Example Response:**
```json
{
  "shots": [
    {
      "team": {
        "team_id": 1,
        "team_name": "Team Name"
      },
      "fgm": 14,
      "fga": 23,
      "fg_percentage": 0.608,
      "ftm": 7,
      "fta": 12,
      "ft_percentage": 0.583,
      "gp": 2
    },
    {
      "team": {
        "team_id": 2,
        "team_name": "Another Team"
      },
      "fgm": 12,
      "fga": 20,
      "fg_percentage": 0.600,
      "ftm": 8,
      "fta": 10,
      "ft_percentage": 0.800,
      "gp": 2
    }
  ]
}
```

## Requirements

- Python >= 3.10
- httpx >= 0.28.1
- mcp[cli] >= 1.18.0

## Development

To run the server locally for development and testing:

```bash
# Install dependencies
uv sync

# Run in development mode with MCP inspector
uv run mcp dev fantasy_nba_israel_mcp/server.py
```

The MCP inspector will provide an interactive interface to test all your tools.

## Author

Asaf Shai (asafshai211@gmail.com)

## Support

For issues and questions, please open an issue on the GitHub repository.