Files
ha-gronod-addons/emby-mcp/CHANGELOG.md
gronod 7bcf5322e1 feat: emby-mcp 1.0.16 player owner filter and HA links
Expose session/last-used user and device IP on player rows. Filter
retrieve_player_list by users, merge GET /Devices when include_offline
is set, and resolve spoken names to HA media_player entities via
player_links (device_id or IP). PlayNow still requires a live session.
2026-09-25 19:58:58 +00:00

5.2 KiB

Changelog

1.0.16

  • Player rows include user_id, user_name, online, and keep device_ip_address (Emby session RemoteEndPoint, host only)
  • retrieve_player_list accepts users (comma-separated include-list) and include_offline (merge GET /Devices last-used owners)
  • Add-on options player_users and player_links feed a default include-list and HA entity map (ha_entity, ha_source, device_ip, emby_device_id)
  • New tool resolve_media_player for "play on the lounge": returns HA entity/source plus session_id when live, or wake_required
  • Conversation Functions YAML and system prompt updated in DOCS.md

Potential breaking change

  • Player JSON grows user_id, user_name, and online. Re-paste the DOCS.md Functions block to pick up emby_list_players parameters and emby_resolve_player. Existing PlayNow calls are unchanged.
  • Empty player_users means no default filter (same listing as 1.0.15, plus owner fields). Non-empty player_users hides other accounts even when the model omits users.

1.0.15

  • Restore premiere_date on item-shaped results (search, episode/season lists, next-episode, playlist items, play queue). Emby's PremiereDate is the first air date for episodes/series and the release date for movies; it is emitted as YYYY-MM-DD and omitted when metadata is empty
  • Request PremiereDate again in upstream Fields
  • Conversation-agent system prompt in DOCS.md now tells the model to read premiere_date for airdate questions

Potential breaking change

  • Item JSON grows a premiere_date key versus the 1.0.11 slim shape. Home Assistant function parameters are unchanged (value_template still returns value_json.result). Re-paste the DOCS.md system prompt so the agent looks for premiere_date; the Functions YAML block does not need to be replaced unless you also want the updated prompt text nearby. Clients that reject unknown item keys must allow premiere_date.

1.0.14

  • control_media_player PlayNow now honours time_milliseconds as a start position (StartPositionTicks), so "play X from 4:06" works
  • README conversation-agent functions: emby_playback_control declares and forwards time_milliseconds (previously hardcoded to 0, so Seek always jumped to the beginning); added emby_episode_list/emby_season_list

1.0.13

  • lyrics_or_description is now optional in the search_for_item schema — calls that omit it are accepted too (1.0.12 required it, breaking updated clients that stopped sending the key)

1.0.12

  • REST bridge filters undeclared tool arguments against the cached tools/list schema and reports them as dropped_arguments — stale keys from older clients no longer fail the whole call
  • search_for_item re-accepts lyrics_or_description as a deprecated, ignored parameter for backward compatibility

1.0.11

  • Slim tool responses: omit empty fields and drop overview, lyrics, file_path, creation_date, premiere_date, bitrate from item-shaped results (production_year retained)
  • Absent numeric/percent fields now omit the key instead of emitting ""
  • Player sessions report now-playing times as hh:mm:ss only (*_milliseconds fields removed)
  • Playlists drop overview/date_created; playlist and queue items match the trimmed item shape
  • Remove the lyrics_or_description search parameter from search_for_item
  • Slim upstream Fields requests to match the reduced output

1.0.10

  • Do not truncate Emby response bodies before JSON decode (DEBUG logging caused unexpected EOF on large episode lists)
  • Stop requesting MediaSources on item search; keep episode/season fields

1.0.9

  • Move per-layer debug flags into an optional debug options section

1.0.8

  • Log level option: DEBUG, INFO, WARN
  • DEBUG-only layer flags: REST (/call, /tools), MCP (/mcp), Emby API
  • Request/response bodies logged per selected layer (secrets redacted)

1.0.7

  • Re-authenticate with stored Emby username/password on HTTP 401
  • Stop revoking the Emby access token when the 15-minute auth cache expires
  • REST bridge retries MCP JSON-RPC errors that look like expired tokens

1.0.6

  • Log every HTTP request (method, path, peer, status)

1.0.5

  • Allow Home Assistant Core and add-on network (172.30.32.0/23, 172.30.33.0/24) as well as loopback when restrict_to_localhost is on
  • Leave the container on the Supervisor network so c5cb4244-emby-mcp resolves
  • Do not publish port 8085 on the host LAN
  • Stop binding only 127.0.0.1 (that blocked Assist)

1.0.4

  • Set add-on hostname to local-emby-mcp-bridge

1.0.3

  • Add-on icon and logo

1.0.2

  • Default listen port is 8085

1.0.1

  • Add-on options for Emby username, password, API key and user id
  • restrict_to_localhost switch (default on): bind 127.0.0.1, reject non-loopback peers, apply stored credentials only for local callers
  • host_network so the loopback bind is the Home Assistant host

1.0.0

  • First Home Assistant add-on release
  • In-process Go REST bridge (/call/{tool}, /tools, /health)
  • Session init failures are no longer swallowed
  • Retries on HTTP 400/401/404 with a fresh MCP session
  • Per-request Authorization header forwarded to /mcp