Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
HOSTNoThe host to bind the server to (e.g. 0.0.0.0).
PORTNoThe port to bind the server to (e.g. 8000).
DEBUGNoVerbose logging (True/False).
DVRTOOLNoEnable the DVR operations tool domain (True/False).
MCP_URLNoURL of the MCP server the agent connects to (e.g. http://localhost:8000/mcp).
HTTPTOOLNoEnable the HTTP operations tool domain (True/False).
MODEL_IDNoOperator-configured model id for the agent.
PROVIDERNoOperator-configured LLM provider for the agent.
TRANSPORTNoThe transport mode: stdio, streamable-http, or sse.
CONFIGTOOLNoEnable the Config operations tool domain (True/False).
DOCTORTOOLNoEnable the Doctor operations tool domain (True/False).
ENABLE_OTELNoEnable OpenTelemetry telemetry (True/False).
EUNOMIA_TYPENoThe Eunomia access governance type: none, embedded, or remote.
DISCOVERYTOOLNoEnable the Discovery operations tool domain (True/False).
ENABLE_WEB_UINoServe the AG-UI web interface (True/False).
HDHOMERUN_URLYesThe HDHomeRun device base URL (e.g. http://hdhomerun.local).
MCP_TOOL_MODENoTool surface mode: intent (default), condensed, verbose, or both.
OIDC_CLIENT_IDNoOIDC client id (service-account auth).
MCP_CLIENT_AUTHNoOutbound MCP child auth: oidc-client-credentials | basic | none.
MCP_ENABLED_TAGSNoComma-separated tag allow-list.
PYTHONUNBUFFEREDNoUnbuffered stdout (recommended in containers, e.g. 1).
MCP_DISABLED_TAGSNoComma-separated tag deny-list.
MCP_ENABLED_TOOLSNoComma-separated tool allow-list.
EUNOMIA_REMOTE_URLNoURL of the remote Eunomia server (e.g. http://eunomia-server:8000).
MCP_DISABLED_TOOLSNoComma-separated tool deny-list.
EUNOMIA_POLICY_FILENoPath to the Eunomia policy file (e.g. mcp_policies.json).
HDHOMERUN_DEVICE_AUTHNoThe device's DeviceAuth token (only needed for SiliconDust cloud DVR calls; rotates on reboot/firmware update — do not hardcode).
HDHOMERUN_TLS_PROFILENoNamed outbound TLS policy from AgentConfig; only matters for the SiliconDust cloud recording-rules API (local tuner devices are plain HTTP). Verification is mandatory and cannot be disabled.
OIDC_CLIENT_SECRET_REFNoRuntime secret reference for the OIDC service account.
MCP_BASIC_AUTH_USERNAMENoHTTP Basic username (MCP_CLIENT_AUTH=basic).
HDHOMERUN_TLS_PROFILE_REFNoReference to the named outbound TLS policy.
MCP_BASIC_AUTH_PASSWORD_REFNoRuntime secret reference for HTTP Basic auth (MCP_CLIENT_AUTH=basic).
OTEL_EXPORTER_OTLP_ENDPOINTNoThe OTLP endpoint for telemetry (e.g. http://localhost:8080/api/public/otel).
OTEL_EXPORTER_OTLP_PROTOCOLNoThe OTLP protocol (e.g. http/protobuf).

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": true
}
resources
{
  "subscribe": false,
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
discovery_operations_cacheC

Cache (discovery_operations). Discover HDHomeRun devices on the network — local UDP broadcast (port 65001, may not cross VLANs), targeted UDP to a known IP, or the SiliconDust cloud discovery endpoint. CONCEPT:HDHR-discovery.network.device-location

hdhomerun_abort_scanA

POST /lineup.post?scan=abort — cancel an in-progress channel scan.

hdhomerun_add_datetime_ruleB

Add a DateTimeOnly-ChannelOnly rule (record one specific airing).

hdhomerun_add_series_ruleC

Add a Series (or Movie) recording rule for a SeriesID.

hdhomerun_build_live_tv_urlB

Build a record-engine buffered Live TV URL.

ClientID must be stable per app instance/picture-in-picture pane; SessionID must be unique per new channel request (reused only when seeking within the same session) — see the live_tv doc page.

hdhomerun_build_stream_urlB

Build a live-stream URL: /{auto|tuner}/{v|ch[-]}.

Args: channel: virtual channel number (e.g. "24.1") or RF frequency in Hz when by_frequency is True. tuner: tuner index (0-3) to force a specific tuner, or None for /auto/ (first available tuner). by_frequency: use ch<frequency> addressing instead of v<channel>. program: sub-channel program number (only with by_frequency). duration: optional stream duration limit in seconds. transcode: optional EXTEND-model transcode profile.

hdhomerun_change_ruleC

Modify a rule, or reprioritize it via after_recording_rule_id.

hdhomerun_check_device_authD

Invoke the check_device_auth operation.

hdhomerun_check_device_reachableD

Invoke the check_device_reachable operation.

hdhomerun_check_discovery_cache_freshnessC

Invoke the check_discovery_cache_freshness operation.

hdhomerun_check_firmware_modelD

Invoke the check_firmware_model operation.

hdhomerun_check_signal_strengthC

Briefly tune each channel and sample ss/snq/seq, then release the tuner.

hdhomerun_check_tuner_count_vs_jellyfinD

Invoke the check_tuner_count_vs_jellyfin operation.

hdhomerun_delete_recordingA

POST cmd=delete[&rerecord=1].

Must be POST (HTTP GET is rejected with 400). Set rerecord=True to tell the DVR to record the episode again on a future airing.

hdhomerun_delete_ruleB

Delete a Series/Movie rule (by RecordingRuleID or SeriesID) or a DateTimeOnly-ChannelOnly rule (RecordingRuleID, or SeriesID+DateTimeOnly+ChannelOnly).

hdhomerun_disable_lineup_locationA

Disable the lineup-server connection (/lineup/location disabled).

hdhomerun_discover_cloudA

GET http://ipv4-api.hdhomerun.com/discover[?DeviceID=].

SiliconDust's cloud discovery endpoint — resolves a device's current LAN IP by its DeviceID even when local broadcast can't reach it (e.g. client on a different VLAN). Returns [{"DeviceID","LocalIP","BaseURL","DiscoverURL","LineupURL"}].

hdhomerun_discover_local_broadcastA

Broadcast a DISCOVER_REQ on UDP port 65001 and collect DISCOVER_RPY replies.

May legitimately return an empty list — broadcast discovery does not cross VLAN/subnet boundaries on most networks. Use discover_cloud() or a known IP + get_discover() as a fallback.

hdhomerun_discover_local_targetedB

Send a DISCOVER_REQ directly to a known IP (works across VLANs).

hdhomerun_get_channelB

/tuner<n>/channel — current <modulation>:<frequency> or none.

hdhomerun_get_channelmapC

/tuner<n>/channelmap — the configured channel-to-frequency map.

hdhomerun_get_discoverC

GET /discover.json — FriendlyName/ModelNumber/FirmwareVersion/DeviceID/ DeviceAuth/BaseURL/LineupURL/TunerCount.

hdhomerun_get_filterC

/tuner<n>/filter — the current PID filter (default 0x0000-0x1FFF).

hdhomerun_get_helpA

get help — the list of get/set item paths this device supports.

hdhomerun_get_ir_targetB

/ir/target — the configured IR-blaster target IP:port.

hdhomerun_get_itemC

hdhomerun_config <id> get <item> — raw get of any supported item path.

hdhomerun_get_lineupB

GET /lineup.{json,xml,m3u} — the channel list.

JSON entries: GuideNumber, GuideName, VideoCodec, AudioCodec, HD, Favorite, DRM, URL (per the http_api doc + observed live fields).

hdhomerun_get_lineup_statusB

GET /lineup_status.json — scan state.

Idle: {ScanInProgress, ScanPossible, Source, SourceList}. Scanning: {ScanInProgress:1, Progress, Found}.

hdhomerun_get_lockkeyB

/tuner<n>/lockkey — current tuner lock owner (none if unlocked).

hdhomerun_get_programC

/tuner<n>/program — the current MPEG program (sub-channel) filter.

hdhomerun_get_record_engine_statusB

GET /discover.json — FriendlyName/Version/ BaseURL/StorageURL/FreeSpace of the local record engine.

hdhomerun_get_recorded_filesA

GET (recorded_files.json) — the list of recordings available for playback, each including its own CmdURL/PlayURL.

hdhomerun_get_sys_copyrightA

/sys/copyright — the firmware copyright notice.

hdhomerun_get_sys_debugC

/sys/debug — device-wide debug info.

hdhomerun_get_sys_featuresB

/sys/features — supported channelmaps/modulations for this device.

hdhomerun_get_sys_modelC

/sys/model — the device model name.

hdhomerun_get_sys_versionB

/sys/version — the firmware version string.

hdhomerun_get_targetC

/tuner<n>/target — the current UDP/RTP streaming target.

hdhomerun_get_tuner_debugB

/tuner<n>/debug — extended tun/dev/ts/flt/net diagnostic counters.

hdhomerun_get_tuner_statusC

/tuner<n>/status — ch=... lock=... ss=... snq=... seq=... bps=... pps=....

hdhomerun_get_tuner_streaminfoC

/tuner<n>/streaminfo — detected programs: <num>: <major>.<minor> [name].

hdhomerun_get_tuner_vstatusB

/tuner<n>/vstatus — virtual-channel auth/CCI/CGMS status (model/firmware dependent; some devices report "unknown getset variable").

hdhomerun_list_recording_rulesB

List all recording rules for the household's DeviceAuth(s).

hdhomerun_parse_tuner_statusB

Parse a ch=... lock=... ss=... snq=... seq=... bps=... pps=... status line.

hdhomerun_poke_record_engineA

POST /recording_events.post?sync.

Tells the record engine to recompute upcoming record tasks — call after adding/changing/deleting a recording rule.

hdhomerun_restart_deviceB

/sys/restart self — reboot the HDHomeRun. Destructive; use with care.

hdhomerun_run_doctorC

Run every check and return the aggregate report.

hdhomerun_set_channelC

/tuner<n>/channel set — e.g. auto:651000000 or auto:60; none to stop.

hdhomerun_set_channelmapC

/tuner<n>/channelmap set — e.g. us-bcast/us-cable/us-hrc/us-irc.

hdhomerun_set_filterC

/tuner<n>/filter set — e.g. 0x0000-0x1FFF or a space-separated PID list.

hdhomerun_set_ir_targetC

/ir/target set — <ip>:<port>.

hdhomerun_set_itemC

hdhomerun_config <id> set <item> <value> — raw set (implicit get-back).

hdhomerun_set_lineup_locationC

/lineup/location set — <countrycode>:<postcode> (or set to "disabled").

hdhomerun_set_lockkeyC

/tuner<n>/lockkey set/clear — pass lock=False to release.

hdhomerun_set_programC

/tuner<n>/program set — filter to a single program (sub-channel) number.

hdhomerun_set_targetC

/tuner<n>/target set — e.g. udp://192.168.1.100:5000 or rtp://....

hdhomerun_start_scanC

POST /lineup.post?scan=start[&source=] — begin a channel scan.

hdhomerun_stop_tunerA

Set /tuner<n>/channel none — release the tuner.

Prompts

Interactive templates invoked by user choice

NameDescription
connector-statusAsk for this connector server's current operational status.

Resources

Contextual data attached and managed by the client

NameDescription
_connector_status_resourceNative resource exposing this server's static status payload.
ontology://hdhomerun-mcp/hdhomerun.ttl
connector-resourcesData sources, ontology mappings and resources of this connector.
hdhr-discovery-ops/SKILL.mdFind HDHomeRun tuner devices on the network via the hdhomerun-mcp MCP server — local UDP broadcast/targeted discovery on port 65001, and the SiliconDust cloud discovery endpoint (http://ipv4-api.hdhomerun.com/discover) for when broadcast can't reach the device (different VLAN/subnet). Use when the agent doesn't yet know a device's IP, or a previously-known IP may have changed (DHCP re-lease). Do NOT use once you have a working device URL — go straight to hdhr-http-api-ops/hdhr-tuner-control; and do NOT use for DVR record-engine discovery (that is a per-record-engine discover.json call documented under hdhr-dvr-ops).
hdhr-discovery-ops/_manifestFile listing for hdhr-discovery-ops
hdhr-dvr-ops/SKILL.mdManage HDHomeRun DVR recording rules (SiliconDust cloud API, api.hdhomerun.com/api/recording_rules) and local record-engine operations (status, recorded_files listing, poke-after-rule-change, delete-a-recording, buffered Live TV URLs) via the hdhomerun-mcp MCP server. Use when the agent must add/change/delete a Series/Movie/DateTimeOnly recording rule, list or delete recordings, or build a Live TV playback URL against a SiliconDust cloud DVR (Scribe/Server/Connect+storage) setup. Do NOT use for tuner-only hardware with no DVR/record-engine (this package's own test device is tuner-only) — that's a hard prerequisite failure, not a usage error.
hdhr-dvr-ops/_manifestFile listing for hdhr-dvr-ops
hdhr-http-api-ops/SKILL.mdQuery and control an HDHomeRun tuner's HTTP JSON API via the hdhomerun-mcp MCP server — discover.json device identity, the lineup.json/lineup_status.json channel list and scan state, scan start/abort control, and building auto/tuner<n> live-stream URLs. Use when the agent needs the channel lineup, device firmware/tuner-count info, or to kick off/monitor a channel scan on a known device URL. Do NOT use for local network discovery of an unknown device (use hdhr-discovery-ops), DVR recording rules/record-engine calls (use hdhr-dvr-ops), per-tuner signal/status/tuning via the binary control protocol (use hdhr-tuner-control), or aggregate health checks (use hdhr-doctor).
hdhr-http-api-ops/_manifestFile listing for hdhr-http-api-ops
hdhr-jellyfin-livetv-setup/SKILL.mdWire a real HDHomeRun tuner into Jellyfin Live TV end-to-end: add it as a TunerHost, add free XMLTV guide data for users without a Schedules Direct subscription, map the tuner's lineup to XMLTV channels by call sign/ GuideNumber, and validate live playback. Grounded in a verified real setup (HDHomeRun FLEX 4K + Jellyfin 10.11.11, Austin TX OTA market) — not speculative. Use when the agent must onboard an HDHomeRun into Jellyfin Live TV or diagnose why channels/guide data aren't showing up. Do NOT use this to fix jellyfin-mcp's own dynamic-router bugs (out of scope; documented as a Gotcha with a workaround) or for SiliconDust cloud DVR recording rules (use hdhr-dvr-ops instead — this workflow is about Jellyfin's own Live TV/DVR).
hdhr-jellyfin-livetv-setup/_manifestFile listing for hdhr-jellyfin-livetv-setup
hdhomerun-mcp-development/SKILL.mdDevelop, test, gate, and release the HDHomeRun connector while preserving its local tuner and cloud DVR boundaries, SDK connector wiring, packaged content, and source-backed Pages publication.
hdhomerun-mcp-development/_manifestFile listing for hdhomerun-mcp-development
hdhr-tuner-control/SKILL.mdQuery and control individual HDHomeRun tuners via the binary hdhomerun_config TCP control protocol (port 65001 — a DIFFERENT wire protocol from the HTTP JSON API) through the hdhomerun-mcp MCP server: per-tuner status/vstatus/streaminfo/debug, channel/channelmap/filter/program/ target get-set, tuner lock, IR target, lineup location, and /sys/ firmware info. Use when the agent needs raw signal metrics (ss/snq/seq), to tune a physical RF channel directly, set a PID/program filter, or stream to a UDP/ RTP target — the same operations the official hdhomerun_config CLI performs. Do NOT use for the channel lineup or HTTP streaming URLs (use hdhr-http-api-ops) or DVR recording rules (use hdhr-dvr-ops).
hdhr-tuner-control/_manifestFile listing for hdhr-tuner-control
hdhr-doctor/SKILL.mdRun an actionable pass/fail health check on an HDHomeRun deployment via the hdhomerun-mcp MCP server's doctor tool — device reachability, firmware/model info, tuner count vs. a paired Jellyfin TunerHost, per-channel signal strength, DeviceAuth presence/validity, and discovery-cache freshness. Use when the agent must diagnose "Live TV isn't working" style problems, verify a fresh setup before wiring it into Jellyfin, or produce a status report for the user. Do NOT use for routine channel/tuning operations (use hdhr-http-api-ops/hdhr-tuner-control) — this skill is diagnostic-only and composes those, matching the fleet's cm_doctor convention (container-manager-mcp).
hdhr-doctor/_manifestFile listing for hdhr-doctor

TDQS

C2.5/5.0

Scored across 58 tools

Disambiguation2/5

There is substantial overlap between generic raw endpoints (hdhomerun_get_item/hdhomerun_set_item) and many specific getters/setters for the same tuner/sys paths. Discovery is split across several related tools, and multiple hdhomerun_check_* tools have only placeholder descriptions that do not clearly distinguish their behavior.

Naming Consistency4/5

Nearly all tools use a consistent hdhomerun_ snake_case verb_noun pattern. The main outlier is discovery_operations_cache, which lacks the server prefix and uses a noun-oriented pattern unlike the rest.

Tool Count2/5

With 58 tools, the surface is very large for an HDHomeRun control server and includes many low-level wrappers plus generic raw get/set tools that duplicate specific tools. The count exceeds a reasonable well-scoped set even for a device with tuner, DVR, discovery, and diagnostic operations.

Completeness4/5

The tool set covers discovery, tuner control, streaming URL construction, lineup scanning, recording rules, DVR file listing/deletion, diagnostics, and restart operations. Coverage is broad, with only minor gaps such as firmware update or higher-level DVR management workflows.

Maintenance

ActivityActive
ResponsivenessNo issues