JPI MCP Server

JPI MCP Server

Enables AI assistants to interact with the Just Plan It (JPI) job scheduling and resource management system through 69 MCP tools covering full CRUD operations for jobs, tasks, templates, components, and resources.

Category
Visit Server

README

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

Variable Required Default Description
JPI_API_TOKEN Yes - Your JPI API token
JPI_BASE_URL No https://api.just-plan-it.com JPI 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.

Field Unit Example
ProductionTimePerUnit seconds 3600 = 1 hour
SetupTime seconds 900 = 15 minutes
TeardownTime seconds 600 = 10 minutes
TransferTime seconds 300 = 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)

Tool Description
jpi_api_info Get API information and available endpoints

Components (9 tools)

Tool Description
jpi_list_components List all components
jpi_create_component Create a new component
jpi_get_component Get a component by GUID
jpi_update_component Update a component
jpi_delete_component Delete a component
jpi_get_component_task Get a component task
jpi_add_component_task Add a task to a component
jpi_update_component_task Update a component task
jpi_delete_component_task Delete a component task

Jobs (27 tools)

Tool Description
jpi_list_jobs List all jobs
jpi_list_jobs_summary List jobs without task details (~80% smaller)
jpi_list_jobs_at_risk List jobs at risk of missing due dates
jpi_create_job Create a new job with tasks
jpi_get_job Get a job by GUID
jpi_update_job Update a job
jpi_delete_job Delete a job
jpi_get_task Get a job task
jpi_add_task Add a task to a job
jpi_update_task Update a job task
jpi_delete_task Delete a job task
jpi_get_jcr Get a Job Component Reference
jpi_add_jcr Add a JCR to a job
jpi_update_jcr Update a JCR
jpi_delete_jcr Delete a JCR
jpi_create_jobs_batch Create multiple jobs
jpi_update_jobs_batch Update multiple jobs
jpi_delete_jobs_batch Delete multiple jobs
jpi_add_tasks_batch Add multiple tasks to a job
jpi_update_tasks_batch Update multiple tasks
jpi_delete_tasks_batch Delete multiple tasks
jpi_add_jcrs_batch Add multiple JCRs
jpi_update_jcrs_batch Update multiple JCRs
jpi_delete_jcrs_batch Delete multiple JCRs
jpi_create_tasks_cross_jobs Create tasks across multiple jobs
jpi_update_tasks_cross_jobs Update tasks across multiple jobs
jpi_delete_tasks_cross_jobs Delete tasks across multiple jobs

Job Templates (13 tools)

Tool Description
jpi_list_templates List all templates
jpi_create_template Create a new template
jpi_get_template Get a template by GUID
jpi_update_template Update a template
jpi_delete_template Delete a template
jpi_get_template_task Get a template task
jpi_add_template_task Add a task to a template
jpi_update_template_task Update a template task
jpi_delete_template_task Delete a template task
jpi_get_tcr Get a Template Component Reference
jpi_add_tcr Add a TCR to a template
jpi_update_tcr Update a TCR
jpi_delete_tcr Delete a TCR

JPI Events (2 tools)

Tool Description
jpi_get_events Get events (change log) after a timestamp
jpi_get_events_filtered Get events filtered by type

Resource Categories (5 tools)

Tool Description
jpi_list_resource_categories List all categories
jpi_create_resource_category Create a category
jpi_get_resource_category Get a category
jpi_update_resource_category Update a category
jpi_delete_resource_category Delete a category

Resource Groups (5 tools)

Tool Description
jpi_list_resource_groups List all groups
jpi_create_resource_group Create a group
jpi_get_resource_group Get a group
jpi_update_resource_group Update a group
jpi_delete_resource_group Delete a group

Resources (5 tools)

Tool Description
jpi_list_resources List all resources
jpi_create_resource Create a resource
jpi_get_resource Get a resource
jpi_update_resource Update a resource
jpi_delete_resource Delete a resource

Settings (2 tools)

Tool Description
jpi_get_settings Get application settings
jpi_update_settings Update 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

Value Description
Quoted Job is quoted but not ordered
Ordered Job is ordered but not released
Released Job is released for production
Standby Job is on standby

Strategy

Value Description
Asap Schedule as soon as possible
Jit Just-in-time scheduling
ASAP_PLUS ASAP with buffer
JIT_PLUS JIT with buffer

TaskStatus

Value Description
Planned Task is planned
Started Task has started
Finished Task is complete
None No status
Standby Task 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.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured