MCP Server for ERPNext REST API
Project description
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
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file erpnext_mcp-0.4.1.tar.gz.
File metadata
- Download URL: erpnext_mcp-0.4.1.tar.gz
- Upload date:
- Size: 21.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f73ce6b7c37de29976be482b55cf86bb5a53db3618c938cc7f1f5d7f7b11ae67
|
|
| MD5 |
55a6a2a2ca35d3c45b772e72d31cdd8e
|
|
| BLAKE2b-256 |
7bfa633617e64aa95edf2d5afe19872fee309a8adb3931445343e3751c54d2c8
|
Provenance
The following attestation bundles were made for erpnext_mcp-0.4.1.tar.gz:
Publisher:
publish.yml on yazelin/erpnext-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
erpnext_mcp-0.4.1.tar.gz -
Subject digest:
f73ce6b7c37de29976be482b55cf86bb5a53db3618c938cc7f1f5d7f7b11ae67 - Sigstore transparency entry: 908465019
- Sigstore integration time:
-
Permalink:
yazelin/erpnext-mcp@12dc9c592365248f8792ef198e6a026be0dd6830 -
Branch / Tag:
refs/tags/v0.4.1 - Owner: https://github.com/yazelin
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@12dc9c592365248f8792ef198e6a026be0dd6830 -
Trigger Event:
release
-
Statement type:
File details
Details for the file erpnext_mcp-0.4.1-py3-none-any.whl.
File metadata
- Download URL: erpnext_mcp-0.4.1-py3-none-any.whl
- Upload date:
- Size: 12.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fa2dd3a4ee563e5dc9dcb6f80212097b1755665a2a01322f1df367cc72746d6e
|
|
| MD5 |
19dcc959a9ccef74f62afaece9db3e4e
|
|
| BLAKE2b-256 |
13a617592c500bdf2d9d09dc96c6b43708e20ce77ec29f0cd07283b1076e3c1a
|
Provenance
The following attestation bundles were made for erpnext_mcp-0.4.1-py3-none-any.whl:
Publisher:
publish.yml on yazelin/erpnext-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
erpnext_mcp-0.4.1-py3-none-any.whl -
Subject digest:
fa2dd3a4ee563e5dc9dcb6f80212097b1755665a2a01322f1df367cc72746d6e - Sigstore transparency entry: 908465028
- Sigstore integration time:
-
Permalink:
yazelin/erpnext-mcp@12dc9c592365248f8792ef198e6a026be0dd6830 -
Branch / Tag:
refs/tags/v0.4.1 - Owner: https://github.com/yazelin
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@12dc9c592365248f8792ef198e6a026be0dd6830 -
Trigger Event:
release
-
Statement type: