Skip to main content
Glama
wyverns76-J

sports-pulse-mcp

by wyverns76-J
README.md
# โšฝ๐Ÿ€ SportsPulse MCP

> Claude Desktop์—์„œ ์‹ค์‹œ๊ฐ„ ์Šคํฌ์ธ  ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” MCP ์„œ๋ฒ„

## ๐Ÿ†“ ์‚ฌ์šฉํ•˜๋Š” ๋ฌด๋ฃŒ API

| API | ๋น„์šฉ | ๋ฐ์ดํ„ฐ |
|-----|------|--------|
| [TheSportsDB](https://www.thesportsdb.com/api.php) | ์™„์ „ ๋ฌด๋ฃŒ (key: `3`) | ํŒ€ ์ผ์ •, ๊ฒฐ๊ณผ, ๋งž๋Œ€๊ฒฐ, ์ˆœ์œ„ |
| [balldontlie.io](https://www.balldontlie.io) | ์™„์ „ ๋ฌด๋ฃŒ (ํ‚ค ๋ถˆํ•„์š”) | NBA ๊ฒฝ๊ธฐ, ์„ ์ˆ˜ ์Šคํƒฏ |
| [API-Football](https://rapidapi.com/api-sports/api/api-football) | ๋ฌด๋ฃŒ 100req/day | ๐Ÿ”ด ๋ผ์ด๋ธŒ ์Šค์ฝ”์–ด, ์‹ค์‹œ๊ฐ„ ์ˆœ์œ„ |

> โšก TheSportsDB + balldontlie ๋งŒ์œผ๋กœ๋„ ๋ฐ”๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ!  
> API-Football์€ ์„ ํƒ์‚ฌํ•ญ (๋ผ์ด๋ธŒ ์Šค์ฝ”์–ด ์›ํ•  ๋•Œ๋งŒ ๋ฐœ๊ธ‰)

---

## ๐Ÿš€ ์„ค์น˜ ๋ฐฉ๋ฒ•

### 1. ์˜์กด์„ฑ ์„ค์น˜ & ๋นŒ๋“œ

```bash
git clone <this-repo>
cd sports-mcp
npm install
npm run build
```

### 2. ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •

```bash
cp .env.example .env
# .env ํŒŒ์ผ์—์„œ RAPIDAPI_KEY ๊ฐ’๋งŒ ๊ต์ฒด (์„ ํƒ์‚ฌํ•ญ)
```

### 3. Claude Desktop ์„ค์ •

Claude Desktop ์„ค์ • ํŒŒ์ผ์„ ์—ด๊ณ :

**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`  
**Windows**: `%APPDATA%\Claude\claude_desktop_config.json`

์•„๋ž˜ ๋‚ด์šฉ์„ ์ถ”๊ฐ€ (๊ฒฝ๋กœ๋Š” ๋ณธ์ธ ํ™˜๊ฒฝ์— ๋งž๊ฒŒ ์ˆ˜์ •):

```json
{
  "mcpServers": {
    "sports-pulse": {
      "command": "node",
      "args": ["/Users/yourname/sports-mcp/dist/index.js"],
      "env": {
        "SPORTSDB_API_KEY": "3",
        "RAPIDAPI_KEY": "your_rapidapi_key_here"
      }
    }
  }
}
```

### 4. Claude Desktop ์žฌ์‹œ์ž‘

์„ค์ • ์ €์žฅ ํ›„ Claude Desktop์„ ์™„์ „ํžˆ ์ข…๋ฃŒ ํ›„ ์žฌ์‹œ์ž‘ํ•˜๋ฉด tools ์•„์ด์ฝ˜(๐Ÿ”ง)์— ์Šคํฌ์ธ  ๋„๊ตฌ๋“ค์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค!

---

## ๐Ÿ’ฌ ์‚ฌ์šฉ ์˜ˆ์‹œ

Claude Desktop์—์„œ ์ด๋ ‡๊ฒŒ ๋ฌผ์–ด๋ณด์„ธ์š”:

```
"์˜ค๋Š˜ EPL ๊ฒฝ๊ธฐ ์žˆ์–ด?"
"์†ํฅ๋ฏผ ๋‹ค์Œ ๊ฒฝ๊ธฐ ์–ธ์ œ์•ผ?"
"๋งจ์‹œํ‹ฐ ์ตœ๊ทผ 5๊ฒฝ๊ธฐ ๊ฒฐ๊ณผ ์•Œ๋ ค์ค˜"
"EPL ์ˆœ์œ„ ๋ณด์—ฌ์ค˜"
"๋งจ์œ  vs ๋ฆฌ๋ฒ„ํ’€ ์—ญ๋Œ€ ์ „์ ์ด ์–ด๋•Œ?"
"๋ ˆ์ด์ปค์Šค ์˜ค๋Š˜ ๊ฒฝ๊ธฐ ํ–ˆ์–ด?"
"LeBron James ์ด๋ฒˆ ์‹œ์ฆŒ ์Šคํƒฏ ์–ด๋•Œ?"
"๋‚ด ๊ด€์‹ฌํŒ€ ํ† ํŠธ๋„˜์ด๋ž‘ ๋ ˆ์ด์ปค์Šค ์ด๋ฒˆ ์ฃผ ๊ฒฝ๊ธฐ ๋ธŒ๋ฆฌํ•‘ํ•ด์ค˜"
```

---

## ๐Ÿ› ๏ธ ์ง€์› ๋„๊ตฌ (Tools)

| Tool | ์„ค๋ช… | ํ•„์š” API |
|------|------|---------|
| `get_live_scores` | ๐Ÿ”ด ๋ผ์ด๋ธŒ ์Šค์ฝ”์–ด | API-Football |
| `get_today_fixtures` | ์˜ค๋Š˜ ๊ฒฝ๊ธฐ ์ผ์ •/๊ฒฐ๊ณผ | API-Football |
| `get_upcoming_fixtures` | ํŒ€ ๋‹ค์Œ ๊ฒฝ๊ธฐ ์ผ์ • | TheSportsDB |
| `get_recent_results` | ํŒ€ ์ตœ๊ทผ ๊ฒฝ๊ธฐ ๊ฒฐ๊ณผ | TheSportsDB |
| `get_standings` | ๋ฆฌ๊ทธ ์ˆœ์œ„ํ‘œ | ๋‘˜ ๋‹ค ์‹œ๋„ |
| `get_head_to_head` | ๋งž๋Œ€๊ฒฐ ๊ธฐ๋ก | TheSportsDB |
| `get_nba_today` | NBA ์˜ค๋Š˜ ๊ฒฝ๊ธฐ | balldontlie |
| `get_nba_team_games` | NBA ํŒ€ ์ตœ๊ทผ ๊ฒฝ๊ธฐ | balldontlie |
| `get_nba_player_stats` | NBA ์„ ์ˆ˜ ์Šคํƒฏ | balldontlie |
| `get_weekly_briefing` | ๊ด€์‹ฌํŒ€ ์ฃผ๊ฐ„ ๋ธŒ๋ฆฌํ•‘ | TheSportsDB + balldontlie |

---

## ๐Ÿ”ง ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…

**Q: Claude์—์„œ tool์ด ์•ˆ ๋ณด์—ฌ์š”**
- `dist/index.js` ํŒŒ์ผ์ด ์žˆ๋Š”์ง€ ํ™•์ธ (`npm run build` ์žฌ์‹คํ–‰)
- config.json์˜ `args` ๊ฒฝ๋กœ๊ฐ€ ์ ˆ๋Œ€๊ฒฝ๋กœ์ธ์ง€ ํ™•์ธ
- Claude Desktop ์™„์ „ ์žฌ์‹œ์ž‘ (๋ฉ”๋‰ด๋ฐ”์—์„œ ์™„์ „ ์ข…๋ฃŒ)

**Q: "ํŒ€์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค" ์˜ค๋ฅ˜**
- ์˜์–ด ํŒ€ ์ด๋ฆ„์œผ๋กœ ์‹œ๋„ (์˜ˆ: "Tottenham" ๋Œ€์‹  "Tottenham Hotspur")
- TheSportsDB์—์„œ ํŒ€๋ช… ๊ฒ€์ƒ‰ ํ™•์ธ: `https://www.thesportsdb.com/api/v1/json/3/searchteams.php?t=Tottenham`

**Q: ๋ผ์ด๋ธŒ ์Šค์ฝ”์–ด๊ฐ€ ์•ˆ ๋ผ์š”**
- `.env`์˜ `RAPIDAPI_KEY` ํ™•์ธ
- ๋ฌด๋ฃŒ 100req/day ์ดˆ๊ณผ ์—ฌ๋ถ€ ํ™•์ธ

---

## ๐Ÿ“ฆ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

```
sports-mcp/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ index.ts          # MCP ์„œ๋ฒ„ ๋ฉ”์ธ + ๋ชจ๋“  tool ํ•ธ๋“ค๋Ÿฌ
โ”‚   โ”œโ”€โ”€ types.ts           # ๊ณตํ†ต ํƒ€์ž… ์ •์˜
โ”‚   โ”œโ”€โ”€ utils.ts           # ์‹œ๊ฐ„๋Œ€ ๋ณ€ํ™˜, ํŒ€ ์ด๋ฆ„ ์ •๊ทœํ™”
โ”‚   โ””โ”€โ”€ adapters/
โ”‚       โ”œโ”€โ”€ sportsdb.ts    # TheSportsDB API
โ”‚       โ”œโ”€โ”€ nba.ts         # balldontlie.io NBA API
โ”‚       โ””โ”€โ”€ apifootball.ts # API-Football (RapidAPI)
โ”œโ”€โ”€ dist/                  # ์ปดํŒŒ์ผ ๊ฒฐ๊ณผ (npm run build ํ›„ ์ƒ์„ฑ)
โ”œโ”€โ”€ .env.example
โ”œโ”€โ”€ package.json
โ””โ”€โ”€ tsconfig.json
```

TDQS

B3.4/5.0

Scored across 10 tools

Disambiguation4/5

Each tool targets a distinct data type: live scores, today's fixtures, upcoming fixtures for a team, recent results, standings, head-to-head, NBA equivalents, and a weekly briefing. Minor potential confusion exists between get_today_fixtures and get_upcoming_fixtures (both about future fixtures), but time scope and 'specific team' focus differentiate them sufficiently. The weekly briefing is clearly an aggregate tool.

Naming Consistency5/5

All tool names follow a consistent get_<subject> pattern in snake_case, with clear English nouns/verbs (live_scores, today_fixtures, upcoming_fixtures, recent_results, etc.). The NBA tools use get_nba_ prefix uniformly, maintaining a predictable convention.

Tool Count5/5

Ten tools is a well-scoped set for a multi-sport score/fixture service. Each tool covers a distinct need, and the mix of specific and aggregate tools (weekly briefing) feels balanced without bloat or sparsity.

Completeness4/5

The surface covers core read-only queries for football and NBA: live scores, fixtures, results, standings, head-to-head, and player stats, plus an aggregate weekly briefing. Missing operations like league filters for some sports, player search by name, or historical season stats are minor gaps that agents can work around; the domain is fundamentally a read-only data provider, so no create/update/delete is expected.

Maintenance

ActivityInactive
ResponsivenessNo issues