IBM Maximo MCP server: assets, work orders, inventory, purchasing, labor, OSLC tools.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste into ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows)
A production-focused integration that brings IBM Maximo Asset Management into AI workflows through the Model Context Protocol.
Built by Maxis Technology as part of Alchemize β a state-of-the-art enterprise data management platform capable of doing in hours what others do in days. Want to know more? Head over to alchemize.io.
This project now exposes:
See CHANGELOG.md for the per-version release history (64 net-new tools across waves 1β9).
The current stable surface is 95 public tools across 21 categories. Every tool ships with a strict Pydantic input model (extra="forbid").
When a customer's Maximo doesn't have a particular vertical's data populated (no oil-and-gas turnarounds, no transportation fleet, no Spatial coordinates, etc.), every tool returns
data_unavailable=Truewith a user-friendly note explaining what's missing and what an admin can do. Never a cryptic 400/404.
The integration suite (64 net-new tools across 8 wave smoke tests) is verified end-to-end against Maximo 7.6.x with the mxapi integration extensions (the API patch pack β mxapi* object structures published).
| Maximo build | Status | Notes |
|---|---|---|
| Maximo 7.6.x with mxapi extensions | β Verified live (8/8 wave smokes pass in ~3.5 minutes) | The configuration we test against |
| Maximo 7.6.x without mxapi extensions | β Should work | Multi-candidate mx* β mxapi* falls back to mx* paths cleanly |
| MAS 8.x (Manage on RHOCP) | β οΈ Should work, not tested | Both mx* and mxapi* published; auth flow may need MCP_AUTH_MODE=jwt for MAS SSO |
| MAS 9.x (Manage on RHOCP) | β οΈ Should work, not tested | mxapi* is primary; same auth caveat |
The codebase is defensively designed for cross-version use:
tools/*.py constants like JP_OS_CANDIDATES, LABOR_OS_CANDIDATES) iterate mx* first then mxapi* and fall through 404scompound_where_drops_connection)+field / -field orderBy direction prefix (strict OSLC v2 spec β works on every build)data_unavailable=True flag with admin-action note when an OSLC object structure isn't published on the customer's deployment| Category | Tools | What it gives you |
|---|---|---|
| Assets | 9 | Lifecycle, history, downtime / MTTR / MTBF, search, criticality matrix, warranty buckets, failure-class hierarchy, meter readings |
| Work orders | 8 | List / get / KPIs, task breakdown, planned-vs-actual variance, cost breakdown, schedule calendar, "my assigned WOs" |
| Job plans | 3 | Catalog list, full plan with embedded tasks/labor/materials/tools, cost estimate from job plan |
| Service requests | 2 | List + get β front-door intake before WOs |
| Inventory | 8 | Stock check, low-stock list, reorder recs, item master, storeroom catalog, total valuation, critical-spares risk |
| Purchasing | 6 | POs (list + get), purchase requisitions, vendors (list + performance), spend analysis by vendor / status / worktype |
| Labor | 5 | List labor / crews / crafts, utilization, available-technician finder (least-busy first) |
| Locations | 3 | List + get + hierarchy tree |
| Reporting | 6 | Maintenance KPI dashboard, failure Pareto, bad-actor assets, Excel + PDF export, Carbon HTML table |
| AI intelligence | 4 | NL-to-OSLC, anomaly detection (>2Ο), root-cause suggestion, asset health score |
| AI moat (Wave 8) | 6 | WO summary, auto-classify failure, chat with asset, PM optimization, predict failure window, runbook generation β every tool LLM-enhanced with statistical/rule-based fallback |
| Spatial / GIS (Wave 9) | 2 | Find assets near a lat/lon, optimised technician routing β graceful "Spatial not installed" fallback when coordinates aren't populated |
| Compliance & EHS | 6 | Calibrations / inspections / permits / certifications-expiring / incidents / compliance dashboard |
| Pharma | 3 | Calibration audit trail (FDA), cleanroom assets, GxP risk score |
| Oil & Gas | 3 | Turnaround status, pressure-vessel inspections, lifting register |
| Manufacturing | 3 | OEE (Availability), production-line status, changeover (SMED) WOs |
| Utilities | 3 | Outage impact analysis, grid-zone assets, SAIDI/SAIFI proxies |
| Healthcare | 3 | Medical-device PM due, device lifecycle (NEW/STABLE/AGING/EOL), JC Environment of Care |
| Transportation | 3 | Fleet readiness %, mileage-based PM due, fuel consumption trend with spike detection |
| Schema / Admin | 8 | Object-structure discovery, schema details, OSLC query validation, code generation, users, audit log, event subscriptions |
| Core | 1 | health_check β connectivity probe + tool count |
Every read tool returns a structured envelope (success / data / metadata). Tools that need data their Maximo build doesn't expose surface a data_unavailable: true flag with an admin-action note rather than failing silently. Write tools ship # DISABLED by default.
Once connected to Claude Desktop / Cursor / Code, try:
This server speaks to a live IBM Maximo instance and exposes its data β and, when explicitly enabled, its mutating operations β to a language model. Before deploying:
MCP_AUTH_MODE=jwt (OIDC) or static + gateway-injected
X-MCP-* headers. Never expose the FastAPI tool API to untrusted callers
without an identity solution in front.MCP_SSL_*) is mandatory for any
non-stdio deployment. The app does not terminate TLS itself.# DISABLED in server.py until you have
reviewed the RBAC policy and audit posture for your environment.MAXIMO_ENV=dev|staging|prod per deployment so audit records and
/healthz make it obvious which Maximo a container is talking to.https://github.com/mcp-style listings.You have two ways to install: uvx (recommended β no manual install) or pip install.
uvx (recommended)Install uv once, then point your MCP client at uvx maximo-enterprise-mcp. uvx downloads, caches, and runs the package on demand.
pip installThen in the configs below, replace:
with:
Edit %APPDATA%\Claude\claude_desktop_config.json (Windows) or ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):
Restart Claude Desktop. The hammer icon appears once tools load.
Add to project-level .mcp.json or global ~/.claude.json:
Run /mcp in Claude Code to verify the connection.
Add to ~/.cursor/mcp.json (global) or .cursor/mcp.json (per project):
In Cursor: Settings β MCP β Refresh to load.
Hosted mode is intended for trusted network or gateway-protected deployments. It now fails closed unless MCP_ACCESS_TOKEN is set.
Remote MCP clients should connect to:
http://host:8080/ssehttp://host:8080/healthzExample remote MCP config:
Hosted HTTP mode also exposes a tool API for non-MCP platforms:
GET /healthzGET /v1/toolsPOST /v1/tools/{tool_name}GET /v1/providers/openai-toolsGET /v1/providers/gemini-toolsGET /v1/providers/grok-toolsExample invocation:
Use GET /v1/providers/openai-tools to retrieve OpenAI-compatible tool definitions, then execute the selected tool via POST /v1/tools/{tool_name}.
Use GET /v1/providers/gemini-tools to retrieve Gemini function declarations from the same shared tool registry.
Use GET /v1/providers/grok-tools. The payload is OpenAI-compatible so the same orchestration pattern works.
Core installation uses requirements.txt.
Optional extras are defined in pyproject.toml:
pip install ".[ai]" for OpenAI, ChromaDB, and sentence-transformers.pip install ".[exports]" for Excel and PDF export dependencies.pip install ".[dev]" for local test and lint tooling.See .env.example for the complete set. The most important variables are:
| Variable | Required | Description |
|---|---|---|
MAXIMO_URL | Yes | Full Maximo OSLC base URL |
MAXIMO_HOST | Yes | Maximo host root URL |
AUTH_MODE | Yes | basic, apikey, or oauth |
MAXIMO_USERNAME / MAXIMO_PASSWORD | Basic auth | Maximo credentials |
MCP_ACCESS_TOKEN | Hosted HTTP | Required bearer token for hosted MCP/API mode |
CURRENT_USER_ROLE | Local only | Session role for local or trusted deployments |
REDIS_URL | No | Redis cache connection string |
VPN_SAFE_MODE | No | Enables safer default payload sizes |
DEFAULT_PAGE_SIZE | No | Default page size when safe mode is enabled |
Use docker-compose.yml if you want Redis included.
The server does NOT terminate TLS itself. Every non-stdio deployment
MUST terminate TLS either at the edge or in-process via
MCP_SSL_CERTFILE / MCP_SSL_KEYFILE. See SECURITY.md.
Run one container image, three deployments, three secret stores. Stamp
MAXIMO_ENV=dev|staging|prod per deployment β the value lands in every
audit record and on /healthz, so an operator can confirm at a glance
which Maximo a given container is pointed at.
Recommended pattern:
| Deployment | MAXIMO_ENV | Maximo target | Token scope |
|---|---|---|---|
| dev | dev | dev Maximo | dev MCP_ACCESS_TOKEN / OIDC tenant |
| staging | staging | staging Maximo | staging token / OIDC tenant |
| prod | prod | prod Maximo | prod token / OIDC tenant |
Never reuse a token across environments β a leaked dev token must not unlock prod, and a misrouted dev container must not write to prod data.
Exposing the raw hosted MCP to the public internet requires ALL of the following β no exceptions:
MCP_AUTH_MODE)MCP_ALLOWED_ORIGINS) β do NOT use *RATE_LIMIT_PER_MINUTE) and a separate edge limiterIntegration tests hit a real Maximo instance configured in .env. Two suites:
tests/integration_test_tools.py β tool-by-tool smoke against a single live Maximotests/integration/test_smoke_wave[1-4].py β per-wave smoke runs that gate every public tool added in waves 1β4/6.env, .mcp.json, or .cursor/mcp.json values.*.example files and keep secrets in local-only files or a secret manager.MCP_ACCESS_TOKEN.IBM and Maximo are trademarks of International Business Machines Corp., used here for descriptive purposes only. This project is not affiliated with IBM.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/maximo-enterprise-mcp)<a href="https://allmcps.com/mcp/maximo-enterprise-mcp"><img src="https://allmcps.com/api/badge/maximo-enterprise-mcp?style=directory" alt="Maximo Enterprise MCP on AllMCPs" /></a>