Commit Graph

4 Commits

Author SHA1 Message Date
Andres Eduardo Garcia Marquez 36a1ca8d1a feat: add tv_current_app, tv_aspect_ratio, tv_captions tools
- current_app: detects running app by iterating known aliases via REST
- aspect_ratio: get/set via UPnP X_GetAspectRatio/X_SetAspectRatio
- captions: get state via UPnP X_GetCaptionState, toggle via KEY_CAPTION
- Updated README to reflect 18 tools

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 19:00:21 -05:00
Andres Eduardo Garcia Marquez 66bb08b683 fix: dynamic timeout for tv_key with times > 1
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 09:56:55 -05:00
Andres Eduardo Garcia Marquez 02070b7f02 fix: async tools with asyncio.wait_for to prevent MCP blocking
All tools are now async with hard timeout (10s) via
asyncio.wait_for + ThreadPoolExecutor. If any sync operation
(WebSocket, UPnP, REST) hangs, the MCP returns an error
instead of freezing the entire Claude Code session.

Root cause: sync functions blocked FastMCP's event loop.
SIGALRM and ThreadPoolExecutor.result(timeout) don't work
inside FastMCP threads. asyncio.wait_for is the correct
pattern for this context.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 02:27:03 -05:00
Andres Eduardo Garcia Marquez f12556bb43 feat: initial release — Samsung TV MCP server
15 tools for controlling Samsung Tizen TVs via local network.
Auto-discovery (SSDP), WebSocket remote, UPnP volume/DLNA,
app management, browser control, and Wake-on-LAN.

Tested on Samsung UN65TU7000KXZL (2020, Crystal UHD).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 00:54:08 -05:00