Skip to main content
Glama
matt-coppinger

Horizon MCP Server

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
MCP_HOSTNoHost interface to bind when using HTTP transport.0.0.0.0
MCP_PORTNoPort for HTTP transport when MCP_TRANSPORT is not stdio.8000
MCP_API_KEYNoOptional API key for authenticating MCP clients when using HTTP transport. If set, clients must send it as a Bearer token. Ignored for stdio.
MCP_TRANSPORTNoTransport protocol for the MCP server: 'stdio' (default), 'streamable-http', or 'sse'.stdio
HORIZON_BASE_URLYesThe URL of the Omnissa Horizon Connection Server, e.g. https://horizon.corp.example.com
HORIZON_VERIFY_SSLNoSet to 'false' to disable TLS certificate verification (not recommended for production). Defaults to true.true
HORIZON_ACCESS_TOKENNoAccess token for Horizon API. Can be provided here or obtained at runtime via the horizon_login tool.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
extensions
{
  "io.modelcontextprotocol/ui": {}
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
horizon_loginA

Authenticate to Horizon and return access and refresh tokens.

The access_token is valid for ~8 hours. The refresh_token can be used with horizon_refresh_token to obtain a new access_token without re-entering credentials.

This tool also updates the running server's active token so subsequent tool calls work immediately without restarting the server.

SECURITY: Copy the returned access_token to your MCP client config (HORIZON_ACCESS_TOKEN env var), then clear it from the conversation. Treat both tokens as passwords — do not share or log them.

horizon_refresh_tokenA

Exchange a refresh token for a new access token.

Use this before the current access token expires (~8 hours) to maintain an active session without re-entering credentials.

horizon_logoutA

Invalidate the current Horizon session (access + refresh tokens).

list_connection_serversA

List all Horizon Connection Servers in the pod.

get_connection_serverA

Get configuration details for a specific Connection Server.

list_virtual_centersA

List all vCenter Servers configured in the Horizon environment.

get_environment_propertiesA

Get environment-level properties including version, FIPS mode, and feature flags.

get_settingsA

Get the global Horizon configuration settings.

Includes client session timeouts, pre-launch settings, display protocol defaults, HTML Access settings, and other global options.

get_global_policiesA

Get global VDI policies including USB redirection, multimedia redirection, clipboard settings, and other environment-wide policy settings.

update_global_policiesA

Update global VDI policies (USB redirection, clipboard, multimedia redirection).

Always call get_global_policies first to read current values. Only modify the specific fields you intend to change — pass the full object back.

update_settingsA

Update a Horizon settings section.

setting_type maps to these resources and endpoints: general → horizon://config/settings/general security → horizon://config/settings/security client → horizon://config/settings/client feature → horizon://config/settings/feature agent-restriction → horizon://config/settings/agent-restriction

Always read the current settings first and only modify the fields you intend to change.

list_licensesA

List all Horizon licenses and their status, mode, and expiry information.

get_event_databaseA

Get the configuration and connection status of the Horizon event database.

list_ic_domain_accountsA

List instant clone domain accounts used for provisioning instant clone desktops.

list_image_managementB

List image management streams, versions, or tags.

list_gatewaysA

List all registered Unified Access Gateways.

trigger_connection_server_backupA

Initiate an immediate backup of one or more Connection Servers.

CAUTION: This triggers an active backup operation, not a validation check. If no server_ids are provided, all Connection Servers are backed up.

get_api_coverageA

List all available Horizon MCP tools, resources, and unsupported operations.

Call this to understand what can be managed via this MCP server before attempting a task, or to accurately inform users which Horizon features are and are not supported.

Returns three sections: tools — all callable tools grouped by function resources — read-only MCP Resources (horizon://) for config and monitor data not_yet_supported — Horizon API operations not yet implemented

list_pool_entitlementsA

List entitlements for all pools of the given type.

Returns which users and groups are entitled to each pool. Use get_pool_entitlement for a specific pool's details.

get_pool_entitlementB

Get the users and groups entitled to access a specific pool.

set_pool_entitlementsA

Add, replace, or remove entitlements for a desktop or application pool.

CAUTION: action='replace' removes any existing entitlements not in the provided list. CAUTION: action='remove' immediately revokes access for the specified principals. Always confirm with the user before using replace or remove.

search_ad_users_or_groupsA

Search for AD users and groups in the Horizon environment.

Use the returned 'id' field when setting pool entitlements.

Common filter fields: name, login_name, group, domain. Example filters: Find user by login: {"type":"Equals","name":"login_name","value":"jsmith"} Find by display name: {"type":"Contains","name":"name","value":"John"} Groups only: {"type":"Equals","name":"group","value":"true"}

get_ad_user_or_groupB

Get detailed information about a specific AD user or group.

list_ad_domainsA

List all Active Directory domains configured in the Horizon environment.

Returns domain details including trust relationships, status, and bind accounts.

list_ad_containersA

List AD containers (OUs) available in a domain for pool provisioning.

The rdn (relative distinguished name) from these results is used as the ad_container_rdn in create_desktop_pool and create_rdsh_farm provisioning_settings to control which OU newly provisioned computers are placed in. This is the OU picker equivalent of what the Horizon Console shows during pool creation.

get_domain_netbios_mapB

Get a mapping of domain NETBIOS names to DNS names for all configured domains.

list_audit_eventsA

List Horizon audit events (administrative actions and system events).

Useful for reviewing recent changes, troubleshooting, and compliance auditing.

list_base_vmsB

List VMs in vCenter that can be used as base images for instant clone pools/farms.

list_datastoresB

List datastores available in vCenter for desktop pool or farm provisioning.

list_vm_foldersB

List VM folders in a vCenter datacenter for use in pool/farm configuration.

list_datacentersA

List datacenters in a vCenter Server.

The datacenter ID is required by list_vm_folders, list_hosts_or_clusters, and create_desktop_pool / create_rdsh_farm provisioning_settings.

list_hosts_or_clustersA

List hosts and clusters in a vCenter datacenter.

The host_or_cluster_id is required by list_datastores, list_resource_pools, list_network_labels, and create_desktop_pool / create_rdsh_farm provisioning_settings.

list_resource_poolsA

List resource pools on a host or cluster.

The resource_pool_id is required by create_desktop_pool and create_rdsh_farm provisioning_settings.

list_base_vm_snapshotsA

List snapshots of a base VM that can be used as the image for an instant clone pool or farm.

The snapshot_id is required by create_desktop_pool and create_rdsh_farm provisioning_settings when source is INSTANT_CLONE.

list_network_labelsA

List network labels (port groups / distributed port groups) available on a host or cluster.

Network label IDs are used in the nics array of create_desktop_pool and create_rdsh_farm provisioning_settings: "nics": [{"nic_id": "", "network_label_id": ""}]

list_network_interface_cardsA

List network interface cards (NICs) available for pool or farm NIC configuration.

The nic_id from these results pairs with a network_label_id (from list_network_labels) in the nics array of create_desktop_pool and create_rdsh_farm provisioning_settings: "nics": [{"nic_id": "", "network_label_id": ""}]

Pass base_vm_id + base_snapshot_id to filter NICs for an instant-clone pool, or vm_template_id to filter NICs for a full/linked-clone pool.

list_vm_templatesA

List VM templates available in vCenter for use as pool base images.

Templates are used for full-clone or linked-clone desktop pools (source=FULL_CLONE or LINKED_CLONE). Use the template_id in create_desktop_pool provisioning_settings instead of parent_vm_id.

list_datastore_clustersA

List datastore clusters (Storage DRS pods) available on a host or cluster.

Use the datastore_cluster_id in create_desktop_pool or create_rdsh_farm provisioning_settings when using Storage DRS for automated datastore placement.

list_customization_specificationsA

List vCenter customization specifications (Sysprep/QuickPrep) available for pool provisioning.

The customization_specification_id from these results is used in create_desktop_pool and create_rdsh_farm provisioning_settings to apply OS customization (hostname, domain join, license key) to provisioned VMs.

diagnose_sessionA

Retrieve diagnostic information for a user session in a single call.

Fetches any combination of: logon timing breakdown, real-time display protocol metrics, 15-minute historical performance, running processes, and active remote applications. Results are keyed by aspect name; a failed aspect returns its error message as a string rather than failing the whole call.

get_remote_assistance_ticketA

Generate a Microsoft Remote Assistance ticket for a user session.

Returns an MSRA connection ticket that allows a help desk technician to view and control the user's desktop session.

end_remote_applicationA

Terminate a specific remote application running in a session.

CAUTION: The application will be force-closed. Unsaved data will be lost. Confirm with the user before calling this.

list_desktop_poolsA

List all desktop pools (VDI and RDS) in the Horizon environment.

get_desktop_poolB

Get detailed configuration and status of a specific desktop pool.

create_desktop_poolA

Create a new desktop pool.

CAUTION: Provisioning an AUTOMATED pool immediately begins creating VMs in vCenter. Always confirm with the user before calling this.

update_desktop_poolB

Update an existing desktop pool's configuration.

delete_desktop_poolA

Delete a desktop pool and all of its machines.

CAUTION: This is irreversible. All machines in the pool are deleted and any active user sessions are terminated. Always confirm with the user before calling this.

desktop_pool_actionA

Enable, disable, or toggle provisioning for one or more desktop pools.

enable/disable controls whether new user sessions can be established. enable-provisioning/disable-provisioning controls whether new VMs are provisioned. Disabling provisioning is the correct way to pause scale-out during maintenance.

list_machinesA

List machines (virtual desktops) in the environment.

To filter by pool, use: filter={"type":"Equals","name":"desktop_pool_id","value":""} To filter by state, use: filter={"type":"Equals","name":"state","value":"AVAILABLE"}

get_machineA

Get detailed information about a specific machine.

machine_actionA

Perform a bulk action on one or more machines.

Actions:

  • shutdown: gracefully power off (use force=true to override active sessions)

  • restart: reboot the machine (use force=true to override active sessions)

  • reset: hard reset (power cycle) — may cause data loss

  • rebuild: re-provision the machine from the pool's image

  • recover: recover a machine stuck in an error state

  • enter_maintenance: put machine into maintenance mode (prevents new sessions)

  • exit_maintenance: take machine out of maintenance mode

  • archive: initiate machine archival

CAUTION: rebuild and reset are destructive and will discard unsaved user data. Always confirm with the user before calling these actions.

assign_machine_usersA

Assign or unassign users to a dedicated desktop machine.

Only applicable to machines in dedicated (non-floating) desktop pools. A machine can only have one assigned user at a time in most pool configurations.

list_rdsh_farmsB

List all RDS (Remote Desktop Session Host) farms in the environment.

get_rdsh_farmA

Get detailed information about a specific RDS farm.

create_rdsh_farmA

Create a new RDS farm.

CAUTION: Provisioning an AUTOMATED farm immediately begins creating VMs in vCenter. Always confirm with the user before calling this.

update_rdsh_farmC

Update an existing RDS farm's configuration.

delete_rdsh_farmA

Delete an RDS farm and all of its servers.

CAUTION: This is irreversible. All servers in the farm are deleted and any active user sessions are terminated. Always confirm with the user before calling this.

rdsh_farm_actionA

Enable or disable one or more RDS farms.

Disabling a farm prevents new sessions from being routed to it without terminating existing sessions — useful for draining a farm before maintenance.

list_application_poolsB

List published application pools in the environment.

get_application_poolA

Get detailed information about a specific application pool.

create_application_poolB

Publish a new application pool from an RDS farm.

update_application_poolC

Update an existing application pool's configuration.

delete_application_poolA

Delete a published application pool.

CAUTION: Users will immediately lose access to this application. Always confirm with the user before calling this.

list_sessionsA

List active user sessions in the environment.

Common filter fields: user_name, desktop_pool_id, machine_name, client_name, state. Session states: CONNECTED, DISCONNECTED, PENDING.

get_sessionB

Get detailed information about a specific user session.

disconnect_sessionsA

Disconnect one or more user sessions (sessions remain active, clients are disconnected).

The user's applications keep running. Use logoff_sessions to fully terminate sessions.

logoff_sessionsA

Log off one or more user sessions, terminating their running applications.

CAUTION: This will close all running applications in the session. Unsaved data will be lost. Always confirm with the user before calling this.

reset_or_restart_sessionsA

Reset or restart the virtual machine backing one or more sessions.

CAUTION: Both actions will terminate the user's session. reset is a hard power-cycle and may cause data loss. restart attempts a graceful reboot but the session will still end. Always confirm with the user before calling this.

send_message_to_sessionsA

Send a pop-up notification message to one or more active user sessions.

get_infrastructure_healthA

Get health and status across Horizon infrastructure in a single call.

Components:

  • summary: overall health rollup across all component types

  • connection_servers: per-server reachability, load, and tunnel counts

  • gateways: Unified Access Gateway connectivity status

  • virtual_centers: vCenter Server connectivity and health

  • ad_domains: Active Directory domain reachability and bind status

  • farms: RDS farm health and server capacity

Results are keyed by component name. A failed component returns its error as a string rather than failing the whole call.

get_connection_server_healthB

Get detailed health information for a specific Connection Server.

get_metricsA

Get performance and capacity metrics across the Horizon environment in a single call.

Scopes:

  • pools: session and machine counts per desktop pool

  • sessions: aggregate connected/disconnected/pending session totals

  • machines: aggregate machine state counts across all pools

  • system: CPU and memory metrics for connection servers

  • rds_servers: RDS server state counts across all farms

  • license: current and peak license usage

Results are keyed by scope name. A failed scope returns its error as a string rather than failing the whole call.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription
config_rolesRBAC roles defined in Horizon (name, id, privileges).
config_permissionsPermission assignments mapping roles to access groups and principals.
config_privilegesAll selectable Horizon admin privileges.
config_local_access_groupsLocal access groups used for role-based admin delegation.
config_federation_access_groupsFederation access groups (Cloud Pod Architecture).
config_gateway_accessUsers and groups with gateway access.
config_users_groups_global_summaryGlobal summary of admin users and groups across pods.
config_saml_authenticatorsSAML 2.0 authenticators configured in Horizon.
config_radius_authenticatorsRADIUS authenticators configured in Horizon.
config_gssapi_authenticatorsGSSAPI/Kerberos authenticators configured in Horizon.
config_jwt_authenticatorsJWT authenticators configured in Horizon.
config_unauthenticated_access_usersUsers configured for unauthenticated (kiosk) access.
config_app_volumes_managersApp Volumes Managers registered with Horizon (id, URL, status).
config_uem_serversUser Environment Manager servers registered with Horizon.
config_true_ssoTrueSSO connector configurations.
config_true_sso_enrollment_serversTrueSSO enrollment servers.
config_compute_profilesCompute profiles available for pool and farm provisioning.
config_customization_specificationsvCenter customization specifications (Sysprep/QuickPrep) defined in config.
config_external_deploymentsExternal deployments (e.g. Horizon Cloud links) registered with this pod.
config_secondary_credentialsSecondary credentials configured for connection servers.
config_message_clientsMessage security mode clients registered with Horizon.
config_rcx_serversRCX (Remote Console) servers registered with Horizon.
config_settings_agent_restrictionAgent restriction settings (allowed client versions and types).
config_settings_clientClient feature and behaviour settings.
config_settings_featureFeature toggle settings.
config_settings_generalGeneral Horizon settings.
config_settings_securitySecurity-related Horizon settings.
config_pre_logon_settingsPre-logon message and warning banner settings.
config_syslogSyslog server configuration.
config_ceipCustomer Experience Improvement Program (CEIP) enrollment status.
config_url_redirectionURL content redirection rules.
config_log_levelsCurrent log level settings for Horizon components.
config_log_collector_tasksLog collection tasks (in-progress and completed bundles).
monitor_app_volumes_managersApp Volumes Manager health and connectivity status.
monitor_event_databaseEvent database connection status and metrics.
monitor_rds_serversHealth and session load for all RDS servers across all farms.
monitor_saml_authenticatorsSAML authenticator health and certificate status.
monitor_true_ssoTrueSSO connector health and certificate status.
monitor_datastore_usageDatastore space usage metrics broken down by pool and farm.
monitor_podsRemote pod health in Cloud Pod Architecture (CPA) federation.
monitor_global_session_metricsAggregate session counts across all pods in CPA federation.
monitor_message_clientsMessage security client health status.

TDQS

A3.6/5.0

Scored across 72 tools

Disambiguation5/5

Each tool targets a distinct resource/action pair, and the many list/get/create/update/delete groups have clear boundaries. Even similar-sounding tools like get_settings vs get_global_policies or get_metrics vs get_infrastructure_health are separated by explicit scope descriptions.

Naming Consistency4/5

The dominant list_/get_/create_/update_/delete_ + resource pattern is consistent and readable, and all names use snake_case. Minor deviations like horizon_login and machine_action/desktop_pool_action slightly break the strict verb-noun pattern but remain predictable.

Tool Count2/5

72 tools is a very large surface, even for a broad Horizon administration API. Many granular inventory/discovery tools (datastores, VM folders, NICs, network labels, resource pools) could plausibly be consolidated into fewer parameterized tools without losing clarity.

Completeness5/5

The set provides full lifecycle coverage for desktop pools, RDS farms, application pools, entitlements, sessions, global policies, and infrastructure health/monitoring. Unsupported operations are explicitly exposed via get_api_coverage, so there are no obvious dead ends for the Horizon administration domain.

Maintenance

ActivityMaintained
ResponsivenessNo issues