npm package: @sportsbarwatch/mcp-server
Description: MCP server for SportsBarWatch — find bars showing live sports worldwide
Latest version: 0.1.3

# SportsBarWatch MCP Server

Find sports bars showing live matches worldwide — World Cup 2026, Premier League, Champions League, and 30+ sports across 2,000+ bars in 99 countries.

An [MCP (Model Context Protocol)](https://modelcontextprotocol.io) server that lets AI assistants answer questions like:

- "Where can I watch Arsenal vs Chelsea in London?"
- "What's on at sports bars in Stockholm tonight?"
- "Find bars showing the World Cup in Tokyo"

## Tools

| Tool | Description |
|------|-------------|
| `find_bars_showing_match` | Find bars showing a specific match by team name or match ID |
| `whats_on_tonight` | Get all matches showing at bars tonight in a city |
| `bar_details` | Get full details about a bar including upcoming matches |
| `search_matches` | Search matches by team, competition, or sport |
| `team_schedule` | Get upcoming schedule for a team with bar counts |

## Quick Start

### With Claude Desktop

Add to your config (`~/Library/Application Support/Claude/claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "sportsbarwatch": {
      "command": "npx",
      "args": ["-y", "@sportsbarwatch/mcp-server"],
      "env": {
        "SBW_DB_PATH": "/path/to/vargarmatchen.db"
      }
    }
  }
}
```

### With Claude Code

```bash
claude mcp add sportsbarwatch -- npx -y @sportsbarwatch/mcp-server
```

## Environment Variables

| Variable | Description | Default |
|----------|-------------|---------|
| `SBW_DB_PATH` | Path to SQLite database | `../data/vargarmatchen.db` |
| `SBW_TELEMETRY` | Set to `off` to disable demand logging | `on` |

## Anonymous Demand Logging

By default, the server logs anonymous demand signals (team + city + result count) to a local SQLite file (`mcp-demand.db`) next to the main database. This helps us understand which cities and teams have unmet demand so we can expand bar coverage.

**What is logged:** tool name, team/query (truncated to 80 chars, sanitized), city (bucketed to "[small city]" when fewer than 5 bars), sport, result count, date. One entry per unique combination per day. Data retained for 365 days.

**What is NOT logged:** no IP, no user identity, no device ID, no session tracking. Query inputs are truncated and sanitized — not raw conversation content.

**Opt out:** Set `SBW_TELEMETRY=off` in your environment.

## Data

The server reads from a SQLite database (read-only, no writes) containing:

- **2,000+ bars** across 99 countries and 680+ cities
- **Daily-updated** match schedules from 188 automated scrapers
- **30+ sports**: football, ice hockey, basketball, tennis, rugby, motorsport, and more
- **World Cup 2026**: all 48 teams, group stage schedule, host city venues

Data is scraped daily from bar websites via GitHub Actions. Major chains include O'Learys, Walkabout, Social Pub & Kitchen, Belushi's, and hundreds of independent sports bars.

## Example Queries

Ask your AI assistant:

- "Where can I watch the Champions League final in Berlin?"
- "What sports bars in Melbourne are showing AFL tonight?"
- "Find a bar showing England vs Croatia in the World Cup in London"
- "What's the schedule for Real Madrid this week?"
- "Tell me about O'Learys TOLV in Stockholm"

## Links

- **Website**: [sportsbarwatch.com](https://sportsbarwatch.com)
- **World Cup 2026**: [sportsbarwatch.com/worldcup](https://sportsbarwatch.com/worldcup)

## License

MIT