The OpManager MCP Server implements the Model Context Protocol (MCP), a standardized interface that enables AI agents and large language models to interact seamlessly with ManageEngine OpManager. It acts as a bridge, allowing MCP-compatible clients to access OpManager operational data by providing the required context to AI models through a unified interface.
This document explains how to configure the ITOM MCP Server to enable MCP-compatible clients to interact with ManageEngine OpManager.
The OpManager MCP Server enables MCP-compatible AI clients to interact with ManageEngine OpManager using a standardized MCP interface. It provides contextual access to OpManager data through authenticated API communication and supports integration with popular MCP hosts such as Visual Studio Code, Claude Desktop, Claude Code CLI, and Cursor along with other MCP clients that support MCP server connections.
By acting as a middleware layer between AI agents and OpManager, the MCP Server eliminates the need for direct client-side integrations while enabling secure, API key-based access to operational data.
The OpManager MCP Server is distributed as a Docker image and now runs as a long-lived HTTP service that MCP clients connect to over the network, rather than a container the client spawns per session.
The ITOM MCP Server is distributed as a Docker image and runs locally to facilitate communication between MCP-compatible clients and an OpManager instance. The Docker container uses environment variables to authenticate and establish connectivity with OpManager.
Ensure the following requirements are met before proceeding:
The official pre-built Docker image is available on Docker Hub and can be pulled directly to set up the ITOM MCP Server.
docker pull manageengineonpremises/itom-mcp-server:latestConfigure your MCP-compatible client to connect to the ITOM MCP Server.
docker run -d --name itom-mcp -p 8000:8000 \
-e MCP_PUBLIC_BASE_URL=http://<mcp-server-host>:8000 \
-e MCP_TRANSPORT=http \
--cap-drop=ALL \
--cap-add=NET_BIND_SERVICE \
manageengineonpremises/itom-mcp-server:latestReplace <mcp-server-host> with the hostname/IP where this MCP server container is reachable by MCP clients.
-e OPMANAGER_API_URL=<OpManager_URL> at startup to fix the OpManager instance for all users of this server — in that case the browser form only asks for the API key.For production deployments behind HTTPS, add the following flags to the docker run command:
-e MCP_TLS_ENABLED=true \
-e MCP_TLS_PORT=8443 \
-e MCP_TLS_CERT_FILE=/certs/server-cert.pem \
-e MCP_TLS_KEY_FILE=/certs/server-key.pem \
-v /host/certs:/certs:roTo let clients outside the local network (a different office, home, or a cloud-hosted MCP client) reach this server, expose it through a secure tunnel/gateway instead of opening inbound firewall ports directly — for example ngrok, Microsoft devtunnel, or an equivalent reverse-tunnel service. The tunnel forwards a public HTTPS URL to the server's local port:
# Example with ngrok, forwarding to the container's published port 8000
ngrok http 8000Use the tunnel's public URL (for example https://abcd1234.ngrok-free.app) as MCP_PUBLIC_BASE_URL in the docker run command, so OAuth metadata, /authorize redirects, and client mcp.json entries all agree on the same externally reachable origin:
docker run -d --name itom-mcp -p 8000:8000 \
-e OPMANAGER_API_URL=<OpManager_URL> \
-e MCP_PUBLIC_BASE_URL=https://abcd1234.ngrok-free.app \
-e MCP_TRANSPORT=http \
--cap-drop=ALL \
--cap-add=NET_BIND_SERVICE \
manageengineonpremises/itom-mcp-server:latestThen point the remote client's mcp.json at the same tunnel URL instead of the LAN/localhost address used in the client sections below.
For local, single-user setups, the MCP client launches the server container itself as a subprocess — there is nothing to run manually here. Pull the image once:
docker pull manageengineonpremises/itom-mcp-server:latestThen configure the client with the docker run command and arguments (see Configuring stdio Clients (Local Subprocess Mode) below); the client executes that command for you on every launch.
In stdio mode there is no browser or HTTP header to fall back on, so both OPMANAGER_API_URL and OPMANAGER_MCP_API_KEYmust be passed as Docker environment variables in the client config. OAuth is not used in stdio mode.
Once the MCP server is running and a client is configured to point at it (see client sections below), the first connection triggers a one-time browser-based authorization:
/.well-known/oauth-authorization-server) and self-registers via Dynamic Client Registration (POST /register)./authorize, which redirects to a small page hosted by the MCP server (/itom/auth/page) asking for the OpManager API key (and, if not fixed by the server admin, the OpManager URL).GET /api/json/admin/getSupportedMCPVersions). On success, it issues a self-contained JWT access token (default 1 hour) and refresh token (default 30 days). The API key is encrypted inside the token.Authorization: Bearer <token>.To configure the ITOM MCP Server in Visual Studio Code:
.vscode folder and create or open mcp.json."servers":{
"servers": {
"ITOM_MCP_SERVER": {
"type": "http",
"url": "http://<mcp-server-host>:8000/mcp/"
}
}
}Replace the placeholder:
<mcp-server-host> - Hostname/IP of the running MCP server containerNo API key is required in this file — you will be prompted for it in the browser the first time the client connects (see First-Time Authorization Flow).
Save the file after making the changes. On first use, approve the browser prompt and enter your OpManager API key.
To configure the ITOM MCP Server in Claude Desktop:
claude_desktop_config.json file."mcpServers":{
"mcpServers": {
"ITOM_MCP_SERVER": {
"type": "http",
"url": "http://<mcp-server-host>:8000/mcp/"
}
}
}Replace the placeholder:
<mcp-server-host> - Hostname/IP of the running MCP server containerSave the file. On first use, a browser tab opens to collect your OpManager API key.
To configure the ITOM MCP Server in Claude Code CLI:
claude mcp add ITOM_MCP_SERVER --transport http http://<mcp-server-host>:8000/mcp/Replace the placeholder:
<mcp-server-host> - Hostname/IP of the running MCP server containerTo configure the ITOM MCP Server in Cursor:
mcp.json file.{
"mcpServers": {
"ITOM_MCP_SERVER": {
"type": "http",
"url": "http://<mcp-server-host>:8000/mcp/"
}
}
}Replace the placeholder:
<mcp-server-host> - Hostname/IP of the running MCP server containerSave the mcp.json file. On first use, a browser tab opens to collect your OpManager API key.
If you started the server in stdio mode instead of HTTP mode (see Optional stdio Mode), the client launches the container itself and must supply both the OpManager URL and API key as environment variables — there is no browser prompt in stdio mode. Use this mcp.json/mcpServers entry (VS Code, Cursor, Claude Desktop all accept the same shape):
{
"servers": {
"ITOM_MCP_SERVER": {
"type": "stdio",
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "OPMANAGER_API_URL=<OpManager_URL>",
"-e", "OPMANAGER_MCP_API_KEY=<OpManager_APIKey>",
"-e", "MCP_TRANSPORT=stdio",
"--cap-drop=ALL",
"--cap-add=NET_BIND_SERVICE",
"manageengineonpremises/itom-mcp-server:latest"
]
}
}
}Replace the placeholders:
<OpManager_URL> - URL of your OpManager instance (for example, https://your-server:8060)<OpManager_APIKey> - Your OpManager MCP API keyThis is the closest equivalent to the previously published flow and remains useful for single-user/local setups, but the HTTP + OAuth flow above is recommended for shared/production deployments.
For MCP clients that do not yet support OAuth 2.1, the server can accept the OpManager API key directly as an HTTP header. This is deprecated and can be disabled by setting ITOM_AUTH_LEGACY_HEADER_ENABLED=false on the server.
{
"servers": {
"ITOM_MCP_SERVER": {
"type": "http",
"url": "http://<mcp-server-host>:8000/mcp/",
"headers": {
"OPMANAGER_MCP_API_KEY": "<OpManager_APIKey>"
}
}
}
}mcp.json files. Prefer the OAuth flow above whenever the client supports it.MCP Server API access must be enabled at both the product level and user level, and the API key must be generated before configuring an MCP client.
This setting enables MCP Server support for the OpManager instance.

This setting allows a specific user to generate and use an MCP API key.

For versions 12.8.721 and above, follow the steps below to generate the MCP API key, after enabling access.

For versions below 12.8.721, follow the steps below to generate the MCP API key, after enabling access.

The OpManager MCP Server supports a range of tools grouped into categories based on what they help you accomplish. Use this section to understand what each category covers and when to use it.
The following categories of tools are available:
Tools in this category help you fetch active alarms, incidents, alarm properties, related context, and incident metrics from OpManager.
Use cases
Mapped tools
GetAlarmsAndIncidentsGetAlarmDetailsGetAlarmIncidentMetricsTools in this category let you perform alarm actions directly from the MCP session, including acknowledging, clearing, and adding notes to alarms. Some actions may require confirmation depending on your MCP server configuration.
Use cases
Mapped tools
AcknowledgeAlarmsUnacknowledgeAlarmsClearAlarmsAddAlarmNotesGetAlarmNotesUpdateAlarmNotesTools in this category help you retrieve device inventories, detailed device summaries, and filter options from OpManager.
Use cases
Mapped tools
ListDevicesGetDeviceSummaryGetDeviceFilterOptionsTools in this category help you retrieve virtualization hierarchies and relationship data between monitored devices and infrastructure elements.
Use cases
Mapped tools
GetVirtualizationInfrastructureTopologyGetDeviceRelationshipDataTools in this category help you discover available reports, retrieve report configuration options, and access preconfigured report data.
Use cases
Mapped tools
GetReportConfigurationOptionsGetAvailableReportsListGetReportDataTools in this category help you discover available performance monitors and retrieve performance metrics and KPI data for a device.
Use cases
Mapped tools
GetAvailablePerformanceMonitorsGetPerformanceMetricsAndKPIsTools in this category help you retrieve probe details in distributed OpManager deployments where data needs to be reviewed or compared across multiple probes.
Use cases
Mapped tools
ListOpManagerProbesTools in this category help you discover which devices, interfaces, and groups are available in Flow Analysis before running traffic queries.
Use cases
Mapped tools
ListFlowAnalysisDevicesListFlowAnalysisInterfacesListFlowAnalysisIPGroupsListFlowAnalysisInterfaceGroupsListFlowAnalysisWLCControllersListFlowAnalysisAccessPointsListFlowAnalysisAccessPointGroupsListFlowAnalysisSSIDGroupsTools in this category help you retrieve traffic report data from Flow Analysis devices, including top talker data, application traffic, and conversation-level details.
Use cases
Mapped tools
ListFlowAnalysisTopNDataGetFlowAnalysisTrafficDataGetFlowAnalysisApplicationDataGetFlowAnalysisSourceDataGetFlowAnalysisDestinationDataGetFlowAnalysisDSCPDataGetFlowAnalysisASDataGetFlowAnalysisASGroupDataGetFlowAnalysisConversationDataGetFlowAnalysisIndividualGraphDataGetFlowAnalysisSearchReportTools in this category help you retrieve Flow Analysis data from wireless devices, including top talker data, SSID traffic, and wireless conversation details.
Use cases
Mapped tools
ListFlowAnalysisWLCTopNDataGetFlowAnalysisWirelessDataGetFlowAnalysisWirelessSearchReport