Skip to main content
Glama
kimhjort

aria-mcp-tvguide-dk

by kimhjort
README.md
# aria-mcp-tvguide-dk

A [Model Context Protocol (MCP)](https://modelcontextprotocol.io) server that exposes the Danish TV guide (EPG) to AI assistants. Built for [ARIA](https://github.com/kimhjort/aria) and shareable with the community.

**Fully keyless** — no API key required.

## What it does

Lets your AI assistant answer questions like:

- *"Hvad går der i fjernsynet i aften?"*
- *"Hvad sender DR1 kl. 20?"*
- *"Hvornår sender TV 2 Klovn?"*
- *"Hvor kan jeg se VM-kampen i aften?"*

## Data Source

EPG data is provided by **[Allente Denmark](https://allente.dk)** via their internal EPG API (`https://cs-vcb.allente.dk/epg/events`). The data is best-effort for personal/hobby use. Check Allente's Terms of Service before any redistribution or commercial use.

Covers all major Danish channels: DR1, DR2, DR Ramasjang, TV 2, TV 2 News, TV 2 Charlie, TV 2 Sport, TV3, TV3+, Kanal 4, Kanal 5, 6'eren, CANAL9, dk4, Eurosport, Discovery, National Geographic, BBC Nordic, and more.

## Install & Run

```bash
npx aria-mcp-tvguide-dk
```

Or install globally:

```bash
npm install -g aria-mcp-tvguide-dk
aria-mcp-tvguide-dk
```

Requires Node.js 20 or later.

## Tools

### `list_channels`

List available channels with id and name. Supports an optional name filter.

**Parameters:**

| Name | Type | Required | Description |
|---|---|---|---|
| `filter` | string | No | Case-insensitive substring to filter channel names (e.g. "dr", "tv 2", "sport") |

**Returns:** `{ count, channels[{ id, name }] }`

---

### `whats_on`

Return the programme airing on a channel now (or at a specified time).

**Parameters:**

| Name | Type | Required | Description |
|---|---|---|---|
| `channel` | string | Yes | Channel name (e.g. "DR1", "TV 2", "Kanal 5") or numeric id |
| `when` | string | No | ISO 8601 datetime or "HH:MM" (today Copenhagen). Omit for current time. |

**Returns:** A single `Programme` object:

```json
{
  "channelId": "452",
  "channelName": "DR1",
  "title": "Fodbold: VM",
  "start": "2026-06-12T21:00:00+02:00",
  "stop": "2026-06-12T22:05:00+02:00",
  "durationMinutes": 65,
  "description": "Der er store VM-drømme i Canada...",
  "categories": ["sport"],
  "live": false
}
```

---

### `tonight`

Return prime-time (19:00–23:00 Copenhagen) TV listings for today, grouped by channel.

**Parameters:**

| Name | Type | Required | Description |
|---|---|---|---|
| `channels` | string[] | No | Channel names or ids to include. Defaults to the default channel set. |

**Returns:** `{ date, primetime, channels: { [channelName]: Programme[] } }`

---

### `search_program`

Find programmes by title across channels for a date.

**Parameters:**

| Name | Type | Required | Description |
|---|---|---|---|
| `title` | string | Yes | Substring to search in programme titles (case-insensitive) |
| `channels` | string[] | No | Channels to search (defaults to default channel set) |
| `date` | string | No | YYYY-MM-DD date to search (defaults to today Copenhagen) |

**Returns:** `{ query, date, matchCount, programmes: Programme[] }`

## Environment Variables

| Variable | Description |
|---|---|
| `DEFAULT_CHANNELS` | Comma-separated channel names or ids for the default set used by `tonight` and `search_program`. Example: `"DR1,TV 2,TV3,Kanal 5"` |

When unset, the default is: DR1, DR2, TV 2, TV 2 News, TV3, TV3+, Kanal 4, Kanal 5, TV 2 Charlie, 6'eren.

## ARIA MCP Config

Add to your ARIA credentials / MCP config:

```json
{
  "command": "npx",
  "args": ["-y", "aria-mcp-tvguide-dk"],
  "env": {}
}
```

With a custom default channel set:

```json
{
  "command": "npx",
  "args": ["-y", "aria-mcp-tvguide-dk"],
  "env": {
    "DEFAULT_CHANNELS": "DR1,TV 2,TV3,Kanal 5"
  }
}
```

## Development

```bash
git clone https://github.com/kimhjort/aria-mcp-tvguide-dk
cd aria-mcp-tvguide-dk
npm install
npm run build
npm test
```

## Attribution & Terms

EPG data is sourced from Allente Denmark (`allente.dk`). This server is a personal/hobby project. The Allente EPG API is not a documented public API — use it in good faith and at your own risk. Check [Allente's terms](https://allente.dk/vilkaar) before any redistribution or commercial use.

## License

MIT — see [LICENSE](LICENSE).

TDQS

A4.2/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: list_channels discovers channels, search_program searches by title, tonight returns prime-time listings, and whats_on gets current or scheduled program for a channel. No overlap.

Naming Consistency4/5

Most tools follow a verb_noun pattern (list_channels, search_program) but 'tonight' is a single word and 'whats_on' uses a contraction. Still readable and predictable.

Tool Count5/5

With 4 tools, the set covers essential TV guide operations without bloat. Each tool serves a necessary function, and the count feels well-scoped for the domain.

Completeness4/5

The set covers channel discovery, search, prime-time, and current viewing. A minor gap is the lack of a full daily schedule beyond prime-time, but common queries are addressed.

Maintenance

ActivityMaintained
ResponsivenessSyncing