
Maximo Enterprise MCP
io.github.MaxisTechnology-DevPublished by GitHub account MaxisTechnology-Devv1.1.0Updated Oct 25, 2026
MCP server for IBM Maximo, by Maxis Technology — assets, work orders, inventory, purchasing, labor.
Overview
Connects an AI assistant to IBM Maximo Asset Management, exposing assets, work orders, inventory, purchasing, labor and compliance data through about 95 read, K
- What you can do
- Query assets, work orders, job plans, service requests, locations and labor, including KPIs, downtime, cost variance and utilization reports. Check inventory stock, low-stock and reorder recommendations, storeroom catalogs and valuation. Review purchasing data: purchase orders, requisitions, vendors and spend analysis. Run reporting and compliance views such as maintenance KPI dashboards, failure Pareto, bad-actor assets, calibrations, permits and certifications expiring, plus Excel and PDF export. Use AI-assisted tools for natural-language-to-OSLC queries, anomaly detection, root-cause suggestions, asset health scores, failure prediction and runbook generation. Inspect schema and admin data
- When to use it
- Useful for maintenance, reliability, planning or EHS teams that already run IBM Maximo and want an assistant to pull asset history, work-order and inventory data, build KPI or compliance reports, or draft shift handovers and runbooks without leaving the chat client.
- Requirements
- Runs locally as a Python package via uvx or pip, or as a hosted HTTP/SSE service. Needs MAXIMO_URL, MAXIMO_HOST and AUTH_MODE, plus Maximo credentials: MAXIMO_USERNAME and MAXIMO_PASSWORD for basic auth, or MAXIMO_API_KEY for API-key auth. Network access to the Maximo instance is required. Hosted mode needs MCP_ACCESS_TOKEN and TLS termination.
Installation
In SourceWeft
- Open Maximo Enterprise MCP in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
Maximo Enterprise MCP
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:
- A stable MCP server for Claude Desktop, Cursor, and other MCP clients.
- A hosted HTTP/SSE mode for remote MCP access.
- A FastAPI tool layer for OpenAI, Gemini, Grok, and custom orchestrators.
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.
Maximo version compatibility
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).
The codebase is defensively designed for cross-version use:
- Multi-candidate OS endpoints (
tools/*.pyconstants likeJP_OS_CANDIDATES,LABOR_OS_CANDIDATES) iteratemx*first thenmxapi*and fall through 404s - Single-condition WHERE + Python post-filter (defensive against the most restrictive build encountered — see
compound_where_drops_connection) +field/-fieldorderBy direction prefix (strict OSLC v2 spec — works on every build)- Graceful
data_unavailable=Trueflag with admin-action note when an OSLC object structure isn't published on the customer's deployment
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.
Quick-start prompts
Once connected to Claude Desktop / Cursor / Code, try:
Responsible Use
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:
- Run hosted HTTP/SSE behind an authenticated gateway. Per-request identity
comes from
MCP_AUTH_MODE=jwt(OIDC) or static + gateway-injectedX-MCP-*headers. Never expose the FastAPI tool API to untrusted callers without an identity solution in front. - TLS at the edge (or in-process via
MCP_SSL_*) is mandatory for any non-stdio deployment. The app does not terminate TLS itself. - Keep all write tools
# DISABLEDin server.py until you have reviewed the RBAC policy and audit posture for your environment. - Stamp
MAXIMO_ENV=dev|staging|prodper deployment so audit records and/healthzmake it obvious which Maximo a container is talking to. - Read SECURITY.md and
PRODUCT_GAPS_BEFORE_DEPLOY.md before
pushing to a public registry; the latter documents the exact controls
required for
https://github.com/mcp-style listings.
Architecture
Installation
Local MCP for Claude Desktop / Claude Code / Cursor
You have two ways to install: uvx (recommended — no manual install) or pip install.
Option A — uvx (recommended)
Install uv once, then point your MCP client at uvx maximo-enterprise-mcp. uvx downloads, caches, and runs the package on demand.
Option B — pip install
Then in the configs below, replace:
with:
Claude Desktop
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.
Claude Code
Add to project-level .mcp.json or global ~/.claude.json:
Run /mcp in Claude Code to verify the connection.
Cursor
Add to ~/.cursor/mcp.json (global) or .cursor/mcp.json (per project):
In Cursor: Settings → MCP → Refresh to load.
Hosted MCP over HTTP/SSE
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:
- MCP SSE endpoint:
http://host:8080/sse - Health endpoint:
http://host:8080/healthz
Example remote MCP config:
FastAPI Tool API
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-tools
Example invocation:
AI Platform Usage
OpenAI
Use GET /v1/providers/openai-tools to retrieve OpenAI-compatible tool definitions, then execute the selected tool via POST /v1/tools/{tool_name}.
Gemini
Use GET /v1/providers/gemini-tools to retrieve Gemini function declarations from the same shared tool registry.
Grok
Use GET /v1/providers/grok-tools. The payload is OpenAI-compatible so the same orchestration pattern works.
Optional Dependencies
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.
Environment Variables
See .env.example for the complete set. The most important variables are:
Docker
Build
Run
Use docker-compose.yml if you want Redis included.
Deployment Guidance
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.
AWS
- Recommended first target: ECS Fargate or App Runner.
- Store secrets in AWS Secrets Manager.
- Required: put ALB or API Gateway in front for TLS and access control.
- Keep Maximo connectivity private when possible.
Azure
- Recommended first target: Azure Container Apps or App Service.
- Store secrets in Key Vault.
- Required: put Application Gateway or Front Door in front for TLS and access control.
Environment Separation
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:
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.
Public Internet
Exposing the raw hosted MCP to the public internet requires ALL of the following — no exceptions:
- bearer or OIDC inbound authentication (
MCP_AUTH_MODE) - TLS at the edge or in-process (the app serves plaintext by default)
- explicit CORS allowlist (
MCP_ALLOWED_ORIGINS) — do NOT use* - rate limiting (
RATE_LIMIT_PER_MINUTE) and a separate edge limiter - audit logging with durable forwarding
- private Maximo connectivity or strict network controls
Development
Run unit tests
Run integration tests
Integration 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
List registered MCP tools
Security Notes
- Do not commit real
.env,.mcp.json, or.cursor/mcp.jsonvalues. - Use example configs from the
*.examplefiles and keep secrets in local-only files or a secret manager. - Hosted mode requires
MCP_ACCESS_TOKEN. - The env-based role model is suitable for local or trusted deployments, not multi-tenant public hosting.
IBM and Maximo are trademarks of International Business Machines Corp., used here for descriptive purposes only. This project is not affiliated with IBM.
Source: README.md at commit 2da4219
Tools
0Version history
1- v1.1.0LatestSep 16, 2026
Score
40% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts
Declare a license in the repository or the registry entry.