Skip to main content
Glama
ibm-self-serve-assets

maximo-jobplan

Official
README.md
# Maximo Job Plan Management via MCP

This project uses the Model Context Protocol (MCP) to interact with IBM Maximo for job plan management.

## Overview

The Maximo Job Plan MCP Server provides a seamless interface for AI assistants to interact with IBM Maximo's job plan management system. It enables natural language interactions for creating, querying, updating, and deleting job plans.

## Features

- **Import Job Plans**: Bulk import job plans from CSV files
- **List Job Plans**: Query and filter job plans with OSLC queries
- **Get Job Plan Details**: Retrieve detailed information about specific job plans
- **Delete Job Plans**: Remove job plans from the system
- **Natural Language Interface**: Use conversational commands through AI assistants

## Available MCP Tools

The `maximo-jobplan` MCP server provides 4 tools for managing job plans:

### 1. import_jobplans
Import job plans from CSV data into Maximo.

**Example usage:**
```
"Import job plans from jobplanMaximo.csv"
```

**CSV Format:**
```csv
JPNUM,DESCRIPTION,JPDURATION,STATUS,JOBTYPE,PLUSCJPREVNUM
HVAC-PM-001,Quarterly HVAC System Inspection,4.0,ACTIVE,PM,0
```

### 2. list_jobplans
List all job plans from Maximo with optional filtering.

**Example usage:**
```
"List all job plans"
"Show me HVAC job plans"
```

### 3. get_jobplan
Get detailed information about a specific job plan.

**Example usage:**
```
"Get details of job plan HVAC-PM-001"
"Show me the BREAKINSP job plan"
```

### 4. delete_jobplan
Delete a job plan by number.

**Example usage:**
```
"Delete job plan TEST-001"
```

## Installation

### Prerequisites

- Node.js 18 or higher
- npm or yarn
- Access to IBM Maximo instance
- Maximo API key

### Setup Steps

1. **Clone the repository**
   ```bash
   git clone <repository-url>
   cd maximo-jobplan-mcp
   ```

2. **Install dependencies**
   ```bash
   npm install
   ```

3. **Build the project**
   ```bash
   npm run build
   ```

4. **Configure environment variables**
   
   Set the following environment variables:
   - `MAXIMO_BASE_URL`: Your Maximo instance URL (e.g., `https://your-maximo-instance.com`)
   - `MAXIMO_API_KEY`: Your Maximo API key

5. **Configure MCP Client**

   For Bob/Claude Desktop, add to your MCP settings:
   ```json
   {
     "mcpServers": {
       "maximo-jobplan": {
         "command": "node",
         "args": ["C:/path/to/maximo-jobplan-server/build/index.js"],
         "env": {
           "MAXIMO_BASE_URL": "https://your-maximo-instance.com",
           "MAXIMO_API_KEY": "your-api-key-here"
         }
       }
     }
   }
   ```

## Project Structure

```
maximo-jobplan-mcp/
├── src/
│   └── index.ts          # Main MCP server implementation
├── build/                # Compiled JavaScript output
├── docs/                 # Documentation files
│   ├── MCP_SETUP_GUIDE.md
│   ├── QUICK_START.md
│   └── README_MAXIMO_CONNECTION.md
├── examples/
│   └── jobplanMaximo.csv # Sample job plans
├── package.json
├── tsconfig.json
├── .gitignore
└── README.md
```

## Usage Examples

### Using with AI Assistants

Simply use natural language commands:

- "List all job plans in Maximo"
- "Show me details of HVAC-PM-001"
- "Import the job plans from the CSV file"
- "Get all PUMP job plans"
- "Delete job plan TEST-001"

### Programmatic Usage

```typescript
// The MCP server handles all interactions through the protocol
// No direct API calls needed when using with MCP clients
```

## Configuration

### Maximo Connection

The server connects to Maximo using:
- **Base URL**: Configured via `MAXIMO_BASE_URL` environment variable
- **Authentication**: API key via `MAXIMO_API_KEY` environment variable
- **API Endpoint**: `/maximo/api/os/MXAPIJOBPLAN`

### CSV Import Format

Job plans CSV must include these columns:
- `JPNUM`: Job plan number (max 12 characters)
- `DESCRIPTION`: Job plan description
- `JPDURATION`: Duration in hours
- `STATUS`: Status (e.g., ACTIVE, INACTIVE)
- `JOBTYPE`: Job type (e.g., PM, CM)
- `PLUSCJPREVNUM`: Revision number

## Development

### Build Commands

```bash
# Build the project
npm run build

# Watch mode for development
npm run watch

# Prepare for distribution
npm run prepare
```

### Testing

Test the MCP server connection:
```bash
node build/index.js
```

## Troubleshooting

### Connection Issues

1. **Verify environment variables** are set correctly
2. **Check Maximo URL** is accessible
3. **Validate API key** has proper permissions
4. **Review SSL certificates** (development mode disables SSL verification)

### Import Failures

1. **Check CSV format** matches required columns
2. **Verify job plan numbers** are 12 characters or less
3. **Ensure required fields** are populated
4. **Check for duplicate** job plan numbers

## Security Considerations

⚠️ **Important Security Notes**:

1. **SSL Verification**: Currently disabled for development. Enable for production:
   ```typescript
   httpsAgent: new https.Agent({
     rejectUnauthorized: true  // Enable SSL verification
   })
   ```

2. **API Key Storage**: Store API keys securely using:
   - Environment variables
   - Secret management systems
   - Encrypted configuration files

3. **Access Control**: Ensure only authorized users can access the MCP server


## License

MIT License - See LICENSE file for details

TDQS

A3.7/5.0

Scored across 4 tools

Disambiguation5/5

Each tool targets a distinct operation: delete, retrieve single, bulk import, and list. No overlap or ambiguity.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with underscores (delete_jobplan, get_jobplan, import_jobplans, list_jobplans).

Tool Count5/5

With 4 tools covering basic CRUD and listing, the count is well-scoped for a job plan management server.

Completeness3/5

The set covers create (via import), read, list, and delete, but lacks a dedicated update tool. Import may handle updates, but this is not explicit.

Maintenance

ActivityInactive
ResponsivenessNo issues