Skip to main content

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

Metadata

Release files for opmanager-mcp-server 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for opmanager-mcp-server 1.0.0
File Size Uploaded Provenance
opmanager_mcp_server-1.0.0.tar.gz 70.0 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for opmanager-mcp-server 1.0.0
File Interpreter ABI Platform
opmanager_mcp_server-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 100.4 kB

Release files / opmanager_mcp_server-1.0.0.tar.gz

Download URL opmanager_mcp_server-1.0.0.tar.gz
Size 70.0 kB
Tags Source
SHA-256 checksum
How to use checksums
113d8b45b683d314a07cdbac7070dcc63e14627c13dc0f1a45a6b589c5b8d986
BLAKE2b-256 checksum
How to use checksums
352dea7fe353b0115d4aa832584a041b8fe56720e281c1569d9de59e61c3b88e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.7

Release files / opmanager_mcp_server-1.0.0-py3-none-any.whl

Download URL opmanager_mcp_server-1.0.0-py3-none-any.whl
Size 30.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e953b786de48325a0f21142fef2fde8b57e3c5e9b80bcdb99804dc7a310147ca
BLAKE2b-256 checksum
How to use checksums
539375998ece06090ddfbdf50c4e3b7a32e15465148997940c5080031f12c948
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.7

Security for opmanager-mcp-server 1.0.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page