Saturday, October 17, 2026

Bring Your Own Agency: Putting Claude to Work Across the Omnissa Stack With MCP Servers

Customers looking to integrate Omnissa products with their AI agent of choice can use the new Omnissa MCP Server or their own custom MCP server. This article will demonstrate both approaches using Claude Desktop for Windows and a free Claude account from Anthropic, an accessible way to evaluate these MCP options in a lab. We'll start by reviewing the integration of the Omnissa MCP Server with the Claude Desktop client, then further extend our Claude-based management capabilities with a custom MCP server for an on-premises Horizon environment. Combined, these options enable customers to connect Claude across the Omnissa stack, extending Claude's agency to Omnissa management and observability. Though this article focuses on Claude, MCP is an open standard, so the strategies covered in this article should be adaptable to other MCP-capable AI clients like Gemini CLI or ChatGPT.

Omnissa MCP Server In Action

When the Omnissa MCP Server is properly configured for use with Claude Desktop you'll see a corresponding connector available within Claude's chat window.  


To use the connector you can begin with a natural language query.   For example: 


Claude responds with query results against the Workspace ONE environment.  


Here's an example of a follow-up question: 

Most striking about my first experience working with the Omnissa MCP Server was how agentic the whole process was. I didn't have to understand how the Omnissa MCP Server works or what tools it has to offer. I simply asked Claude a question and it went on to determine which tool offered by the Omnissa MCP Server would be best to try.  In fact, you can see Claude's agency at work when you expand the activity summary within the chat interface.     

Claude chose the Intelligence QueryAI tool on its own, guided by the descriptions each tool advertises to the client.  When the first query failed, it recalibrated, issued a second query and returned the answer. 

For another demonstration, check out the compelling video in the Omnissa MCP Server public beta announcement titled, The Omnissa MCP Server Is Now In Public Beta. 

Setting Up Access To Omnissa MCP Server For Claude Desktop 

The Omnissa MCP Server has recently become available for a small subset of customers.  Once access to Omnissa MCP Server has been granted to your organization within Omnissa Connect there are five major steps to enabling its integration with Claude Desktop. These steps are:
  1. Assigning authentication and access control permissions within Omnissa Connect
  2. Generating an MCP token for user-based authorization
  3. Installing Claude Desktop
  4. Installing Node.js 
  5. Adding an MCP server entry for the Omnissa MCP Server within your Claude Desktop config 
The first two steps are well documented within the article, Getting Started with Omnissa MCP Server, so I'll let that documentation speak for itself. However, I will call out that when generating the MCP token you define RBAC controls that refine the scope of administrative access. This helps narrow the blast radius when leveraging the Omnissa MCP Server. 


The token scope can only narrow your admin account’s existing permissions, never expand them. After defining the administrative scope and life span an MCP token is generated for you. You'll leverage this token, along with an Omnissa MCP Server URL, in the Claude Desktop config. To get Claude Desktop installed download the installer from https://claude.com/download. There you'll find the different versions of Claude Desktop available for various platforms. For this recipe I'm going with the Windows-based client. The install should be straightforward and uneventful.



Next, install Node.js. It provides npx, which Claude Desktop uses to launch mcp-remote, a small bridge that connects Claude Desktop’s locally launched servers to Omnissa’s remote HTTP endpoint. WinGet makes this easy:

 winget install OpenJS.NodeJS.LTS


Close the PowerShell terminal, reopen it, then confirm that Node.js is installed by running node -v.


With the prerequisites in place, the last step is getting the Claude Desktop config, claude_desktop_config.json, edited with a JSON-based description for the Omnissa MCP Server. In Claude Desktop navigate to Settings --> Developer --> Edit config to open the folder containing the file. 



Assuming no other MCP servers have already been configured, you'll need to add an entry like this to the config: 


This tells Claude Desktop to use npx to launch mcp-remote, pointed at the Omnissa MCP Server URL and authenticated with your token. The MCP server URL would go where <mcp server url> is displayed above.  The token goes where it displays [mcp-client-token] above. After making the edits close the Claude application and quit Claude from the system tray.  Assuming everything goes well, when you launch Claude again and navigate to the Developer panel you’ll see the Omnissa-uem-mcp server as up and running.



For further confirmation, when you go to the chat window within Claude Desktop you should see that Omnissa MCP Server shows up as an available connector.


At this point you can start leveraging the Omnissa MCP Server in your chats within Claude Desktop, firing off natural language queries at will.  

As to security concerns over having an access token embedded in a Claude Desktop config, yes, yes, I know. Both the getting started document and beta announcement indicate there'll be future support for OAuth, so that's likely going to be your long-term solution.  In the short term you can limit risk with the token scope and by restricting the use of Omnissa MCP Server to lab or UAT environments. Otherwise, for a more secure approach you could attempt a different MCP server configuration, using some kind of custom wrapper that injects the MCP token securely at runtime. Along those lines, in the following guidance on creating your own custom MCP server, Windows Credential Manager is leveraged to avoid embedding credentials in a script or Claude Desktop config. 

Vibe Coding Your Own MCP Server For Omnissa Horizon

The Omnissa MCP Server is impressive, but if you need functionality it doesn’t offer, you can build your own MCP server. I wanted to take more actions against an on-premises Horizon environment, so I had Claude create an MCP server in Python that leverages the Horizon Server API for monitoring and management. When prompting the creation of this script, I pointed Claude to the API documentation as well as a few other articles I've written, including No REST For The RESTful: Python And The Horizon Server API. Claude built a set of Python functions for the Horizon Server API, then exposed them as MCP tools using FastMCP from the official MCP Python SDK. The result is a Python-based MCP server that runs locally alongside Claude Desktop over stdio. You can find the script on GitHub.

A word of caution: this is my personal lab project, not an Omnissa-supported product. Review the code before running it, and point it at a lab first.

With this Python script in hand, the next steps to standing up the MCP server are: 
  1. Installing Python
  2. Installing the required Python modules
  3. Staging the Python script and required CA certificate if necessary 
  4. Storing Horizon credentials in Windows Credential Manager 
  5. Adding the server to your Claude Desktop config
To install Python, for convenience, you can lean on WinGet: 

winget install Python.Python.3.13 --scope machine --override "InstallAllUsers=1 PrependPath=1"


After the install completes, close the PowerShell terminal and reopen it. Python should now be available from the command line as well as pip for installing Python modules.  To install the required Python modules you can issue these commands:   

pip install requests
pip install keyring
pip install "mcp>=1.2,<2"


To validate these modules have been successfully installed, run this command:

python -c "from mcp.server.fastmcp import FastMCP; import requests, keyring; print('ok')"

Next, we have to stage the Python script and any required CA root in the local directory at C:\mcp.  Later when we configure the Claude Desktop config we'll point to this directory.   


To keep credentials out of scripts and configs, the script uses the Python keyring module to pull credentials stored in Windows Credential Manager. So, before running our script, we need to populate Windows Credential Manager with credentials for the Horizon account (jj in my lab). For your environment, use a dedicated Horizon service account with only the roles you need. Store its password using the horizon_mcp_server.py script and its --set-password option.


The final step is configuring the Claude Desktop config to run this MCP server, a meticulous but short JSON configuration. Like the Omnissa MCP Server, the Horizon MCP server is configured as a JSON object, with properties like Python paths, Horizon server URL and trusted CA cert. Here’s what the configuration for my lab looks like:


After saving claude_desktop_config.json fully quit Claude, including from the system tray.  Then launch the Claude Desktop app again.  Hopefully, there are no error messages at launch.  Under Settings --> Developer you should see something like this: 



And now as we chat through Claude Desktop we have access to this new MCP server.   


As with the Omnissa MCP Server, what stood out was how agentic the experience felt. I didn’t have to name a tool or an endpoint. I just asked:


Seconds later, the user was issued a message, and a minute after that, their session was disconnected. 


Next, I asked: “Tell me the general health status of my Horizon environment and what needs to be fixed first.” Claude started with several calls to the Connection Server:


After doing these several checks, it summarized: 


Hazaa! Getting a warning about the soon-to-expire SSL certificate was not something I anticipated in the response, but was a highly relevant thing for Claude to call out.  

Troubleshooting 

Claude Desktop is just as clear about MCP Servers failing as it is about them working. Should a configured Server fail to start, you get a very clear indication within the Developer window.


When running into challenges with setting up MCP Server my first steps were feeding screenshots and logs back into Claude. For deeper testing, the official MCP Inspector lets you connect to a server outside Claude, list its tools, and call them directly. For example, on this custom Horizon MCP server we could test the logic with:

npx @modelcontextprotocol/inspector "C:\Program Files\Python313\python.exe" C:\mcp\horizon_mcp_server.py

This fired off a browser connection to the Inspector interface:


You can also point Inspector at the Omnissa MCP Server to confirm your token and URL work independently of Claude. 


As you can see, the tools advertised for Omnissa MCP Server using Inspector match the tools description provided at the end of the article, Getting Started With Omnissa MCP Server. 

BYOA - Bring Your Own Agency 

The Omnissa MCP Server and custom MCP servers are complementary options allowing customers to leverage their AI agent of choice for Omnissa administration.  The Omnissa MCP Server covers a lot of ground, particularly across Workspace ONE and Intelligence.  Many customers will find that this Omnissa-provided solution meets their requirements. If it falls short in some regard, there's always an option to augment with a custom MCP server.  Given how extensive and well documented the REST APIs are across the Omnissa stack and how capable AI coding assistants have become, custom MCP servers are well within reach.  Regardless of whether you choose to use the Omnissa MCP Server or your own custom MCP server, you have the opportunity to bring your AI client of choice, and all its agentic goodness, to bear on your Omnissa environment.