Citrix DaaS MCP Server Local
The Citrix DaaS MCP Server enables MCP-capable AI agents to connect to your on-prem Citrix Virtual Apps and Desktops Delivery Controller (DDC). Once connected, administrators can query site information, investigate session and machine issues, and retrieve performance metrics using natural language through a compatible AI client.
The server exposes 20 read-only tools that cover Delivery Groups, Machine Catalogs, VDA machines, sessions, users, endpoints, and site-wide summaries. All tools are read only, no write operations are performed against the DDC or site.
Use natural language queries like these after the Citrix DaaS MCP Server is connected:
-
"List all Delivery Groups in this site"
-
"Show me the machines in maintenance mode"
-
"What sessions does user john.smith have right now?"
-
"Show connection failures for user jane.doe in the last 24 hours"
-
"What is the resource usage and health of machine VDA-01?"
-
"Which multi-session machines have the highest load?"
-
"Show me the logon breakdown for user john.smith"
-
"List all group policies and their settings"
-
"What hypervisor connections are configured?"
-
"Show the hourly summary of connection failures and session counts"
How it works
The Citrix DaaS MCP Server Local uses the Model Context Protocol (MCP), an open protocol that defines how AI agents interact with external tools and data sources. The protocol follows a client-server architecture:
-
Host: The application that runs the AI agent (for example, Claude Code, VS Code with an MCP extension).
-
Client: The component within the host that connects to MCP servers and invokes tools.
-
Server: The Citrix DaaS MCP Server Local, which exposes tools for querying the Delivery Controller.
The server is spawned inside a Podman/Docker container on a Windows machine and communicates with the DDC over the network. When an administrator issues a natural language query, the AI client translates it into a tool call, the Citrix DaaS MCP Server runs the query against the data sources in the DDC (Studio or Director), and the results are returned to the AI client for display.
Security and authentication
The Citrix DaaS MCP Server Local uses domain administrator credentials to authenticate with the Delivery Controller. These credentials are provided during the initial config setup and stored locally on the machine where the server is installed.
Key security characteristics:
-
Encrypted credential storage: Administrator credentials are stored in the Windows Credential Manager (OS credential chain), protected by the logged-in user's Windows account. Only the user who configured the server can access the stored credentials.
-
Read-only access: All tools are read-only tools. The server does not create, modify, or delete any resources on the Delivery Controller or within the CVAD site.
-
Local execution: The server runs locally on the administrator's machine. It does not expose any network endpoints or accept inbound connections.
-
Credential scope: The server uses the configured DDC administrator credentials for all queries. Tool results reflect the permissions of the configured account.
-
No data exfiltration: Query results are returned to the local AI client only. The MCP server does not transmit data to external services.
Notes:
-
Citrix DaaS MCP Server Local is intended for administrator use within your organization. Do not use it in environments where the machine or AI client is accessible to unauthorized users.
-
It is recommended to use Windows 11 on a physical machine or inside a virtual machine with nested virtualization enabled.
Supported AI clients
The following AI clients have been validated with the Citrix DaaS MCP Server Local:
| AI Client | Notes |
|---|---|
| Claude Code | CLI-based AI agent. Add citrix-daas-mcp-local as an MCP server in the Claude Code configuration. |
To connect from a client not listed above, the client must support the Model Context Protocol (MCP) with stdio transport. Refer to the client's documentation for instructions on adding an MCP server.
Prerequisites
-
Windows 11 OS
-
Node.js 18 or later (20 LTS recommended)
-
An MCP-capable AI client installed on the same machine
-
Network connectivity from the machine to the CVAD Delivery Controller over port 443 (HTTPS). If HTTPS is not enabled for the Monitor service, port 80 (HTTP) is also required.
-
A domain user account with a Citrix administrator role on the site
-
CVAD 2402 LTSR and later
Note:
The Citrix DaaS MCP Server Local retrieves data from the same underlying sources as Citrix Director and Studio. Any minimum requirements or prerequisites that apply to a feature in Director or Studio also apply to the corresponding data available through the MCP server. If a feature requires a specific VDA version, Citrix Virtual Apps and Desktops release, or configuration to surface data in Director, the same requirement must be met for that data to be available through MCP in supported tools.
Getting started
Install Node.js
Skip this section if
node -v already reports v18 or higher. Install Node.js using NVM for Windows. Run all commands in PowerShell.
Step 1: Check whether NVM is installed
Run the following command:
nvm version
If this prints a version number, NVM is already installed, proceed to Step 2. If the command is not recognized, install NVM for Windows:
winget install -e --id CoreyButler.NVMforWindows
Restart PowerShell after installation so that
nvm is available on your PATH.
Step 2: Install and select Node.js 20
nvm install 20
nvm use <exact_version>
Note:
Replace
<exact_version> with the actual version installed, for example, 20.15.1.
Step 3: Verify the installation
Run the following commands and confirm each returns a version number:
nvm version
node -v
npx -v
Note:
node -v must report v18 or higher.
Install and configure the Citrix DaaS MCP Server Local
Step 1: Obtain the bundle file
Download the Citrix DaaS MCP Server Local bundle file from the Citrix download page for the CVAD release.
Step 2: Run the configuration command
Open PowerShell as Administrator. Navigate to the folder containing the bundle file and run:
npx -y .\citrix-daas-mcp-local-bundle-<version>.tgz config
Replace
<version> with the version number of the bundle file that you downloaded.
Step 3: Complete the interactive prompts
The config command prompts you for the following environment details:
| Prompt | Description |
|---|---|
| Citrix DDC host | The host name of your Delivery Controller. If the site has multiple Delivery Controllers, you can use any one of them. There is no primary server to choose because the server is read-only. |
| Citrix DDC IP | The IP address of your Delivery Controller. |
| Admin user | A domain administrator account with permissions on the DDC (for example, domain\username). |
| Password | The password for the administrator account. |
Note:
On a machine without a container runtime installed, the config command installs one automatically. If the installation prompts you to reboot, reboot the machine and re-run the config command.
Step 4: Verify the installation
The config command runs a built-in self-test after the configuration is complete. If the self-test finishes without errors, the server is ready to use.
Connect the MCP server to your AI client
After installation, configure your MCP-capable AI client to connect to the citrix-daas-mcp-local server. Refer to your AI client's documentation for instructions on adding an MCP server.
Note:
Claude Code is configured automatically in Step 3. Other AI clients might require a manual configuration.
For other AI clients (manual setup)
If you are using a different MCP-capable client, you must manually add the server configuration using the output provided by the installer:
-
Copy the JSON: The setup script automatically generates a custom JSON snippet containing the exact file paths for your machine. Copy this entire JSON block.
-
Update your client: Paste the copied JSON into your AI client's MCP configuration file (refer to your specific client's documentation for the exact file location).
-
Restart: Restart your AI client or start a new chat session to load the new MCP server configuration.
Example of the generated configuration block to copy:
{
"citrix-daas-mcp-local": {
"command": "C:\\path\\to\\node.exe",
"args": [
"C:\\path\\to\\daas-mcp-local\\cli.js",
"run"
],
"env": {
"DAAS_MCP_LOCAL_CONFIG”: "C:\\path\\to\\config.json"
}
}
}
Once connected, verify that the server is loaded and its tools are available. You can test by issuing a natural language query such as "List the Delivery Groups in this site."
Common tool parameters
Several tools share common input parameters. The following tables describe input formats accepted across tools.
Machine name formats
Tools that accept a machine name support the following formats:
| Format | Example |
|---|---|
| Canonical (DOMAIN\HOSTNAME) | CTXCO\TestVDA1 |
| Hostname only | TestVDA1 |
| Fully qualified domain name (FQDN) | TestVDA1.ctxco.local |
If the provided name does not exactly match a single machine, the tool attempts a fuzzy lookup. When multiple machines match, a clarification response lists the candidates.
User name format
Tools that accept a user name use the domain\username format (for example, nkgdir\john.smith). Partial matching is supported in search tools.
Time window parameters
Several tools accept a time window to control how far back to retrieve data:
| Parameter | Default | Maximum | Used by |
|---|---|---|---|
| latest_hours | 2 hours | 2 hours | get_session_metrics, get_endpoint_metrics |
| offset_hours | 2 hours | 7 days | get_connection_failures (by user) |
Available tools
The Citrix DaaS MCP Server Local exposes 20 tools organized by area. All tools are read-only, they query the Delivery Controller and return data without modifying any resources.
Site overview
| Tool | Description |
|---|---|
| get_hourly_summaries | Retrieve current connection failure counts by type, failed VDI and RDS machine counts by type, and connected session activity over the last hour. |
| get_hypervisors_info | List all hypervisor connections or retrieve detailed configuration for a specific hypervisor. |
| get_group_policy_list | Retrieve the site group policy list, including policy name, priority, enabled state, settings, and filters. |
Delivery Groups
| Tool | Description |
|---|---|
| search_delivery_groups | Search and list Delivery Groups with filters on name, maintenance mode, enabled state, sharing kind, and session support. |
| get_delivery_group_details | Retrieve detailed information about a specific Delivery Group by name or ID. |
Machine Catalogs
| Tool | Description |
|---|---|
| search_machine_catalogs | Search and list Machine Catalogs with filters on name, physical machines, allocation type, provisioning type, and session support. |
| get_machine_catalog_details | Retrieve detailed information about a specific Machine Catalog by name or ID. |
VDA machines
| Tool | Description |
|---|---|
| search_vda_machines | Search machines with filters on Delivery Group, Machine Catalog, agent version, OS type, tags, maintenance mode, power state, registration state, session state, and fault state. |
| get_vda_machine_details | Retrieve detailed information about a specific VDA machine by name or ID. |
| get_vda_machine_resource_usage | Analyze machine resource utilization metrics with health assessment, including statistical profiling (mean, P95, max), anomaly detection, saturation pattern detection, and actionable recommendations. |
| list_top_vda_machines_by_load_index | List the most-loaded multi-session OS VDA machines ranked by effective load index. |
Sessions
| Tool | Description |
|---|---|
| search_sessions | Search sessions with filters on user, machine, Delivery Group, Machine Catalog, agent version, OS type, session state, session support, and applications in use. |
| get_session_details | Retrieve full details for a specific session by session ID. |
| get_session_metrics | Retrieve session performance metrics for a user or session within the last 2 hours. A gap in metrics within a time interval might indicate a session disconnection during that period. |
| get_session_logon_breakdown_metrics | Retrieve logon duration breakdown metrics for a user, showing each logon step with its duration, start time, and end time. |
Users and endpoints
| Tool | Description |
|---|---|
| get_active_machines_by_user | List the VDA machines a user currently has active sessions on, including machine name, DNS name, IP address, and agent version. |
| get_active_users_by_machine | List the users with active sessions on a specific machine, including user name, UPN, full name, and domain. |
| get_endpoint_metrics | Retrieve endpoint (client) device metrics for a user or session within the last 2 hours. |
| get_connection_failures | Retrieve failed connection attempts for a user (up to the last 7 days) or by transaction ID (up to 90 days), including failure reason and machine status at the time of failure. |
Advanced queries
| Tool | Description |
|---|---|
| run_dynamic_odata | Run custom OData queries against the CVAD Monitor OData service. Supports automatic pagination up to 10,000 rows. |
| get_odata_reference | Instructs the AI client to retrieve the Citrix Monitor OData documentation. If the online documentation is unavailable, the tool falls back to the reference documentation bundled with the image. |
Update the configuration
To change any settings (DDC host, administrator credentials, and so on), re-run the config command:
npx -y .\citrix-cvad-mcp-bundle-<version>.tgz config
Known limitations
| Limitation | Details |
|---|---|
| Session and endpoint metrics window | get_session_metrics and get_endpoint_metrics return data for the last 2 hours only. |
| Connection failure lookback | get_connection_failures supports up to 7 days by user name. |
| OData row limit | run_dynamic_odata returns a maximum of 10,000 rows per query. |
| Orchestration tool limit | Tools retrieving configuration details have a limit of up to 500. Machine and session lists might be truncated. |
| Single site connection | The server connects to one Citrix site at a time. To query a different site, re-run the config command and provide a Delivery Controller from that site. |
| Local execution only | The server must run on the same machine as the AI client. Remote or hosted MCP server deployment is not supported. |
Troubleshooting
Citrix DaaS MCP Server Local includes a
doctor command for diagnosing issues. Run it when the server does not behave as expected:
npx -y .\citrix-daas-mcp-local-bundle-<version>.tgz doctor
The doctor command inspects each stage of the server's operation and reports the failing stage along with remediation steps.
Citrix tools or the citrix-daas-mcp-local MCP server are missing or blocked after the config command succeeds?
Solution:
-
For AI clients other than Claude Code, manually configure the MCP server. See For Other AI Clients (Manual Setup) for details.
-
If your AI client enforces an MCP allowlist, make sure citrix-daas-mcp-local is permitted. See your AI client's documentation for details.
-
Restart the AI client or start a new session.
NVM is not recognized after installation?
Solution:
-
Close and reopen PowerShell
-
Run
nvm versionto confirm NVM is on your PATH -
If still not recognized, restart the machine and try again
Node.js version is below 18?
Solution:
-
Run
nvm install 20to install Node.js 20 -
Run
nvm use <exact_version>to switch to the installed version -
Verify with
node -v
Container runtime installation fails during config?
Solution:
-
Install Docker Desktop or Podman manually on the machine
-
Re-run the config command after the container runtime is available
Container runtime not ready after system startup?
Solution:
-
If this occurs, reconnect to the MCP server after the container runtime has finished starting.
Multiple containers running?
Solution:
-
Close any AI client sessions that are no longer needed. The corresponding containers are stopped automatically.
Server is not responding or returning errors?
Solution:
-
Run the doctor command and follow the reported remediation
-
Verify network connectivity to the DDC (confirm the DDC host name and IP are reachable from this machine)
-
Verify that the administrator credentials are correct and have the required permissions
Tools are not loading in the AI client?
Solution:
-
Verify that the server is listed as connected in your AI client's MCP server list
-
Restart the AI client session after adding the server
-
Run the doctor command to confirm the server configuration is valid
-
Check that Node.js 18 or later is installed and available on your PATH
Queries return empty results or unexpected errors?
Solution:
-
Verify that the DDC is reachable from this machine
-
Confirm that the configured administrator account has the required permissions on the DDC
-
Check that the Delivery Controller services are running
-
Run the doctor command for a full diagnostic
Command reference
| Command | Purpose |
|---|---|
npx -y .\citrix-daas-mcp-local-bundle-<version>.tgz config |
Install or reconfigure the server and container runtime. Runs a self-test on the first install. |
npx -y .\citrix-daas-mcp-local-bundle-<version>.tgz doctor |
Diagnose problems with the server configuration or connectivity. |