Maximo Enterprise MCP

io.github.MaxisTechnology-Dev由 GitHub 帳號 MaxisTechnology-Dev 發布v1.1.0更新於 Oct 25, 2026

MCP server for IBM Maximo, by Maxis Technology — assets, work orders, inventory, purchasing, labor.

已驗證STDIO僅桌面資料與分析商業與電商

概覽

AI 產生的概覽

將 AI 助理連接到 IBM Maximo 資產管理,透過約 95 個工具提供資產、工單、庫存、採購、人力與合規資料的查詢與報表能力。

可以做什麼
查詢資產、工單、作業計畫、服務請求、位置與人力,包括 KPI、停機、成本差異與利用率報告。檢查庫存水位、低庫存與補貨建議、庫房目錄與庫存估值。檢視採購資料:採購訂單、請購單、供應商與支出分析。執行報表與合規檢視,如維護 KPI 儀表板、故障柏拉圖、問題資產、校正、許可與即將到期的認證,並匯出 Excel 與 PDF。使用 AI 輔助工具進行自然語言轉 OSLC 查詢、異常偵測、根因建議、資產健康評分、故障預測與執行手冊產生。檢視結構與管理資料
適用情境
適合已在使用 IBM Maximo 的維護、可靠性、規劃或 EHS 團隊,希望助理不必離開聊天用戶端就能調閱資產歷史、工單與庫存資料、產生 KPI 或合規報表,或草擬交接班摘要與執行手冊。
執行需求
以 Python 套件形式透過 uvx 或 pip 在本機執行,也可作為託管 HTTP/SSE 服務執行。需要 MAXIMO_URL、MAXIMO_HOST 與 AUTH_MODE,以及 Maximo 憑證:基本驗證使用 MAXIMO_USERNAME 與 MAXIMO_PASSWORD,API 金鑰驗證使用 MAXIMO_API_KEY。需要能連線至 Maximo 執行個體的網路。託管模式另需 MCP_ACCESS_TOKEN 並終止 TLS。
安裝前請注意
此伺服器會連線至實際運作的 Maximo 執行個體並暴露其資料,在明確啟用時還包含寫入操作。寫入工具預設為停用,在檢視 RBAC 與稽核態勢前應保持停用。MAXIMO_PASSWORD 與 MAXIMO_API_KEY 等憑證透過環境變數傳入,請勿寫入已提交的設定檔。託管模式預設以明文提供服務,必須終止 TLS 並置於驗證之後;切勿在不同環境間重複使用權杖。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Maximo Enterprise MCP,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

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=True with 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).

Maximo buildStatusNotes
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 workMulti-candidate mx* → mxapi* falls back to mx* paths cleanly
MAS 8.x (Manage on RHOCP)⚠️ Should work, not testedBoth mx* and mxapi* published; auth flow may need MCP_AUTH_MODE=jwt for MAS SSO
MAS 9.x (Manage on RHOCP)⚠️ Should work, not testedmxapi* is primary; same auth caveat

The codebase is defensively designed for cross-version use:

  • Multi-candidate OS endpoints (tools/*.py constants like JP_OS_CANDIDATES, LABOR_OS_CANDIDATES) iterate mx* first then mxapi* and fall through 404s
  • Single-condition WHERE + Python post-filter (defensive against the most restrictive build encountered — see compound_where_drops_connection)
  • +field / -field orderBy direction prefix (strict OSLC v2 spec — works on every build)
  • Graceful data_unavailable=True flag with admin-action note when an OSLC object structure isn't published on the customer's deployment
CategoryToolsWhat it gives you
Assets9Lifecycle, history, downtime / MTTR / MTBF, search, criticality matrix, warranty buckets, failure-class hierarchy, meter readings
Work orders8List / get / KPIs, task breakdown, planned-vs-actual variance, cost breakdown, schedule calendar, "my assigned WOs"
Job plans3Catalog list, full plan with embedded tasks/labor/materials/tools, cost estimate from job plan
Service requests2List + get — front-door intake before WOs
Inventory8Stock check, low-stock list, reorder recs, item master, storeroom catalog, total valuation, critical-spares risk
Purchasing6POs (list + get), purchase requisitions, vendors (list + performance), spend analysis by vendor / status / worktype
Labor5List labor / crews / crafts, utilization, available-technician finder (least-busy first)
Locations3List + get + hierarchy tree
Reporting6Maintenance KPI dashboard, failure Pareto, bad-actor assets, Excel + PDF export, Carbon HTML table
AI intelligence4NL-to-OSLC, anomaly detection (>2σ), root-cause suggestion, asset health score
AI moat (Wave 8)6WO 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)2Find assets near a lat/lon, optimised technician routing — graceful "Spatial not installed" fallback when coordinates aren't populated
Compliance & EHS6Calibrations / inspections / permits / certifications-expiring / incidents / compliance dashboard
Pharma3Calibration audit trail (FDA), cleanroom assets, GxP risk score
Oil & Gas3Turnaround status, pressure-vessel inspections, lifting register
Manufacturing3OEE (Availability), production-line status, changeover (SMED) WOs
Utilities3Outage impact analysis, grid-zone assets, SAIDI/SAIFI proxies
Healthcare3Medical-device PM due, device lifecycle (NEW/STABLE/AGING/EOL), JC Environment of Care
Transportation3Fleet readiness %, mileage-based PM due, fuel consumption trend with spike detection
Schema / Admin8Object-structure discovery, schema details, OSLC query validation, code generation, users, audit log, event subscriptions
Core1health_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.

Quick-start prompts

Once connected to Claude Desktop / Cursor / Code, try:

Use maximo mcp. Asset 1001 isn't behaving — pull its details, recent work-orderhistory, and meter readings for the last 90 days.
Use maximo mcp. Run the compliance dashboard for site BEDFORD, then list the top5 bad-actor assets and any calibrations overdue right now.
Use maximo mcp. I'm new to BEDFORD as planner — show me what job plans we have,estimate cost for one, and find me an available welder.
Use maximo mcp. QBR slides due Friday. Export work orders to Excel + assetreport to PDF, plus the maintenance KPI dashboard for the cover slide.
Use maximo mcp. Quarterly EHS review — run compliance dashboard, list calibrationsdue in 90 days, and certifications expiring in 60.
Use maximo mcp. Pump 1001 has been intermittent. Predict its next failure window,recommend whether we should tune its PM frequency, and generate a runbook for thelast "grinding noise" complaint based on what we did before.
Use maximo mcp. Summarize WO 6540 for tomorrow's shift handover, then auto-classifythe failure code from this complaint: "intermittent grinding noise during operation".
Use maximo mcp. Chat with asset 1001: when did it last fail, what was the root cause,and how often does it break?

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-injected X-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 # DISABLED in server.py until you have reviewed the RBAC policy and audit posture for your environment.
  • Stamp MAXIMO_ENV=dev|staging|prod per deployment so audit records and /healthz make 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

text
Local MCP clients        -> stdio MCP server -> Maximo OSLCRemote MCP clients       -> HTTP gateway -> hosted MCP SSE -> Maximo OSLCOpenAI / Gemini / Grok   -> FastAPI tool API -> shared executor -> Maximo OSLC

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
bash
pip install maximo-enterprise-mcp

Then in the configs below, replace:

json
"command": "uvx","args": ["maximo-enterprise-mcp"]

with:

json
"command": "maximo-enterprise-mcp","args": []
Claude Desktop

Edit %APPDATA%\Claude\claude_desktop_config.json (Windows) or ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):

json
{  "mcpServers": {    "maximo": {      "command": "uvx",      "args": ["maximo-enterprise-mcp"],      "env": {        "MAXIMO_URL": "https://your-maximo-host.com/maximo/oslc",        "MAXIMO_HOST": "https://your-maximo-host.com",        "AUTH_MODE": "basic",        "MAXIMO_USERNAME": "your-username",        "MAXIMO_PASSWORD": "your-password",        "CURRENT_USER_ROLE": "readonly"      }    }  }}

Restart Claude Desktop. The hammer icon appears once tools load.

Claude Code

Add to project-level .mcp.json or global ~/.claude.json:

json
{  "mcpServers": {    "maximo": {      "command": "uvx",      "args": ["maximo-enterprise-mcp"],      "env": {        "MAXIMO_URL": "https://your-maximo-host.com/maximo/oslc",        "MAXIMO_HOST": "https://your-maximo-host.com",        "AUTH_MODE": "basic",        "MAXIMO_USERNAME": "your-username",        "MAXIMO_PASSWORD": "your-password",        "CURRENT_USER_ROLE": "readonly"      }    }  }}

Run /mcp in Claude Code to verify the connection.

Cursor

Add to ~/.cursor/mcp.json (global) or .cursor/mcp.json (per project):

json
{  "mcpServers": {    "maximo": {      "command": "uvx",      "args": ["maximo-enterprise-mcp"],      "env": {        "MAXIMO_URL": "https://your-maximo-host.com/maximo/oslc",        "MAXIMO_HOST": "https://your-maximo-host.com",        "AUTH_MODE": "basic",        "MAXIMO_USERNAME": "your-username",        "MAXIMO_PASSWORD": "your-password",        "CURRENT_USER_ROLE": "readonly"      }    }  }}

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.

bash
python server.py --http --host 0.0.0.0 --port 8080

Remote MCP clients should connect to:

  • MCP SSE endpoint: http://host:8080/sse
  • Health endpoint: http://host:8080/healthz

Example remote MCP config:

json
{  "mcpServers": {    "maximo": {      "type": "sse",      "url": "http://localhost:8080/sse",      "headers": {        "Authorization": "Bearer <your MCP_ACCESS_TOKEN>"      }    }  }}

FastAPI Tool API

Hosted HTTP mode also exposes a tool API for non-MCP platforms:

  • GET /healthz
  • GET /v1/tools
  • POST /v1/tools/{tool_name}
  • GET /v1/providers/openai-tools
  • GET /v1/providers/gemini-tools
  • GET /v1/providers/grok-tools

Example invocation:

bash
curl -X POST http://localhost:8080/v1/tools/list_assets \  -H "Authorization: Bearer $MCP_ACCESS_TOKEN" \  -H "Content-Type: application/json" \  -d "{\"site_id\":\"BEDFORD\",\"page_size\":10}"

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:

VariableRequiredDescription
MAXIMO_URLYesFull Maximo OSLC base URL
MAXIMO_HOSTYesMaximo host root URL
AUTH_MODEYesbasic, apikey, or oauth
MAXIMO_USERNAME / MAXIMO_PASSWORDBasic authMaximo credentials
MCP_ACCESS_TOKENHosted HTTPRequired bearer token for hosted MCP/API mode
CURRENT_USER_ROLELocal onlySession role for local or trusted deployments
REDIS_URLNoRedis cache connection string
VPN_SAFE_MODENoEnables safer default payload sizes
DEFAULT_PAGE_SIZENoDefault page size when safe mode is enabled

Docker

Build

bash
docker build -t maximo-enterprise-mcp .

Run

bash
docker run -d ^  -p 8080:8080 ^  -e TRANSPORT_MODE=http ^  -e MCP_ACCESS_TOKEN=change-me ^  -e MAXIMO_URL=https://your-maximo-host.example.com/maximo/oslc ^  -e MAXIMO_HOST=https://your-maximo-host.example.com ^  -e AUTH_MODE=basic ^  -e MAXIMO_USERNAME=your-maximo-username ^  -e MAXIMO_PASSWORD=your-maximo-password ^  maximo-enterprise-mcp

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:

DeploymentMAXIMO_ENVMaximo targetToken scope
devdevdev Maximodev MCP_ACCESS_TOKEN / OIDC tenant
stagingstagingstaging Maximostaging token / OIDC tenant
prodprodprod Maximoprod 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.

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

bash
pytest -m "not integration"

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 Maximo
  • tests/integration/test_smoke_wave[1-4].py — per-wave smoke runs that gate every public tool added in waves 1–4/6
bash
# Run every integration test (skipped automatically if MAXIMO_URL is unset)pytest tests/integration -m integration -v
# Run a single wave's smokepytest tests/integration/test_smoke_wave2.py -m integration -v
# Or run a wave standalone for ad-hoc debuggingpython tests/integration/test_smoke_wave2.py

List registered MCP tools

bash
python server.py --test

Security Notes

  • Do not commit real .env, .mcp.json, or .cursor/mcp.json values.
  • Use example configs from the *.example files 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.

來源:README.md,提交 2da4219

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v1.1.0最新Sep 16, 2026

評分

已滿足適用檢查項的 40%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

    請在儲存庫或註冊中心條目中宣告授權條款。