Xbox AI Controller MCP Server
Allows launching the Netflix app on an Xbox console by name through the MCP server's 1-click game/app launcher.
Allows launching the Spotify app on an Xbox console by name through the MCP server's 1-click game/app launcher.
Allows launching YouTube on an Xbox console by name through the MCP server's 1-click game/app launcher.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Xbox AI Controller MCP ServerTurn on my Xbox and launch Minecraft"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
🎮 Xbox AI Controller
Control your Xbox One & Xbox Series console directly from AI Agents (Antigravity, Claude, Cursor) or CLI using natural language.
Launch games (FC 25, Minecraft, Halo, etc.), send controller button presses, manage media playback, adjust TV volume via HDMI-CEC, and power on/off over Wi-Fi and official Microsoft Cloud APIs.
⚡ Architecture: The Dual-Layer Engine
xbox-ai-controller combines two complementary communication protocols to give your AI agent complete command over your console:
flowchart TD
Agent["🤖 AI Agent (Antigravity / Claude / Cursor)"] --> MCP["⚡ Xbox AI Controller MCP Server"]
CLI["💻 CLI Terminal (`npx xbox-ai`)"] --> MCP
subgraph Dual_Engine ["Dual-Layer Control Engine"]
MCP -->|Local UDP 5050| SG["📡 Local SmartGlass Engine"]
MCP -->|HTTPS OAuth| XCCS["☁️ Microsoft XCCS Cloud API"]
end
SG -->|Magic Wake Packets| XboxPower["Power On (Remote Wake)"]
SG -->|Gamepad Inputs| XboxInput["Buttons (A, B, X, Y, Guide, D-Pad)"]
SG -->|Media & TV Remote| XboxMedia["Play, Pause, TV Volume (HDMI-CEC)"]
XCCS -->|Official UWA Protocol| XboxLaunch["1-Click Game & App Launcher"]
XCCS -->|Title Hub| XboxTitles["Enumerate Installed Games"]
XCCS -->|Power Commands| XboxOff["Standby / Cloud Power-Off"]
XboxPower --> Console["🎮 Xbox One / Xbox Series X|S"]
XboxInput --> Console
XboxMedia --> Console
XboxLaunch --> Console
XboxTitles --> Console
XboxOff --> ConsoleLocal SmartGlass Engine (UDP Port 5050):
Direct, zero-latency local network communication.
Remote Wake-up magic packets (
0xdd02).Controller button presses (
A,B,X,Y,D-Pad,Nexus / Guide Menu,Menu,View).Media playback control (
Play,Pause,Stop,Next,Previous,Rewind,Fast-Forward).TV / soundbar volume control via console HDMI-CEC (
Volume Up,Volume Down,Mute).
Microsoft Console Command Service (XCCS Cloud):
Official Microsoft UWA protocol (
xccs.xboxlive.com).1-Click Game Launching: Bypasses manual on-screen navigation to boot any game or app directly by name (e.g., "Open FC 25", "Launch Minecraft", "Open YouTube").
Safe 2FA Authentication: Uses Microsoft's official device-code flow (
microsoft.com/link) — no passwords needed.
Related MCP server: Apple TV MCP
✨ Features
🎯 1-Click Game Launcher: Launch installed titles (EA Sports FC 25, Minecraft, Cricket 24, Halo Infinite, Asphalt Legends, War Thunder, Netflix, Spotify, etc.) by name.
⚡ Zero-Lag Gamepad Navigation: Navigate menus and dashboards using virtual controller inputs.
📺 Media & TV Volume Remote: Play/pause streaming apps and adjust TV volume through HDMI-CEC.
🔌 Power Management: Wake the console from Sleep mode or put it into standby remotely.
🔐 2FA-Friendly Device-Code Auth: Authenticate using official
microsoft.com/linkcodes without exposing your password in chat.🤖 Universal MCP Support: Plugs into Google Deepmind's Antigravity CLI (
agy), Claude Desktop, Cursor, Windsurf, or custom LLM frameworks.💻 Standalone CLI Included: Every feature can be run directly from terminal (
npx xbox-ai) without an AI agent.
🚀 Quickstart
1. Installation
Clone and install dependencies:
git clone https://github.com/SherrySoft/xbox-ai-controller.git
cd xbox-ai-controller
npm install2. Configure Your Xbox Console (One-Time)
On your Xbox One or Xbox Series console:
Enable Sleep Mode:
Go to Settings > General > Power options and select Sleep (Instant-On).
Enable Remote Features:
Go to Settings > Devices & connections > Remote features and check Enable remote features.
Under Xbox app preferences, select Allow connections from any device.
3. Discover Your Console
Run the discovery tool on the same Wi-Fi/LAN:
node bin/cli.js discoverIt will detect your Xbox's IP address, name, and Live Device ID, and save them automatically to ~/.xbox-mcp/config.json.
4. Authenticate for 1-Click Game Launching
To allow your AI agent to launch games directly without manual on-screen navigation:
node bin/cli.js loginOpen the URL displayed on your screen: 👉 https://www.microsoft.com/link
Enter the short code displayed in the terminal.
Approve with your Xbox account. Tokens are securely stored locally on your machine.
🤖 AI Agent Integration (MCP Setup)
⚡ 1-Click Auto Installer (Recommended)
No need to manually find or edit JSON files! Simply run:
npx github:SherrySoft/xbox-ai-controller install(Or npx xbox-ai-controller install if installed via npm)
The interactive installer will ask:
Which AI Agent you want to configure (Antigravity, Claude Desktop, Cursor, Windsurf, or All).
Which runner you prefer (
npxzero-install or local path).
It detects your operating system, locates your config file, and safely injects the MCP server entry automatically!
Manual Configuration (Optional)
If you prefer to configure manually, add the following to your agent's config file:
Antigravity CLI (agy) — ~/.gemini/config/mcp_config.json
{
"mcpServers": {
"xbox": {
"command": "npx",
"args": ["-y", "xbox-ai-controller"]
}
}
}Claude Desktop — claude_desktop_config.json
{
"mcpServers": {
"xbox": {
"command": "npx",
"args": ["-y", "xbox-ai-controller"]
}
}
}Cursor — ~/.cursor/mcp.json
{
"mcpServers": {
"xbox": {
"command": "npx",
"args": ["-y", "xbox-ai-controller"]
}
}
}(Note: You can also replace "npx", ["-y", "xbox-ai-controller"] with "node", ["/path/to/xbox-ai-controller/src/server.js"] if running from a local clone).
---
## 💬 Natural Language Prompts
Once configured, simply talk to your AI agent naturally:
- *"Turn on my Xbox"*
- *"Launch EA Sports FC 25"*
- *"Open Minecraft"*
- *"Open YouTube"*
- *"Go back to the Home screen"*
- *"Press the Xbox Guide button"*
- *"Press Down and select A"*
- *"Pause the video"*
- *"Turn the TV volume up"*
- *"Record that game clip"*
- *"Put my Xbox to sleep"*
---
## 🛠️ CLI Usage Guide
You can also use the controller directly from your terminal:
```bash
# Scan local network for consoles
node bin/cli.js discover
# Power on / wake
node bin/cli.js wake
# Launch games & apps
node bin/cli.js launch "FC 25"
node bin/cli.js launch "Minecraft"
node bin/cli.js launch "YouTube"
node bin/cli.js launch "Home"
# List installed games on console
node bin/cli.js apps
# Controller button navigation
node bin/cli.js button nexus # Open Guide menu
node bin/cli.js button a # Select (A)
node bin/cli.js button b # Back (B)
node bin/cli.js button down # D-Pad Down
# Media & Volume
node bin/cli.js media playpause
node bin/cli.js volume up
node bin/cli.js volume down
# Power off
node bin/cli.js off🎮 Available MCP Tools
Tool | Parameters | Description |
|
| Scans local subnet for active/standby Xbox consoles. |
|
| Sends SmartGlass wake packet burst ( |
|
| Puts the console into standby/sleep mode. |
|
| Checks if console is active and listening on port 5050. |
|
| 1-Click game/app launch (FC 25, Minecraft, etc.) or go Home. |
| none | Fetches the full list of installed games from console. |
|
| Sends button press ( |
|
| Controls media playback ( |
|
| Adjusts TV volume via HDMI-CEC ( |
|
| Triggers the "Record that!" command to save last 30s game clip. |
| none | Starts 2FA-safe Microsoft Device-Code authentication flow. |
| none | Inspects current saved configuration and connection state. |
|
| Updates settings manually. |
🔒 Security & Privacy
No Passwords Stored: Authentication uses official Microsoft OAuth Device-Code flow. Passwords are never handled or logged.
Local Storage: All tokens, configuration, and IP addresses remain strictly on your local PC in
~/.xbox-mcp/and are excluded in.gitignore.First-Party Microsoft APIs: Cloud commands communicate exclusively with
https://xccs.xboxlive.comusing standard TLS encryption.
📄 License
This project is licensed under the MIT License.
Available Tools
13 toolsxbox_auth_device_codeA
Initiates a safe Microsoft Device-Code login (bypassing 2FA). Gives a verification URL (microsoft.com/link) and a short code.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose two real behavioral facts: the 2FA bypass and that it returns a verification URL plus a short code. It omits what the agent must do next (whether it must poll, how long the code lives, whether the call blocks), which matters for an auth flow.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and outcome, with zero filler. Nothing could be cut without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, so the description is the sole source of information about results; it names the outputs but not their structure or the follow-up step needed to complete login. Adequate to attempt the call, insufficient to drive the whole auth flow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate beyond what the empty schema already conveys. Baseline 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Initiates a safe Microsoft Device-Code login', which is concrete and recognizable. It is distinguishable from every sibling (all of which are Xbox power/media/launch controls) by being the only auth tool, though it never explicitly says so.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'Initiates' suggests this is the first step of an authentication flow, but the description never says when to call it (e.g. when a sibling returns an auth error) or what to do with the result. There are no exclusions or named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xbox_buttonA
Sends controller buttons to the console: 'a', 'b', 'x', 'y', 'up', 'down', 'left', 'right', 'nexus' (Guide button), 'view' (Back), 'menu' (Start).
| Name | Required | Description | Default |
|---|---|---|---|
| ip | No | Target IP address (optional if saved in config). | |
| button | Yes | Button to press: 'a', 'b', 'x', 'y', 'up', 'down', 'left', 'right', 'nexus', 'view', 'menu'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It states that buttons are sent to the console but does not disclose whether authentication/reachability is required, whether presses are one-shot or repeatable, what side effects may occur, or what errors look like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted text. The button list is compact and directly useful for invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter remote-control command with full schema coverage and no output schema, the description provides enough to call the tool correctly. It omits deeper behavioral context, but the core action and accepted button values are complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents both parameters. The description adds meaningful semantic mapping for special buttons like nexus (Guide), view (Back), and menu (Start), which goes beyond the raw enum-like values in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Sends controller buttons to the console.' It also enumerates the supported buttons, so an agent can distinguish this remote-input tool from siblings like xbox_launch, xbox_media, or xbox_power_on.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the remote-control framing and button list, but the description does not explicitly say when to use this tool versus siblings such as xbox_launch or xbox_media. It gives enough context to infer navigation/UI input, but no exclusions or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xbox_discoverA
Scans the local network (UDP 5050) for Xbox One or Xbox Series consoles, automatically retrieving and saving IP address, console name, and Live Device ID.
| Name | Required | Description | Default |
|---|---|---|---|
| auto_save_first | No | Automatically save the first found console to config (default: true). | |
| timeout_seconds | No | Scan timeout in seconds (default: 3). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it does usefully disclose the write side effect (found consoles are saved to config) and the exact protocol/port. It omits important behavior: whether an existing saved config is overwritten, what happens if multiple consoles answer, and whether network broadcast permissions are required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler: action, scope, protocol, and side effect all appear in order of importance. Nothing is repeated and nothing needs trimming.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-optional-parameter discovery tool with no output schema and no annotations, the description covers what it does and what it collects (IP, name, Live Device ID), which implies the return payload. It stops short of describing the zero-results/timeout path, the only real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (auto_save_first, timeout_seconds) are already documented with defaults. The description adds nothing beyond the schema — 'automatically saving' gestures at auto_save_first but doesn't clarify its interaction with existing config, which would be the value-add.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (scans), a specific resource (Xbox One / Xbox Series consoles on the local network), and even the transport (UDP 5050). Discovery is unambiguously distinct from the action-oriented siblings (xbox_power_on, xbox_launch, xbox_get_config), so an agent can pick it out without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: run this to find consoles before addressing them. But it never says when not to use it, nor routes the agent to xbox_get_config / xbox_set_config for consoles already known, nor explains how this relates to configuring a target before calling the other siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xbox_get_configA
Inspects the saved configuration, console details, and authentication status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full burden for behavioral disclosure. 'Inspects' implies a read-only operation and the three named data areas tell the agent broadly what comes back, but nothing is said about authentication requirements, caching, or whether values are live or stored.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence with no filler, and the core action leads it. Everything it says is relevant to calling the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, non-destructive getter with no output schema and no annotations, the description covers enough: it names the data categories the agent will receive. The lack of any return-shape hint keeps it from a 5, but no critical information for calling is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no per-parameter semantics to get wrong and the baseline is 4. The schema is an empty object, consistent with the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It uses a specific verb and names three concrete resources: saved configuration, console details, and authentication status. The name's get_ prefix and the presence of the sibling xbox_set_config make clear that this reads rather than writes, though the description itself does not state that contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies the use case for a diagnostic read by naming authentication status and config, but it never says when to call it rather than xbox_discover, xbox_ping, or xbox_set_config. It also gives no prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xbox_installed_appsB
Fetches the full list of installed games and applications from the console.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It implies a read-only fetch but discloses nothing about required prerequisites (a sibling xbox_power_on exists, suggesting the console may need to be awake), latency, result size, or failure modes when the console is off or unpaired.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler; it says exactly what the tool retrieves and from where, and nothing more.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple zero-parameter read tool the sentence is arguably enough, but the absence of annotations and of an output schema means the description should have noted the precondition of a reachable/on console and roughly what comes back. It is minimum viable, not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters and the schema has 100% description coverage, so the parameter baseline of 4 applies. There is no parameter semantics left for the description to add.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Fetches') and resource ('the full list of installed games and applications') with source scope ('from the console'), which is clear and unambiguous. It does not differentiate itself from siblings such as xbox_discover, xbox_launch, or xbox_get_config, so it lands at a clear-but-undifferentiated 4.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus xbox_discover or xbox_get_config, and no stated prerequisites (e.g., that the console must be powered on or the device authenticated). The agent must infer usage entirely from the name and verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xbox_launchA
1-Click launches any game or application (e.g. FC 25, Minecraft, YouTube, Netflix, Spotify) or returns to the Home screen.
| Name | Required | Description | Default |
|---|---|---|---|
| ip | No | Target IP address (optional if saved in config). | |
| target | Yes | Game name, app name, or Product ID (e.g. 'FC 25', 'Minecraft', 'YouTube', 'Netflix', 'Home'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It says what the tool does, but it does not disclose prerequisites, authentication/config requirements, failure behavior, or whether launching waits for a response. The Home-screen side effect is mentioned, but important operational context is missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. It communicates the core action and the Home-screen variant efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter control tool, the description covers the primary action and target examples. However, with no annotations and no output schema, it should do more to explain prerequisites and operational behavior; it is adequate but has clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description repeats example target values like FC 25, Minecraft, YouTube, Netflix, and Spotify, but the schema already documents target and ip, so it adds little semantic meaning beyond the structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: launching a game/application or returning to the Home screen. The examples make the scope concrete, and the action is clearly distinct from sibling tools like xbox_power_on, xbox_installed_apps, and xbox_button.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it by saying it launches games/apps and returns Home, but it does not explicitly compare against alternatives such as xbox_power_on or xbox_installed_apps. It also omits prerequisites, such as whether the Xbox must already be powered on or configured.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xbox_mediaB
Controls media playback on the console: 'play', 'pause', 'playpause', 'stop', 'next_track', 'prev_track', 'fast_forward', 'rewind'.
| Name | Required | Description | Default |
|---|---|---|---|
| ip | No | Target IP address (optional if saved in config). | |
| command | Yes | Media action: 'play', 'pause', 'playpause', 'stop', 'next_track', 'prev_track', 'fast_forward', 'rewind'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It never states that this is a mutating action, whether it fails if nothing is playing, whether it requires the console to be awake or authenticated, or what happens on an invalid command — all material for a control tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with the key verb and resource first. The enumerated command list duplicates the schema's enum verbatim, which is mild redundancy, but it does help an agent recognize capability at a glance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description should say at minimum what state is required (console on, media app running) and how failures surface. It covers only the action surface and leaves all operational context to guesswork.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: both `ip` and `command` are documented in the schema, including the same command list the description repeats. The description adds no meaning beyond the schema (no format details, no defaults, no behavior per command), so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Controls media playback on the console') and enumerates exactly which actions are possible, which clearly separates it from siblings like xbox_button (button presses) and xbox_volume (audio level). An agent can identify the tool's job without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to choose this over xbox_button or xbox_launch, no prerequisites (console powered on, a media app active, auth required), and no note on which command to prefer when, e.g., 'pause' vs 'playpause'. The usage is only implied by the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xbox_pingA
Pings an Xbox console on port 5050 to check if it is online, awake, and actively responding on the network.
| Name | Required | Description | Default |
|---|---|---|---|
| ip | No | Target IP address (optional if saved in config). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it does disclose the protocol detail (port 5050) and what the probe determines, which is useful. It omits timeout/retry behavior, whether the console must be on the same subnet, and what a negative result actually means — meaningful gaps for a network probe.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the verb and resource, with zero filler. Every clause (port, online/awake/responding) contributes information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, no-output-schema tool this is nearly complete: the agent knows the target, the port, and the conditions tested. A brief note on the return shape (boolean vs. latency/status detail) would close the remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'ip' parameter is documented there, including that it is optional when config has a saved address. The description adds nothing about the parameter, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (pings an Xbox console) and pins down the mechanism (port 5050) plus the exact conditions being tested (online, awake, responding). This is clearly distinguishable from siblings like xbox_discover, which finds consoles rather than probing a known one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrasing 'check if it is online, awake, and actively responding' implies a diagnostic/pre-flight use case, but the description never says when to prefer this over xbox_discover, or whether to ping before xbox_power_on. No alternatives or exclusions are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xbox_power_offA
Powers OFF an Xbox console or puts it into Standby/Sleep mode.
| Name | Required | Description | Default |
|---|---|---|---|
| ip | No | Target IP address (optional if saved in config). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does usefully disclose the two possible end states (off vs. standby/sleep), which goes beyond the name, but omits which is the default, whether authentication or a wake-capable config is required, and that power-off is disruptive/not trivially reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the action and both outcomes front-loaded; every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, output-schemaless tool this is nearly sufficient, but the unresolved question of how standby vs. off is chosen, and the lack of any auth/reachability note, leaves a real gap for an agent deciding how to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one optional parameter (ip) exists and schema description coverage is 100%, so the schema already documents it fully. The description adds nothing further about connection/discovery behavior, which is acceptable at baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Powers OFF an Xbox console") and clearly separates it from the sibling xbox_power_on. However, it leaves ambiguous how the off vs. standby outcome is selected, since no parameter exists for that choice.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by contrast with xbox_power_on; there is no explicit statement of when to prefer this tool, prerequisites (e.g., device must be reachable/authenticated), or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xbox_power_onA
Powers ON an Xbox console from standby/sleep mode over local Wi-Fi/LAN using the SmartGlass wake packet protocol.
| Name | Required | Description | Default |
|---|---|---|---|
| ip | No | Target IP address (optional if saved in config). | |
| tries | No | Number of wake packets to send (default: 5). | |
| live_device_id | No | Xbox Live Device ID (optional if saved in config). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the SmartGlass wake packet protocol and the standby/sleep precondition, but it omits authentication or permission requirements, behavior when the console is fully off, and what a success or failure response looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is a single front-loaded sentence with no redundant or filler content. Every phrase contributes to identifying the action, precondition, and transport.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema fully documents the three optional parameters, but the tool has no annotations and no output schema, so the description should ideally cover prerequisites such as saved config or auth needs and the expected return behavior. It covers the core operation adequately but leaves those operational gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents ip, tries, and live_device_id. The description adds no parameter-specific syntax or format details beyond that baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Powers ON') and resource ('Xbox console'), and it clearly distinguishes the action from siblings like xbox_power_off and xbox_discover by naming the source state and transport protocol.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives useful context by specifying the console must be in standby/sleep mode and reachable over local Wi-Fi/LAN, which helps an agent know when this tool applies. However, it does not explicitly name alternatives such as xbox_discover when the IP is unknown or xbox_power_off for the inverse operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xbox_record_dvrB
Triggers the 'Record that!' command to save the last 30 to 60 seconds of gameplay.
| Name | Required | Description | Default |
|---|---|---|---|
| ip | No | Target IP address (optional if saved in config). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the key behavior (saving the last 30–60 seconds of gameplay) but omits prerequisites, authentication needs, whether recording is already active, and what the response looks like. Adequate but with clear gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is front-loaded with the action and includes the essential outcome. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter command with no output schema, the description explains what happens but omits operational context such as required device state, game activity, or failure modes. It is minimally complete but not rich.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the sole optional ip parameter is fully documented in the schema. The description adds no parameter meaning beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (triggers), the exact command invoked ('Record that!'), and the resulting action (saving gameplay). The purpose is clear, but it does not explicitly distinguish itself from sibling controls such as xbox_button or xbox_media.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this tool versus alternatives, no prerequisites (such as game running or device powered on), and no exclusions. The use case is implied by the description but not articulated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xbox_set_configC
Updates console IP, Live Device ID, name, or authentication tokens manually.
| Name | Required | Description | Default |
|---|---|---|---|
| ip | No | Local IP address of the Xbox. | |
| name | No | Friendly name for the console. | |
| user_hash | No | Xbox Live User Hash (uhs). | |
| xsts_token | No | Xbox Live XSTS Token. | |
| live_device_id | No | Xbox Live Device ID (Settings > System > Console Info). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It implies a mutation but does not disclose whether partial updates preserve unspecified fields, whether changes persist, what authentication or permissions are required, or what happens on invalid tokens/IPs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted terms. Its brevity is appropriate for the summary level, and the missing details are a completeness issue rather than a conciseness flaw.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with five optional parameters, no annotations, and no output schema, the description is incomplete. It should clarify partial-update semantics, authentication requirements, and return/error behavior so an agent can invoke it safely and correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are already documented with descriptions. The tool description merely enumerates the same fields and adds no additional format, validation, or dependency details beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Updates') and enumerates the configurable resources: console IP, Live Device ID, name, and authentication tokens. It is clearly a setter counterpart to xbox_get_config, but it does not explicitly name or differentiate itself from relevant siblings like xbox_discover or xbox_auth_device_code.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives such as xbox_discover or xbox_auth_device_code. The word 'manually' hints at a manual override use case, but it does not specify prerequisites, when automatic discovery/auth is preferred, or any exclusion conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xbox_volumeA
Adjusts TV or soundbar volume via the console's HDMI-CEC: 'volume_up', 'volume_down', or 'mute'.
| Name | Required | Description | Default |
|---|---|---|---|
| ip | No | Target IP address (optional if saved in config). | |
| command | Yes | Volume action: 'volume_up', 'volume_down', or 'mute'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses the HDMI-CEC mechanism and that it targets TV or soundbar volume, but it does not mention permissions, side effects, reversibility, or whether the console must be powered on.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is a single front-loaded sentence that names the action, mechanism, target devices, and allowed command values with no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter volume command with full schema coverage and no output schema, the description is largely complete. The remaining gap is that it does not state prerequisites like HDMI-CEC configuration, but the mechanism is at least identified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both the optional IP and required command are already documented in the schema. The description repeats the command values but adds no extra meaning such as IP fallback behavior or command-specific effects.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: adjusts TV or soundbar volume through the console's HDMI-CEC. It enumerates the three supported volume commands, making the tool's scope clear enough to distinguish it from siblings like xbox_media and xbox_button.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool does but gives no guidance on when to use it versus alternatives, nor any prerequisites such as HDMI-CEC being enabled or the console being reachable. It relies entirely on the agent inferring usage from the stated purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
13 tool updates
v1.0.0- First observed
xbox_auth_device_code - First observed
xbox_button - First observed
xbox_discover - First observed
xbox_get_config - First observed
xbox_installed_apps - First observed
xbox_launch - First observed
xbox_media - First observed
xbox_ping - First observed
xbox_power_off - First observed
xbox_power_on - First observed
xbox_record_dvr - First observed
xbox_set_config - First observed
xbox_volume
TDQS
Scored across 13 tools
Most tools target a distinct action (power, launch, buttons, media, DVR, auth), but xbox_discover, xbox_ping, and xbox_get_config all partially answer 'is the console reachable/configured?', and xbox_media vs xbox_button could be confused by an agent unsure whether a 'play/pause' belongs to media or a button press. These overlaps are resolvable from the descriptions but not perfectly crisp.
All names share a consistent xbox_ prefix and snake_case, which is strong. However, styles are mixed: some are verb-based (xbox_power_on, xbox_launch, xbox_get_config) while others are bare nouns or command categories (xbox_button, xbox_media, xbox_volume, xbox_installed_apps), which slightly weakens predictability.
Thirteen tools is a well-scoped set for a console-control server: discovery, power, launch, input, media, volume, DVR, auth, and config each earn their place without redundancy or bloat.
The surface covers the core console lifecycle: discover, power on/off, ping, launch apps, list apps, buttons, media, volume, DVR capture, auth, and config get/set. Gaps remain for common interactions such as text/keyboard input (e.g. searching in an app), listing or managing captured DVR clips, and app uninstall/management.
Maintenance
Related MCP Connectors
Control Android TV from any AI. 38 MCP tools: playback, recap, recommend, smart-home, schedules.
Give your AI agent the power to cast to your home TV and control an interactive canvas. By ArdaBot.
Connect AI assistants to authorized Windows and macOS devices for files, commands, and management.
- mytesla.ioOAuthio.mytesla
Control your Tesla from your AI assistant - climate, charging, access, and security.
Related MCP Servers
- AlicenseBqualityCmaintenanceEnables AI agents to control Android TV/Android devices through ADB, including screen capture, remote control, app management, and more.242 npm1MIT
- AlicenseAqualityAmaintenanceEnables AI agents to control a set-top streaming device and visually navigate its interface, including opening apps, managing playback, entering text, adjusting volume and power, sending remote input, and capturing screenshots for observation and verification.1424 PyPIMIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to control a Samsung Tizen smart TV on the local network directly over its local APIs, with no cloud account or hub required. Agents can check power and volume status, switch the TV on or off, send remote keys, type text, launch apps, and play YouTube videos, all under configurable volume and key-press guardrails.MIT
- AlicenseNot gradedqualityCmaintenanceEnables an AI agent to control an LG webOS TV by reading playback status, listing and launching apps, adjusting volume or mute, and powering it off.MIT