{"name":"io.github.jack1590/RokuMCP","slug":"jack1590-rokumcp","title":null,"description":"MCP server for Roku device automation — deploy, ECP control, screenshots, and debug console","url":"https://mcp.market/server/jack1590-rokumcp","rating":null,"grade":"B","score":72,"certified":false,"status":"active","category":"devtools","tags":["devtools"],"presence":{"score":22,"stars":3,"forks":1,"downloads_week":93,"last_push_at":"2026-06-06T01:21:03.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/jack1590/RokuMCP","website":null,"version":"1.3.2","remotes":[],"packages":[{"registryType":"npm","identifier":"roku-mcp","version":"1.3.2","transport":{"type":"stdio"},"environmentVariables":[{"description":"IP address or hostname of the Roku device","format":"string","name":"ROKU_DEVICE_HOST"},{"description":"Developer password for the Roku device","format":"string","isSecret":true,"name":"ROKU_DEVICE_PASSWORD"}]}],"tools":[{"name":"roku_console_connect","description":"Open a persistent TCP connection to the BrightScript debug console on port 8085. Only one connection is active at a time.","write_action":false,"price_micros":0,"input_schema":null},{"name":"roku_console_disconnect","description":"Close the active BrightScript debug console connection.","write_action":false,"price_micros":0,"input_schema":null},{"name":"roku_console_read","description":"Read buffered output from the BrightScript debug console since the last read. Automatically disconnects after reading.","write_action":false,"price_micros":0,"input_schema":null},{"name":"roku_console_send","description":"Send a command to the BrightScript debug console and return the response. Automatically disconnects after receiving the response. Common commands: bt (backtrace), var (variables), cont (continue), step, over, out, exit, print <expr>.","write_action":true,"price_micros":0,"input_schema":null},{"name":"roku_delete_dev_channel","description":"Delete the currently sideloaded developer channel from the Roku device.","write_action":true,"price_micros":0,"input_schema":null},{"name":"roku_deploy","description":"Sideload (deploy) a Roku application to the device. Packages all files in the project directory and uploads them. A dev channel must not already be running, or it will be replaced.","write_action":true,"price_micros":0,"input_schema":null},{"name":"roku_discover","description":"Scan the local network for Roku devices using SSDP discovery. Returns a list of all found devices with their IP addresses.","write_action":false,"price_micros":0,"input_schema":null},{"name":"roku_find_node","description":"Search the app UI tree for a node by its ID or attribute value. Returns the matching node with all its properties (text, visible, focused, subtype, bounds, etc.). Only works when a sideloaded dev channel is running.","write_action":false,"price_micros":0,"input_schema":null},{"name":"roku_get_focused_node","description":"Get the currently focused node in the app UI tree. Returns the node with all its properties (id, subtype, text, bounds, etc.). Only works when a sideloaded dev channel is running.","write_action":false,"price_micros":0,"input_schema":null},{"name":"roku_keypress","description":"Send a single key press to the Roku device via ECP. Common keys: Home, Rev, Fwd, Play, Select, Left, Right, Down, Up, Back, InstantReplay, Info, Backspace, Search, Enter, Lit_<character>","write_action":true,"price_micros":0,"input_schema":null},{"name":"roku_keypress_sequence","description":"Send a sequence of key presses to the Roku device with an optional delay between each press.","write_action":true,"price_micros":0,"input_schema":null},{"name":"roku_launch","description":"Launch or deep-link into a channel on the Roku device. Use appId \"dev\" for the sideloaded developer channel.","write_action":false,"price_micros":0,"input_schema":null},{"name":"roku_query_active_app","description":"Query the currently active (foreground) app on the Roku device.","write_action":false,"price_micros":0,"input_schema":null},{"name":"roku_query_app_ui","description":"Get the current app UI tree as XML. Only works when a sideloaded dev channel is running.","write_action":false,"price_micros":0,"input_schema":null},{"name":"roku_query_device_info","description":"Query the Roku device for its info: model, firmware version, serial number, network info, etc.","write_action":false,"price_micros":0,"input_schema":null},{"name":"roku_query_media_player","description":"Query the media player state on the Roku device. Returns playback state (play, pause, buffer, stop, none), position, duration, and error info. Use this to verify video playback in tests.","write_action":false,"price_micros":0,"input_schema":null},{"name":"roku_query_sg_nodes","description":"Query SceneGraph nodes on the Roku device. Use type \"all\" for all nodes, \"roots\" for root nodes, or \"node\" with a nodeId to inspect a specific node.","write_action":false,"price_micros":0,"input_schema":null},{"name":"roku_screenshot","description":"Capture a screenshot of the current screen on the Roku device. A sideloaded dev channel must be running. Returns the image as base64-encoded content and the file path where it was saved.","write_action":false,"price_micros":0,"input_schema":null},{"name":"roku_sleep","description":"Wait for a specified duration. Use this between navigation steps to allow the UI to render, animations to complete, or content to load.","write_action":false,"price_micros":0,"input_schema":null},{"name":"roku_type_text","description":"Type a text string into the currently focused text field on the Roku device. Each character is sent as an individual Lit_ keypress. Use this for search fields, email inputs, password fields, etc.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":72,"grade":"B","scanned_at":"2026-09-27T23:34:03.302Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-09-27T23:34:03.277Z","components":{"code":{"score":25,"max":25,"notes":["15 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":8,"max":15,"notes":["last push 114 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"roku-mcp","version":"1.3.2","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":6,"publishedAt":"2026-03-26T11:56:51.991Z","repositoryUrl":"git+https://github.com/jack1590/RokuMCP.git","weeklyDownloads":93}],"repo":{"found":true,"owner":"jack1590","repo":"RokuMCP","archived":false,"pushedAt":"2026-06-06T01:21:03Z","stars":3,"forks":1,"openIssues":1,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/4235324?v=4","ownerCreatedAt":"2013-04-23T13:34:11Z"},"icon":{"url":"https://avatars.githubusercontent.com/u/4235324?v=4&s=128","source":"github"},"presence":{"stars":3,"forks":1,"downloadsWeek":93,"license":"MIT","lastPushAt":"2026-06-06T01:21:03.000Z","score":22}}}},"grade_history":[],"reviews":[]}