HI

hengsin/idempiere-mcp

Developer tools
8 stars 7 forks Quality 67 Trend 36

iDempiere related MCP projects

Overview

This project implements a stateless Model Context Protocol (MCP) server for iDempiere ERP. It bridges the gap between AI assistants (like Google Antigravity, Anthropic Claude and Opencode) and iDempiere, enabling autonomous interaction with the ERP system to retrieve data, execute processes, and manage records. - 2025-11-25 - 2026-07-28 - See MCP_TOOLS.md for the complete reference of all 88 MCP tools categorized by module. - Import idempiere-rest project into your Eclipse workspace. - Import the org.idempiere.mcp.server project into your Eclipse workspace. - Create a launch configuration from your existing launch configuration and add both idempiere-rest and org.idempiere.mcp.server project. - Run the launch configuration. - Create a new Rest Auth Token record. Copy the auto generated Token and use as HTTP Authorization Header (Bearer ). - Alternatively, use the create_auth_token tool to create authentication token and post as part of the request body (params.

README

iDempiere MCP Server

This project implements a stateless Model Context Protocol (MCP) server for iDempiere ERP. It bridges the gap between AI assistants (like Google Antigravity, Anthropic Claude and Opencode) and iDempiere, enabling autonomous interaction with the ERP system to retrieve data, execute processes, and manage records.

Supported Protocol Versions

  • 2025-11-25
  • 2026-07-28

Tools Reference

  • See MCP_TOOLS.md for the complete reference of all 88 MCP tools categorized by module.

Dependency

To Test from Eclipse

  • Import idempiere-rest project into your Eclipse workspace.
  • Import the org.idempiere.mcp.server project into your Eclipse workspace.
  • Create a launch configuration from your existing launch configuration and add both idempiere-rest and org.idempiere.mcp.server project.
  • Run the launch configuration.

Authentication

  • Create a new Rest Auth Token record. Copy the auto generated Token and use as HTTP Authorization Header (Bearer ``).
  • Alternatively, use the create_auth_token tool to create authentication token and post as part of the request body (params.arguments["_authorization_bearer"]).

Testing with https://github.com/modelcontextprotocol/inspector

  • npx @modelcontextprotocol/inspector
  • use http://localhost:8080/mcp/ for Stremable HTTP Transport Type
  • Authentication: Enable Authorization and enter Bearer ``

Testing with https://antigravity.google/download

  • Edit ~/.gemini/config/mcp_config.json
  • Streamable HTTP:
"mcpServers": {
  "idempiere-mcp-server": {
    "url": "http://localhost:8080/mcp/",
    "timeout": 30000,
    "trust": true,
    "headers": {
      "Authorization": "Bearer "
    }
  }
}
  • Multiple token for different tenant:
"mcpServers": {
    "iDempiere-System": {
      "url": "http://localhost:8080/mcp/",
      "timeout": 30000,
      "trust": true,
      "headers": {
        "Authorization": "Bearer "
      }
    },
    "iDempiere-GardenWorld": {
      "url": "http://localhost:8080/mcp/",
      "timeout": 30000,
      "trust": true,
      "headers": {
        "Authorization": "Bearer "
      }
    }
  }
}
  • Authentication with the create_auth_token tool:
    • Remove the “headers” property
    • Example: authenticate idempiere with GardenAdmin, GardenAdmin, clientId:GardenWorld, organizationId:HQ, roleId:GardenWorld Admin, warehouseId:HQ Warehouse
    • In subsequent request, specify using the return token as HTTP Authorization Bearer Token. This work as all method takes an optional argument _authorization_bearer as alternative to HTTP Authorization header.
    • Note that out of the box, you can’t authenticate with SuperUser,System, clientId:0, roleId:0 due to the role type of the System Administrator role. You need to change the role type value of System Administrator role to empty or create a new System tenant role for REST API with role type = Web Service.
  • Note that the trailing “/” in the URL is significant, “http://localhost:8080/mcp/” work but “http://localhost:8080/mcp” doesn’t. For some reason, the servlet container will redirect (HTTP 301) “/mcp” to “/mcp/” and that breaks the initialization flow.

Demo Video

Environment Variables

  • MCP_CORS_ORIGIN: Access-Control-Allow-Origin header value. Default: *.
  • MCP_HEARTBEAT_INTERVAL_MS: Interval in milliseconds to send heartbeat (ping) messages. Default: 15000 (15 seconds).
  • MCP_THREAD_POOL_SIZE: Size of the thread pool for handling requests. Default: 100.

Status

  • A proof of concept prototype, use with care.

Build

  • With the following layout:
idempiere-workspace/
├── idempiere-rest
└── idempiere
  • At idempiere-workspace, git clone https://github.com/hengsin/idempiere-mcp.git.
  • At idempiere-workspace/idempiere-mcp, mvn verify.
  • Build artifact - idempiere-workspace/idempiere-mcp/target/org.idempiere.mcp.server-1.0.0-SNAPSHOT.jar .
  • For testing, install org.idempiere.mcp.server-1.0.0-SNAPSHOT.jar using OSGi console of Felix Web Console (Must have install idempiere-rest before this).
View the full README on GitHub

Install

This server does not publish a one-line install command.

Open the repository installation guide New to MCP? Start with the mcpskill.org guide →