XMLTV MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@XMLTV MCP Serverwhat's currently playing on all channels?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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
Related MCP server: MCP *arr Server
Installation
npm install
npm run buildConfiguration
Set the XMLTV URL via environment variable (defaults to http://tunarr.lan/api/xmltv.xml):
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:
{
"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:
[
{
"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:
[
{
"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 hourssearch_programmes
Search for programmes by title, subtitle, or description.
Parameters:
query(required) - Search term
Example:
Search for Simpsons episodesResponse:
[
{
"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 IDstart_time(required) - Programme start time in XMLTV format (YYYYMMDDHHMMSS +0000)
Example:
Get details for the programme on C1.49.tunarr.com at 20251221180000 +0000Development
# Build
npm run build
# Watch mode
npm run devData 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:
C1.49.tunarr.com - Animation (Simpsons, South Park, Futurama, Rick & Morty, Courage)
C2.50.tunarr.com - Sitcom (Big Bang Theory, Friends, How I Met Your Mother)
C3.51.tunarr.com - Space (SEA, Anton Petrov, Cool Worlds, Astrum - YouTube science)
C4.52.tunarr.com - Classic Sci-Fi (Twilight Zone, X-Files)
License
MIT
Available Tools
5 toolsget_channelsB
Get list of all available TV channels
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states this is a read operation ('Get list'), but doesn't mention whether it returns live data, cached data, pagination, rate limits, authentication requirements, or error conditions. For a tool with zero annotation coverage, this leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that communicates the core purpose without any wasted words. It's appropriately sized for a simple retrieval tool and front-loads the essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with no parameters and no output schema, the description covers the basic purpose adequately. However, without annotations or output schema, it should ideally mention what format the channel list returns (e.g., array of objects with IDs/names) and any behavioral constraints. The lack of output schema increases the need for return value description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters (schema coverage 100%), so the description doesn't need to explain any inputs. The baseline for zero parameters is 4, as there are no parameters requiring semantic explanation beyond what the empty schema already indicates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('list of all available TV channels'), making the purpose immediately understandable. It doesn't explicitly differentiate from sibling tools like 'get_schedule' or 'search_programmes', but the focus on channels rather than programmes or schedules provides implicit differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'get_schedule' (which might return channel schedules) or 'search_programmes' (which might filter by content). There's no mention of prerequisites, context, or comparison with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_now_playingB
Get currently playing programmes on all channels
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While 'Get' implies a read operation, it doesn't specify whether this requires authentication, has rate limits, returns real-time vs cached data, or what format the response takes. The description is minimal and lacks important behavioral context for a tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that communicates the core purpose without any wasted words. It's appropriately sized for a zero-parameter tool and front-loads the essential information. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no output schema, the description provides basic purpose but lacks important context. It doesn't explain what 'currently playing' means temporally (real-time? within what window?), what data is returned, or how this differs from schedule-based siblings. The minimal description is adequate but has clear gaps given the tool's function.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters with 100% schema description coverage, so the baseline is 4. The description appropriately doesn't discuss parameters since none exist, and the schema already fully documents this. No additional parameter information is needed or provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and resource 'currently playing programmes on all channels', making the purpose immediately understandable. It doesn't specifically differentiate from siblings like 'get_schedule' or 'search_programmes', but the scope ('currently playing' vs scheduled/future programs) provides some implicit distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is provided about when to use this tool versus alternatives like 'get_schedule' or 'search_programmes'. The description implies it's for real-time/current programming only, but doesn't state this as explicit usage criteria or mention any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_programme_detailsC
Get detailed information about a specific programme
| Name | Required | Description | Default |
|---|---|---|---|
| channel_id | Yes | Channel ID | |
| start_time | Yes | Programme start time in XMLTV format (YYYYMMDDHHMMSS +0000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states it's a read operation ('Get'), implying it's likely safe and non-destructive, but doesn't cover aspects like rate limits, error handling, or response format. For a tool with zero annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without any wasted words. It's appropriately sized and front-loaded, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no annotations and no output schema, the description is incomplete. It doesn't explain what 'detailed information' includes, the return format, or any behavioral traits like pagination or errors. For a tool with 2 required parameters and no structured output, more context is needed to be fully helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with clear documentation for both parameters (channel_id and start_time). The description adds no additional meaning beyond the schema, such as explaining how these parameters uniquely identify a programme or providing usage examples. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('detailed information about a specific programme'), making the purpose understandable. However, it doesn't distinguish this tool from sibling tools like 'search_programmes' or 'get_schedule', which might also retrieve programme information, so it lacks sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, context, or exclusions, such as how it differs from 'search_programmes' or 'get_schedule', leaving the agent without usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_scheduleC
Get upcoming schedule for a specific channel
| Name | Required | Description | Default |
|---|---|---|---|
| channel_id | Yes | Channel ID (e.g., C1.49.tunarr.com) | |
| hours_ahead | No | Number of hours to look ahead (default: 24) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action but does not cover critical aspects like whether this is a read-only operation, potential rate limits, authentication needs, error handling, or the format of the returned schedule. This leaves significant gaps in understanding the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence that efficiently conveys the core purpose without any redundant information. It is appropriately sized and front-loaded, making it easy to understand at a glance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It does not explain what the returned schedule includes (e.g., list of programs, timings) or any behavioral traits, which are essential for a tool with parameters and no structured output documentation. This leaves the agent with insufficient context for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with clear documentation for 'channel_id' and 'hours_ahead'. The description adds no additional parameter semantics beyond what the schema provides, such as examples of valid channel IDs or constraints on 'hours_ahead'. Thus, it meets the baseline for high schema coverage without adding extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('upcoming schedule for a specific channel'), making the purpose unambiguous. However, it does not explicitly differentiate from sibling tools like 'get_now_playing' or 'search_programmes', which might also involve schedule-related queries, so it falls short of a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as 'get_now_playing' for current content or 'search_programmes' for broader searches. It lacks explicit when-to-use or when-not-to-use instructions, leaving usage context implied at best.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_programmesC
Search programmes by title, subtitle, or description
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states what the tool does but doesn't describe how it behaves: no information about pagination, rate limits, authentication requirements, error conditions, or what happens when no results are found. For a search tool with zero annotation coverage, this leaves significant gaps in understanding operational behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that communicates the core functionality without unnecessary words. It's appropriately sized for a simple search tool and front-loads the essential information. Every word earns its place in this concise statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with no annotations and no output schema, the description is insufficient. It doesn't explain what format results are returned in, whether there are limitations on search scope, or how results are ordered. Given the lack of structured metadata, the description should provide more operational context to be complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with the single 'query' parameter well-documented in the schema. The description adds minimal value by mentioning what fields are searched (title, subtitle, description), which provides context about how the query parameter is used. This meets the baseline for high schema coverage but doesn't significantly enhance parameter understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('search') and target resource ('programmes'), specifying the searchable fields (title, subtitle, description). It distinguishes from siblings like 'get_channels' or 'get_schedule' by focusing on search functionality rather than retrieval of specific data sets. However, it doesn't explicitly differentiate from potential similar search tools that might exist.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'get_programme_details' or 'get_now_playing'. It doesn't mention prerequisites, limitations, or typical use cases. The agent must infer usage from the tool name and description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
5 tool updates
v1.0.0- First observed
get_channels - First observed
get_now_playing - First observed
get_programme_details - First observed
get_schedule - First observed
search_programmes
TDQS
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.
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.
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.
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
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Unlock a world of television with the TV Maze MCP server. Effortlessly search for shows by name or
TVMaze MCP — TV show metadata, episodes, schedules (no auth)
Control Android TV from any AI. 38 MCP tools: playback, recap, recommend, smart-home, schedules.
Movies and TV show data — search, details, ratings, and cast from iTunes and TVmaze APIs
Related MCP Servers
- FlicenseBqualityDmaintenanceEnables AI assistants to manage TV series collections through Sonarr's API using natural language interactions. Supports searching, adding, updating, and deleting TV series with detailed control over quality profiles, season monitoring, and episode downloads.9-
- AlicenseAqualityBmaintenanceEnables unified control of \*arr media management applications (Sonarr, Radarr, Lidarr, Readarr, Prowlarr) through natural language queries. Manage TV shows, movies, music, books, search for content, monitor downloads, and check upcoming releases across all services.66572207MIT
- AlicenseNot gradedqualityDmaintenanceEnables interaction with Sonarr and Radarr APIs to query media libraries, check recent additions, view upcoming releases, manage download queues, and perform searches for TV shows and movies through natural language.1MIT
- FlicenseAqualityBmaintenanceEnables users to manage Sonarr and Radarr instances through natural language, allowing search, addition, deletion, and monitoring of TV series and movies.60-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/icyrainz/xmltv-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server