MCP Hub
Back to servers

JPI MCP Server

A comprehensive MCP server for integration with Just Plan It (JPI), providing 69 tools for full CRUD and batch operations across jobs, tasks, resources, and scheduling templates.

Tools
69
Updated
Dec 13, 2025

JPI MCP Server

Model Context Protocol (MCP) server for Just Plan It (JPI) API integration. This server enables AI assistants to interact with the JPI job scheduling and resource management system.

Features

  • 69 MCP Tools covering all JPI API endpoints
  • Full CRUD operations for all JPI entities
  • Batch operations for efficient bulk updates
  • Cross-job task operations
  • Type-safe TypeScript implementation
  • Comprehensive error handling

Quick Start

Prerequisites

Claude Code CLI

claude mcp add jpi \
  --transport stdio \
  --env JPI_API_TOKEN=your-api-token-here \
  --scope user \
  -- npx -y jpi-mcp

Claude Desktop

Add to your Claude Desktop configuration file:

{
  "mcpServers": {
    "jpi": {
      "command": "npx",
      "args": ["-y", "jpi-mcp"],
      "env": {
        "JPI_API_TOKEN": "your-api-token-here"
      }
    }
  }
}

Direct CLI Usage

For other CLI tools or direct shell usage:

Unix/macOS/Linux:

JPI_API_TOKEN=your-token npx -y jpi-mcp

Windows PowerShell:

$env:JPI_API_TOKEN="your-token"; npx -y jpi-mcp

Windows CMD:

set JPI_API_TOKEN=your-token && npx -y jpi-mcp

Environment Variables

VariableRequiredDefaultDescription
JPI_API_TOKENYes-Your JPI API token
JPI_BASE_URLNohttps://api.just-plan-it.comJPI API base URL

Architecture

jpi-mcp/
├── src/
│   ├── index.ts          # MCP server setup, 69 tool definitions, request handlers
│   ├── client.ts         # JpiClient class - HTTP client for JPI API v1
│   └── types/            # TypeScript types matching JPI API schemas
│       ├── index.ts      # Re-exports all types
│       ├── enums.ts      # OrderStatus, Strategy, TaskStatus, EventType, etc.
│       ├── schemas.ts    # Common schemas (Identifier, HyperLink, ResourceGroupConstraint)
│       ├── jobs.ts       # Job, Task, JobComponentReference types
│       ├── components.ts # Component, ComponentTask types
│       ├── templates.ts  # JobTemplate, TemplateTask, TemplateComponentReference types
│       ├── resources.ts  # Resource, ResourceGroup, ResourceCategory types
│       ├── settings.ts   # Application settings types
│       └── events.ts     # JPI event/change log types
└── package.json

Key Concepts

Jobs & Tasks

  • Job: A production order or work order containing one or more tasks
  • Task: A single operation within a job (e.g., cutting, welding, painting)
  • Predecessors: Tasks that must complete before a task can start
  • TaskConnections: Linked tasks for scheduling coordination

Components & References

  • Component: A reusable template of tasks that can be referenced by jobs
  • JCR (Job Component Reference): Links a component to a job, creating tasks automatically
  • TCR (Template Component Reference): Links a component to a job template

Resource Hierarchy

Resource Categories
    └── Resource Groups
            └── Resources (machines, workers, etc.)

Time Units

IMPORTANT: All time fields in the JPI API are in SECONDS, not minutes.

FieldUnitExample
ProductionTimePerUnitseconds3600 = 1 hour
SetupTimeseconds900 = 15 minutes
TeardownTimeseconds600 = 10 minutes
TransferTimeseconds300 = 5 minutes

Field Naming Convention

All API fields use PascalCase to match the JPI API exactly (e.g., DueDate, TaskNo, ResourceGroupConstraints).

Available Tools (69 Total)

Helper (1 tool)

ToolDescription
jpi_api_infoGet API information and available endpoints

Components (9 tools)

ToolDescription
jpi_list_componentsList all components
jpi_create_componentCreate a new component
jpi_get_componentGet a component by GUID
jpi_update_componentUpdate a component
jpi_delete_componentDelete a component
jpi_get_component_taskGet a component task
jpi_add_component_taskAdd a task to a component
jpi_update_component_taskUpdate a component task
jpi_delete_component_taskDelete a component task

Jobs (27 tools)

ToolDescription
jpi_list_jobsList all jobs
jpi_list_jobs_summaryList jobs without task details (~80% smaller)
jpi_list_jobs_at_riskList jobs at risk of missing due dates
jpi_create_jobCreate a new job with tasks
jpi_get_jobGet a job by GUID
jpi_update_jobUpdate a job
jpi_delete_jobDelete a job
jpi_get_taskGet a job task
jpi_add_taskAdd a task to a job
jpi_update_taskUpdate a job task
jpi_delete_taskDelete a job task
jpi_get_jcrGet a Job Component Reference
jpi_add_jcrAdd a JCR to a job
jpi_update_jcrUpdate a JCR
jpi_delete_jcrDelete a JCR
jpi_create_jobs_batchCreate multiple jobs
jpi_update_jobs_batchUpdate multiple jobs
jpi_delete_jobs_batchDelete multiple jobs
jpi_add_tasks_batchAdd multiple tasks to a job
jpi_update_tasks_batchUpdate multiple tasks
jpi_delete_tasks_batchDelete multiple tasks
jpi_add_jcrs_batchAdd multiple JCRs
jpi_update_jcrs_batchUpdate multiple JCRs
jpi_delete_jcrs_batchDelete multiple JCRs
jpi_create_tasks_cross_jobsCreate tasks across multiple jobs
jpi_update_tasks_cross_jobsUpdate tasks across multiple jobs
jpi_delete_tasks_cross_jobsDelete tasks across multiple jobs

Job Templates (13 tools)

ToolDescription
jpi_list_templatesList all templates
jpi_create_templateCreate a new template
jpi_get_templateGet a template by GUID
jpi_update_templateUpdate a template
jpi_delete_templateDelete a template
jpi_get_template_taskGet a template task
jpi_add_template_taskAdd a task to a template
jpi_update_template_taskUpdate a template task
jpi_delete_template_taskDelete a template task
jpi_get_tcrGet a Template Component Reference
jpi_add_tcrAdd a TCR to a template
jpi_update_tcrUpdate a TCR
jpi_delete_tcrDelete a TCR

JPI Events (2 tools)

ToolDescription
jpi_get_eventsGet events (change log) after a timestamp
jpi_get_events_filteredGet events filtered by type

Resource Categories (5 tools)

ToolDescription
jpi_list_resource_categoriesList all categories
jpi_create_resource_categoryCreate a category
jpi_get_resource_categoryGet a category
jpi_update_resource_categoryUpdate a category
jpi_delete_resource_categoryDelete a category

Resource Groups (5 tools)

ToolDescription
jpi_list_resource_groupsList all groups
jpi_create_resource_groupCreate a group
jpi_get_resource_groupGet a group
jpi_update_resource_groupUpdate a group
jpi_delete_resource_groupDelete a group

Resources (5 tools)

ToolDescription
jpi_list_resourcesList all resources
jpi_create_resourceCreate a resource
jpi_get_resourceGet a resource
jpi_update_resourceUpdate a resource
jpi_delete_resourceDelete a resource

Settings (2 tools)

ToolDescription
jpi_get_settingsGet application settings
jpi_update_settingsUpdate settings

Usage Examples

Create a Job with Tasks

{
  "Name": "Production Order 001",
  "JobNo": "PO-001",
  "DueDate": "2024-12-31T17:00:00",
  "ReleaseDate": "2024-12-01T08:00:00",
  "Strategy": "Asap",
  "OrderStatus": "Released",
  "Customer": "ACME Corp",
  "Quantity": 100,
  "Tasks": [
    {
      "TaskNo": "T010",
      "Name": "Laser Cutting",
      "ProductionTimePerUnit": 60,
      "SetupTime": 900,
      "ResourceGroupConstraints": [
        {
          "ResourceGroup": "resource-group-guid-here"
        }
      ]
    },
    {
      "TaskNo": "T020",
      "Name": "Welding",
      "ProductionTimePerUnit": 120,
      "PredecessorTaskNos": ["T010"],
      "ResourceGroupConstraints": [
        {
          "ResourceGroup": "welding-group-guid"
        }
      ]
    }
  ]
}

Update Task Status

{
  "jobGuid": "job-guid-here",
  "taskGuid": "task-guid-here",
  "TaskStatus": "Started"
}

Batch Create Jobs

{
  "jobs": [
    { "Name": "Job 1", "Tasks": [...] },
    { "Name": "Job 2", "Tasks": [...] },
    { "Name": "Job 3", "Tasks": [...] }
  ]
}

Enums & Types

OrderStatus

ValueDescription
QuotedJob is quoted but not ordered
OrderedJob is ordered but not released
ReleasedJob is released for production
StandbyJob is on standby

Strategy

ValueDescription
AsapSchedule as soon as possible
JitJust-in-time scheduling
ASAP_PLUSASAP with buffer
JIT_PLUSJIT with buffer

TaskStatus

ValueDescription
PlannedTask is planned
StartedTask has started
FinishedTask is complete
NoneNo status
StandbyTask is on standby

Error Handling

All tools return structured error responses:

{
  "error": true,
  "status": 400,
  "statusText": "Bad Request",
  "message": "JPI API Error: 400 Bad Request",
  "body": {
    "details": "Validation failed for field 'Name'"
  }
}

Development

Build

npm run build

Watch Mode

npm run dev

Run Locally

JPI_API_TOKEN=your-token npm start

From Source

git clone https://github.com/anthropics/jpi-mcp.git
cd jpi-mcp
npm install
npm run build
npm start

API Reference

This MCP server wraps the JPI REST API v1. For detailed API documentation:

License

MIT

Contributing

Contributions are welcome! Please open an issue or submit a pull request.

Reviews

No reviews yet

Sign in to write a review