MCP (Model Context Protocol) Server for ERPNext with full CRUD operations, workflow management, custom fields, and DocType management.
Built with MCP SDK 1.25.1 - the latest stable version.
get_document- Get a single document by DocType and nameget_documents- List documents with filtering, field selection, and paginationcreate_document- Create new documentsupdate_document- Update existing documentsdelete_document- Delete documentssubmit_document- Submit submittable documents (Draft → Submitted)cancel_document- Cancel submitted documents
get_doctypes- List all available DocTypesget_doctype_fields- Get field definitions for a DocTypeget_doctype_meta- Get complete DocType metadatacreate_doctype- Create new custom DocTypesadd_doctype_field- Add fields to existing DocTypescreate_custom_field- Create custom fields (survives updates)create_property_setter- Override DocType/field properties
get_workflow- Get active workflow for a DocTypecreate_workflow- Create new workflows with states and transitionsupdate_workflow- Update existing workflows
run_report- Execute ERPNext reports with filters
authenticate_erpnext- Authenticate with username/password (alternative to API key)
npm install @kai-oesterling/erpnext-mcp-serverOr clone and build:
git clone https://github.com/Kai-Oesterling/erpnext-mcp-server.git
cd erpnext-mcp-server
npm install
npm run buildSet environment variables:
export ERPNEXT_URL=https://erp.example.com
export ERPNEXT_API_KEY=your_api_key
export ERPNEXT_API_SECRET=your_api_secret
# Optional: Enable debug logging
export ERPNEXT_DEBUG=true- Go to User settings in ERPNext
- Navigate to "API Access" section
- Generate new API Key and Secret
- Use these credentials in environment variables
Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"erpnext": {
"command": "node",
"args": ["/path/to/erpnext-mcp-server/build/index.js"],
"env": {
"ERPNEXT_URL": "https://erp.example.com",
"ERPNEXT_API_KEY": "your_api_key",
"ERPNEXT_API_SECRET": "your_api_secret"
}
}
}
}npx @modelcontextprotocol/inspector node build/index.jsnpm start# Watch mode
npm run watch
# Run with tsx (no build needed)
npm run dev
# Build
npm run buildThis server includes detailed error extraction from ERPNext responses:
- Parses
_server_messagesfor validation errors - Extracts exception details from ERPNext responses
- Provides meaningful HTTP status messages
- Includes debug logging when
ERPNEXT_DEBUG=true
The server also exposes MCP resources:
erpnext://DocTypes- List all available DocTypeserpnext://{doctype}/{name}- Access individual documents
MIT
Kai Oesterling kai@oesterling.org
Based on the original erpnext-mcp-server by Rakesh Gangwar. Extended with workflows, custom fields, DocType creation, and improved error handling.