Skip to main content
Glama
sachdev27

OpManager MCP Server

by sachdev27

OpManager MCP Server

Python 3.10+ License: MIT Tests MCP SDK

A credential-less Model Context Protocol (MCP) server for ManageEngine OpManager REST API integration. This server enables AI assistants like Claude to interact with your OpManager infrastructure through natural language.

✨ Key Features

  • πŸ” Credential-less Design: No hardcoded API keys - users provide host and apiKey per request

  • πŸ”„ SSL Auto-Detection: Port 8061 β†’ HTTPS, Port 8060 β†’ HTTP (with manual override)

  • πŸ“‘ 85+ API Endpoints: Full OpManager API coverage for devices, alarms, dashboards, discovery, and more

  • πŸ›  Dynamic Tool Generation: Automatically generates MCP tools from OpenAPI specification

  • 🌐 Multiple Transports: Supports stdio (Claude Desktop) and HTTP/SSE (n8n, web clients)

  • 🐳 Docker Ready: Containerized deployment with Docker and Docker Compose

πŸš€ Quick Start

Installation

# Clone the repository git clone https://github.com/sachdev27/opmanager-mcp-server.git cd opmanager-mcp-server # Create virtual environment python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate # Install the package pip install -e ".[http]"

Start the HTTP Server

uvicorn opmanager_mcp.http_server:app --host 0.0.0.0 --port 3000

Test a Tool Call

curl -X POST http://localhost:3000/call \ -H "Content-Type: application/json" \ -d '{ "name": "opmanager_get_allDevices", "arguments": { "host": "opmanager.example.com", "apiKey": "your-api-key-here", "port": 8061 } }'

πŸ“‹ Configuration

Environment Variables

Create a .env file (optional - for server defaults only):

cp .env.example .env

Variable

Description

Default

MCP_SERVER_LOG_LEVEL

Logging level

INFO

ALLOWED_HTTP_METHODS

Allowed HTTP methods for tools

GET,POST,PUT,DELETE,PATCH

LOCAL_OPENAPI_SPEC_PATH

Path to OpenAPI spec

bundled openapi.json

Note: OPMANAGER_HOST and OPMANAGER_API_KEY are NOT configured server-side. Users provide these per-request for security.

Getting Your OpManager API Key

  1. Log in to OpManager web console

  2. Navigate to Settings β†’ REST API

  3. Generate a new API key

  4. Use this key in your tool calls

πŸ”§ Tool Parameters

Every tool accepts these connection parameters:

Parameter

Required

Description

host

βœ… Yes

OpManager server hostname

apiKey

βœ… Yes

API key for authentication

port

No

Server port (default: 8060)

use_ssl

No

Force SSL (auto-detected from port)

verify_ssl

No

Verify SSL certificates (default: true)

SSL Auto-Detection

  • Port 8061: Automatically uses HTTPS

  • Port 8060: Automatically uses HTTP

  • Override with use_ssl: true/false if needed

🌐 HTTP API Endpoints

Endpoint

Method

Description

/health

GET

Health check with tool count

/tools

GET

List all available tools

/sse

GET

SSE connection for MCP

/messages

POST

MCP message handler

/call

POST

Direct tool invocation

Health Check

curl http://localhost:3000/health # {"status":"healthy","tool_count":60}

List Tools

curl http://localhost:3000/tools | jq '.tools[].name'

πŸ€– n8n Integration

  1. Start the HTTP server on port 3000

  2. In n8n, add an AI Agent node with MCP Client tool

  3. Configure the MCP Client:

    • SSE URL: http://localhost:3000/sse

    • Messages URL: http://localhost:3000/messages

Example System Prompt for n8n

You are an IT operations assistant with access to OpManager for network monitoring. When using OpManager tools, always include: - host: "opmanager.company.com" - apiKey: "your-api-key" - port: 8061 (for HTTPS) Available operations: - List all devices: opmanager_get_allDevices - Get device details: opmanager_get_device (requires deviceName) - List alarms: opmanager_get_alarms - Acknowledge alarm: opmanager_add_alarmNotes

πŸ–₯ Claude Desktop Integration

Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):

{ "mcpServers": { "opmanager": { "command": "python", "args": ["-m", "opmanager_mcp.main"], "cwd": "/path/to/opmanager-mcp-server", "env": { "LOCAL_OPENAPI_SPEC_PATH": "/path/to/opmanager-mcp-server/openapi.json" } } } }

Note: With Claude Desktop, you'll tell Claude your OpManager host and API key in conversation, and it will include them in tool calls.

πŸ›  Available Tools (60+ GET operations)

Devices

  • opmanager_get_allDevices - List all monitored devices

  • opmanager_get_device - Get device details by name

  • opmanager_get_deviceAvailability - Device availability history

Alarms

  • opmanager_get_alarms - List alarms with filtering

  • opmanager_get_alarmDetails - Get alarm details

  • opmanager_add_alarmNotes - Add notes/acknowledge alarm

Discovery

  • opmanager_get_discoveryStatus - Check discovery progress

  • opmanager_add_discovery - Start network discovery

Reports & Dashboards

  • opmanager_get_allDashboards - List all dashboards

  • opmanager_get_scheduledReports - List scheduled reports

And more...

Run curl http://localhost:3000/tools to see all available tools.

🐳 Docker

Build and Run

docker build -t opmanager-mcp-server . docker run -d -p 3000:3000 --name opmanager-mcp opmanager-mcp-server

Docker Compose

docker-compose up -d

πŸ§ͺ Development

Run Tests

# Install dev dependencies pip install -e ".[dev]" # Run all tests pytest # Run with coverage pytest --cov=opmanager_mcp --cov-report=term-missing # Current: 32 tests, 50% coverage

Code Quality

# Format black opmanager_mcp tests isort opmanager_mcp tests # Lint ruff check opmanager_mcp tests # Type check mypy opmanager_mcp

Regenerate OpenAPI Spec

python generate_openapi.py

πŸ“ Project Structure

opmanager-mcp-server/ β”œβ”€β”€ opmanager_mcp/ β”‚ β”œβ”€β”€ __init__.py # Package exports β”‚ β”œβ”€β”€ api_client.py # HTTP client for OpManager API β”‚ β”œβ”€β”€ config.py # Configuration management β”‚ β”œβ”€β”€ exceptions.py # Custom exceptions β”‚ β”œβ”€β”€ http_server.py # HTTP/SSE server (Pure ASGI) β”‚ β”œβ”€β”€ logging_config.py # Logging configuration β”‚ β”œβ”€β”€ main.py # CLI entry point β”‚ β”œβ”€β”€ server.py # MCP server implementation β”‚ └── tool_generator.py # OpenAPI to MCP tool converter β”œβ”€β”€ tests/ β”‚ β”œβ”€β”€ conftest.py # Test fixtures β”‚ β”œβ”€β”€ test_api_client.py # API client tests β”‚ β”œβ”€β”€ test_config.py # Config tests β”‚ β”œβ”€β”€ test_http_server.py # HTTP server tests β”‚ β”œβ”€β”€ test_server.py # MCP server tests β”‚ └── test_tool_generator.py # Tool generation tests β”œβ”€β”€ openapi.json # OpManager OpenAPI specification β”œβ”€β”€ pyproject.toml # Project configuration β”œβ”€β”€ Dockerfile # Container image β”œβ”€β”€ docker-compose.yml # Compose configuration └── README.md # This file

πŸ“„ License

MIT License - see LICENSE for details.

πŸ™ Acknowledgments

-
security - not tested
A
license - permissive license
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/sachdev27/opmanager-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server