Skip to main content
Glama
yazelin

ERPNext MCP Server

by yazelin

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

Tool

Description

list_documents

List documents with filters, sorting, pagination

get_document

Get a single document by name

create_document

Create a new document

update_document

Update an existing document

delete_document

Delete a document

submit_document

Submit a submittable document

cancel_document

Cancel a submitted document

run_report

Execute an ERPNext report

get_count

Get document count with optional filters

get_list_with_summary

List documents with total count

run_method

Call any whitelisted server-side method

search_link

Link field autocomplete search

list_doctypes

List all available DocType names

get_doctype_meta

Get field definitions for a DocType

get_stock_balance

Real-time stock balance from Bin

get_stock_ledger

Stock ledger entries (inventory history)

get_item_price

Item prices from price lists

make_mapped_doc

Document conversion (e.g. SO → DN)

get_party_balance

Outstanding balance for Customer/Supplier

get_supplier_details

Get supplier with address, phone, contacts (supports alias search)

get_customer_details

Get customer with address, phone, contacts (supports alias search)

upload_file

Upload a local file to ERPNext (by file path)

upload_file_from_url

Upload a file from URL

list_files

List files attached to a document

download_file

Download a file by URL

get_file_url

Get 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

Install Server
A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/yazelin/erpnext-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server