MCP Hub
Back to servers

ERPNext MCP Server

Enables interaction with ERPNext instances via its REST API to manage documents, inventory, and reports. It supports full CRUD operations, submittable document workflows, and schema inspection through natural language.

Updated
Feb 3, 2026

ERPNext MCP Server

MCP (Model Context Protocol) server for ERPNext REST API, built with FastMCP and Python.

Features

  • CRUD — List, get, create, update, delete documents
  • Workflow — Submit and cancel submittable documents
  • Reports — Run ERPNext query reports
  • Schema — Inspect DocType field definitions, list all DocTypes
  • Inventory — Stock balance, stock ledger, item prices
  • Trading — Document conversion (e.g. Quotation → Sales Order), party balance
  • Supplier/Customer — Get complete details with address, phone, contacts; supports alias search
  • Files — Upload, list, download files
  • Helpers — Link search (autocomplete), document count, generic method calls

Requirements

  • Python >= 3.11
  • uv (recommended) or pip
  • ERPNext instance with API key/secret

Setup

# Clone the repo
git clone <repo-url> && cd erpnext-mcp

# Create .env file
cat > .env << 'EOF'
ERPNEXT_URL=https://your-erpnext-instance.com
ERPNEXT_API_KEY=your_api_key
ERPNEXT_API_SECRET=your_api_secret
EOF

# Install dependencies
uv sync

Run

set -a && source .env && set +a && uv run erpnext-mcp

Available Tools

ToolDescription
list_documentsList documents with filters, sorting, pagination
get_documentGet a single document by name
create_documentCreate a new document
update_documentUpdate an existing document
delete_documentDelete a document
submit_documentSubmit a submittable document
cancel_documentCancel a submitted document
run_reportExecute an ERPNext report
get_countGet document count with optional filters
get_list_with_summaryList documents with total count
run_methodCall any whitelisted server-side method
search_linkLink field autocomplete search
list_doctypesList all available DocType names
get_doctype_metaGet field definitions for a DocType
get_stock_balanceReal-time stock balance from Bin
get_stock_ledgerStock ledger entries (inventory history)
get_item_priceItem prices from price lists
make_mapped_docDocument conversion (e.g. SO → DN)
get_party_balanceOutstanding balance for Customer/Supplier
get_supplier_detailsGet supplier with address, phone, contacts (supports alias search)
get_customer_detailsGet customer with address, phone, contacts (supports alias search)
upload_fileUpload a local file to ERPNext (by file path)
upload_file_from_urlUpload a file from URL
list_filesList files attached to a document
download_fileDownload a file by URL
get_file_urlGet download URL for a file

MCP Client Configuration

Add to your MCP client config (e.g. Claude Desktop claude_desktop_config.json):

{
  "mcpServers": {
    "erpnext": {
      "command": "uv",
      "args": ["--directory", "/path/to/erpnext-mcp", "run", "erpnext-mcp"],
      "env": {
        "ERPNEXT_URL": "https://your-erpnext-instance.com",
        "ERPNEXT_API_KEY": "your_api_key",
        "ERPNEXT_API_SECRET": "your_api_secret"
      }
    }
  }
}

Project Structure

src/erpnext_mcp/
├── server.py   # MCP tool definitions (FastMCP)
├── client.py   # ERPNext REST API client (httpx async)
└── types.py    # Pydantic models

License

MIT

Reviews

No reviews yet

Sign in to write a review