Skip to main content
Glama
icyrainz

XMLTV MCP Server

by icyrainz
README.md
# XMLTV MCP Server

MCP server for accessing Tunarr XMLTV feed data. Provides tools to query TV channels, programmes, schedules, and search content.

## Features

- **get_channels** - List all available TV channels
- **get_now_playing** - See what's currently playing on all channels
- **get_schedule** - Get upcoming schedule for a specific channel
- **search_programmes** - Search for programmes by title or description
- **get_programme_details** - Get detailed information about a specific programme

## Installation

```bash
npm install
npm run build
```

## Configuration

Set the XMLTV URL via environment variable (defaults to `http://tunarr.lan/api/xmltv.xml`):

```bash
export XMLTV_URL="http://your-tunarr-instance/api/xmltv.xml"
```

## Usage with Claude Desktop

Add to your Claude Desktop configuration file:

### macOS
`~/Library/Application Support/Claude/claude_desktop_config.json`

### Windows
`%APPDATA%/Claude/claude_desktop_config.json`

Configuration:

```json
{
  "mcpServers": {
    "xmltv": {
      "command": "node",
      "args": ["/absolute/path/to/xmltv-mcp/dist/index.js"],
      "env": {
        "XMLTV_URL": "http://tunarr.lan/api/xmltv.xml"
      }
    }
  }
}
```

After updating the configuration, restart Claude Desktop.

## Tools

### get_channels

Lists all available channels.

**Example:**
```
What channels are available?
```

**Response:**
```json
[
  {
    "id": "C1.49.tunarr.com",
    "name": "Animation (Simpsons, South Park, Futurama, Rick & Morty, Courage)"
  },
  {
    "id": "C2.50.tunarr.com",
    "name": "Sitcom (Big Bang Theory, Friends, How I Met Your Mother)"
  }
]
```

### get_now_playing

Shows what's currently playing on all channels.

**Example:**
```
What's on TV right now?
```

**Response:**
```json
[
  {
    "channel": {
      "id": "C1.49.tunarr.com",
      "name": "Animation"
    },
    "programme": {
      "title": "The Simpsons",
      "subtitle": "Homer's Odyssey",
      "start": "20251221180000 +0000",
      "stop": "20251221183000 +0000"
    }
  }
]
```

### get_schedule

Get upcoming programmes for a specific channel.

**Parameters:**
- `channel_id` (required) - Channel ID (e.g., "C1.49.tunarr.com")
- `hours_ahead` (optional) - Hours to look ahead (default: 24)

**Example:**
```
Show me the schedule for the Animation channel for the next 12 hours
```

### search_programmes

Search for programmes by title, subtitle, or description.

**Parameters:**
- `query` (required) - Search term

**Example:**
```
Search for Simpsons episodes
```

**Response:**
```json
[
  {
    "channel": {
      "id": "C1.49.tunarr.com",
      "name": "Animation"
    },
    "title": "The Simpsons",
    "subtitle": "Bart the Genius",
    "start": "20251221190000 +0000",
    "stop": "20251221193000 +0000"
  }
]
```

### get_programme_details

Get detailed information about a specific programme.

**Parameters:**
- `channel_id` (required) - Channel ID
- `start_time` (required) - Programme start time in XMLTV format (YYYYMMDDHHMMSS +0000)

**Example:**
```
Get details for the programme on C1.49.tunarr.com at 20251221180000 +0000
```

## Development

```bash
# Build
npm run build

# Watch mode
npm run dev
```

## Data Caching

The server caches XMLTV data for 5 minutes to reduce load on your Tunarr instance. The cache automatically refreshes when expired.

## Channel Information

Based on your Tunarr setup, the following channels are available:

1. **C1.49.tunarr.com** - Animation (Simpsons, South Park, Futurama, Rick & Morty, Courage)
2. **C2.50.tunarr.com** - Sitcom (Big Bang Theory, Friends, How I Met Your Mother)
3. **C3.51.tunarr.com** - Space (SEA, Anton Petrov, Cool Worlds, Astrum - YouTube science)
4. **C4.52.tunarr.com** - Classic Sci-Fi (Twilight Zone, X-Files)

## License

MIT

TDQS

A3.5/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a clearly distinct purpose targeting different aspects of the XMLTV domain: channel listing, current programs, program details, channel schedules, and program search. There is no overlap in functionality, making tool selection straightforward for an agent.

Naming Consistency5/5

All tools follow a consistent verb_noun naming pattern (get_channels, get_now_playing, get_programme_details, get_schedule, search_programmes) with clear, descriptive names. The pattern is uniform throughout the set, enhancing readability and predictability.

Tool Count5/5

With 5 tools, this server is well-scoped for its XMLTV purpose, covering key operations without bloat. Each tool serves a distinct and necessary function, making the count appropriate for the domain's typical use cases.

Completeness4/5

The tool set provides strong coverage for querying and browsing TV data, including channels, schedules, programs, and search. A minor gap exists in update or management operations (e.g., modifying channels or programs), but this is reasonable for a read-only server focused on data retrieval.

Maintenance

ActivityInactive
ResponsivenessNo issues