Connect AnyDesk to Claude: Access Device Rosters and System Status
A step-by-step technical guide for IT admins and DevOps engineers to connect AnyDesk to Claude via MCP, enabling automated client and session management.
If your team uses ChatGPT, check out our guide on connecting AnyDesk to ChatGPT. Building automated scripts or multi-agent orchestrations? See our guide on connecting AnyDesk to AI Agents.
IT support desks and DevOps teams rely on AnyDesk for remote device access and system management. As environments scale, manually auditing client lists, tracking active sessions, and updating device configurations becomes a bottleneck. By exposing the AnyDesk API directly to Anthropic's Claude via the Model Context Protocol (MCP), you can transform a conversational interface into a capable IT operations assistant.
Truto's dynamic MCP server generation allows you to instantly turn any connected AnyDesk account into a secure, JSON-RPC 2.0 compliant toolset. This guide covers how to architect that connection, handle API realities, and execute real-world IT management workflows inside Claude.
The Engineering Reality of the AnyDesk API
Before connecting an LLM to your IT infrastructure, it is critical to understand the specific mechanical constraints of the AnyDesk API. Generic API wrappers often fail because they ignore the underlying quirks of the vendor's implementation.
1. HTTP 429s and Strict Rate Limits
AnyDesk enforces strict rate limiting to protect their infrastructure. Truto does not absorb, throttle, or automatically retry HTTP 429 (Too Many Requests) errors. When the AnyDesk API rate limits a request, Truto passes the 429 status code directly back to Claude.
However, Truto normalizes the disparate upstream rate limit headers into standard IETF format (ratelimit-limit, ratelimit-remaining, ratelimit-reset). This predictable structure allows Claude (or your agent framework) to reliably read the headers and execute its own exponential backoff or wait strategies before retrying the tool call.
2. Destructive Partial Updates
The any_desk_clients_partial_update and any_desk_sessions_partial_update endpoints expect precise PATCH payloads. AnyDesk's data model includes nested configuration objects. If an LLM attempts to patch a top-level key without retaining the existing nested structure, it risks overwriting or blanking out critical device configurations. You must instruct Claude to always perform a GET operation first to fetch the current state before sending a PATCH request.
3. Session State Pagination
Retrieving AnyDesk sessions via list_all_any_desk_sessions across a large enterprise fleet yields heavily paginated responses. Truto injects limit and next_cursor properties into the tool's query schema. Claude is explicitly instructed via the schema descriptions to pass the cursor values back unchanged. This prevents the LLM from hallucinating offset values or mangling the opaque cursor strings AnyDesk requires for pagination.
Creating the AnyDesk MCP Server
Truto scopes every MCP server to a single integrated account, backed by a cryptographic token that handles routing and authentication. You can provision this server visually through the Truto UI or programmatically via the API.
Option 1: Via the Truto UI
- Navigate to the Integrated Accounts section in your Truto dashboard and select your AnyDesk connection.
- Click the MCP Servers tab.
- Click Create MCP Server.
- Define a recognizable name (e.g., "AnyDesk IT Ops Server").
- Select specific method filters (like
readonly) or tags if you want to restrict the LLM's capabilities. - Click Save and copy the generated MCP server URL (
https://api.truto.one/mcp/...).
Option 2: Via the Truto API
For teams managing infrastructure as code, you can generate the MCP server dynamically via a POST request. Truto will validate the integration, generate a secure token, store it in the distributed key-value layer, and return a ready-to-use URL.
curl -X POST https://api.truto.one/integrated-account/{integrated_account_id}/mcp \
-H "Authorization: Bearer YOUR_TRUTO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Claude AnyDesk IT Ops",
"config": {
"methods": ["read", "write"]
}
}'Example Response:
{
"id": "mcp-token-xyz789",
"name": "Claude AnyDesk IT Ops",
"config": { "methods": ["read", "write"] },
"expires_at": null,
"url": "https://api.truto.one/mcp/a1b2c3d4e5f67890"
}Connecting the MCP Server to Claude
Once you have the Truto MCP URL, you need to register it as a toolset within Claude. You can do this via Claude's UI or by configuring the local desktop application.
Option 1: Claude Desktop or Web UI
- Open Claude and navigate to Settings -> Connectors -> Add custom connector.
- Paste your Truto MCP URL into the connection field.
- Click Add.
Claude will immediately initiate the JSON-RPC 2.0 handshake (
initialize), request the tool schemas (tools/list), and map the AnyDesk operations to its internal reasoning engine.
Option 2: Manual Configuration File
If you are running Claude Desktop and prefer file-based configuration, you can edit the claude_desktop_config.json file. While traditional MCP setups rely on local stdio execution, Truto servers are accessed via remote HTTP transport. Depending on your MCP client framework, remote servers are mapped via specific SSE/HTTP parameters or a proxy script. For Claude's direct implementation:
{
"mcpServers": {
"anydesk_truto": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-proxy",
"https://api.truto.one/mcp/a1b2c3d4e5f67890"
]
}
}
}(Note: Refer to Claude's latest MCP transport documentation for exact proxy command structures for remote HTTP endpoints).
AnyDesk Tool Inventory
Truto automatically generates tool schemas based on the integration's documentation records. Below is the two-tier breakdown of the AnyDesk tools available to Claude. For complete schema details, including required query parameters and JSON body structures, visit the AnyDesk integration page.
Hero Tools
These are the high-impact operations most commonly used by IT support teams to manage AnyDesk fleets.
list_all_any_desk_clients
List all registered AnyDesk clients in your account. Returns a collection of client objects containing aliases, IDs, and online status.
"Show me all online AnyDesk clients associated with the London office network."
list_all_any_desk_sessions
Retrieve all historical and active AnyDesk sessions. Returns session objects containing duration, endpoints, and status metrics.
"Pull the list of active AnyDesk sessions running right now. Are any of them exceeding 4 hours?"
get_single_any_desk_session_by_id
Fetch the complete telemetry and metadata object for a specific AnyDesk session. Requires the session id.
"Get the full session details for session ID 837492. I need to see which client initiated the connection."
any_desk_clients_partial_update
Partially update an existing AnyDesk client. Only the fields supplied in the request body are modified. Requires the client id.
"Update the client configuration for ID 554433. Change the alias to 'qa-testing-rig' and save it."
list_all_any_desk_sysinfo
Extract system information from AnyDesk, returning details about system status, versioning, and environment configurations.
"Run a system info check on our AnyDesk environment. What version are we currently running on the primary node?"
Workflows in Action
Exposing these tools to an LLM transforms IT from a series of manual clicks into conversational, automated workflows. Here is how specific personas use this setup in the real world.
Scenario 1: The IT Manager Auditing Active Access
Security policies often mandate that remote desktop sessions should not be left unattended for extended periods. An IT Manager can use Claude to audit current connections quickly.
"Check our AnyDesk environment for any active sessions. If you find any, get the full details for them and list the client aliases involved."
Step-by-step execution:
- Claude calls
list_all_any_desk_sessionswith query parameters filtering for active states. - The API returns an array of session IDs.
- Claude loops through the array, calling
get_single_any_desk_session_by_idfor each ID to retrieve the deeper telemetry payload. - Claude cross-references the client IDs from the session data by calling
get_single_any_desk_client_by_idto resolve their human-readable aliases. - The LLM presents a clean, formatted report of who is currently remoted into what machine.
Scenario 2: The Helpdesk Engineer Provisioning a Device
When deploying a new machine, support engineers need to assign proper naming conventions and tags so the device is easily identifiable in the AnyDesk roster.
"Find the new AnyDesk client with the default alias 'DESKTOP-XYZ123'. Update its alias to 'dev-workstation-alpha'."
Step-by-step execution:
- Claude calls
list_all_any_desk_clientsto retrieve the list of endpoints. - The LLM parses the results to find the specific client matching the 'DESKTOP-XYZ123' alias and extracts its unique
id. - Claude constructs a JSON payload with just the updated alias string.
- Claude calls
any_desk_clients_partial_update, passing theidin the query and the payload in the body. - The API returns the updated client object, and Claude confirms the successful change to the engineer.
Security and Access Control
Granting an AI direct access to your remote desktop infrastructure requires strict governance. Truto provides multiple layers of security to lock down your MCP servers.
- Method Filtering: You can restrict an MCP server to only allow
readoperations. If a user asks Claude to delete a client, Claude simply will not have thedelete_a_any_desk_client_by_idtool in its context window. - Tag Filtering: Limit the server to expose only specific resource tags. For instance, you can expose "rosters" and "sysinfo" but hide "sessions" to protect privacy.
- Token Authentication (
require_api_token_auth): By default, possessing the MCP URL grants access. Enabling this flag adds a secondary layer of authentication, requiring the client to also pass a valid Truto API token in theAuthorizationheader to execute a tool. - Time-to-Live (
expires_at): Generate short-lived MCP servers for contractors or temporary audit scripts. Once the timestamp passes, the token is automatically purged from the database and the server ceases to exist.
FAQ
- How does Truto handle AnyDesk API rate limits?
- Truto does not absorb or retry HTTP 429 errors. It passes the 429 status directly to Claude while normalizing the upstream headers into standard IETF format (ratelimit-limit, ratelimit-remaining, ratelimit-reset) so the LLM can manage its own backoff strategy.
- Can I restrict Claude from modifying my AnyDesk configuration?
- Yes. When creating the MCP server via Truto, you can set method filters (e.g., config: { methods: ["read"] }) to ensure Claude is only provided with tools like list_all_any_desk_clients and cannot execute destructive actions.
- Do I need to write custom integration code to connect AnyDesk?
- No. Truto dynamically generates the MCP server and required JSON-RPC 2.0 tools directly from the AnyDesk integration's resource definitions and documentation records. You just supply the connection URL to Claude.