MCP server for vdradmin-go

This was a bit of a fun project. I wanted to check if it’s possible to control VDR with Copilot, Claude Code or Codex AI agents. To give AI agents access to external data sources you can do this either via a CLI tool that the agent can execute or a MCP server using the Model Context Protocol or MCP in short.
I used VS Code, Copilot and GPT-5.6 Terra AI model to create a plan first and then do the implementation. It turned out using hexagonal (ports & adapters) architecture and clean code right from the start was the right approach. Adding MCP server support was basically a no-brainer now for the AI agent. The first implementation worked already.
With version 0.10.0 of vdradmin-go there is now also a new binary called vdradmin-go-mcp. How to setup everything is documented in MCP.md.
If you have setup vdradmin-go already and you just want to do a quick test with the MCP server you just need to run this command:
vdradmin-go-mcp --transport=http --config config.yaml
Of course config.yaml needs to be a valid vdradmin-go configuration file. You only need to add
mcp:
host: "127.0.0.1"
port: 8081
there because these are the new configurations options for the MCP server (but actually it should run without but haven’t tested it). vdradmin-go and vdradmin-go-mcp share the same code base.
If vdradmin-go-mcp is running and listening on port 8081 one can configure Visual Studio Code to make that MCP server available. It’s in the Add and manage MCP servers in VS Code docs. Here is the short version:
Open $HOME/.vscode/mcp.json and add the following JSON:
{
"servers": {
"vdradmin": {
"type": "http",
"url": "http://127.0.0.1:8081/mcp"
}
}
}
Then restart VS Code (just to be sure that it reads that file). Then open the Copilot chat window and you can start asking questions e.g.:
What TV shows are on air today between 20:15 and midnight on ZDF?
This returns something like this:
I’ll query ZDF’s schedule from 20:15 through midnight today and include programmes that overlap that window.
On ZDF HD today, Friday 28 August, between 20:15 and midnight:
20:15–21:15 — Die Chefin: Söhne
21:15–22:00 — SOKO Leipzig: Ungehört
22:00–22:30 — heute journal with weather
22:30–23:00 — heute-show spezial: High Noon im Osten
23:00–23:30 — ZDF Comedy Sommer mit Till Reiners
23:30–00:45 — Andrea Bocelli: Romanza – Eine musikalische Nacht in der Toskana
For now vdradmin-go-mcp provides only a read-only electronic program guide search tool: search_epg. So currently one can’t add timers or so. Something for one of the next versions 😉
You can also ask Copilot something like this:
How to use the vdradmin-go-mcp server?
And you should get something similar to this:
vdradmin-go-mcp provides a read-only electronic program guide search tool: search_epg.
Ask for programme information in plain language, for example:
- What is on ARD tonight?
- Find upcoming Formula 1 broadcasts.
- When is the next episode of Tatort?
- Search for films airing this weekend.
- What children’s programmes are on tomorrow morning?
I’ll translate the request into an EPG search and return the matching channel,
start time, title, and available programme details. It cannot change recordings,
timers, or VDR configuration.