ERPNext MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| safe_mode | No | Safe Mode is the default operating model. Set to '0' to disable sensitive-operation approval. | 1 |
| ERPNEXT_URL | Yes | The URL of your ERPNext instance, e.g. https://your-erpnext.example.com | |
| ERPNEXT_API_KEY | No | Your ERPNext API key (used with ERPNEXT_API_SECRET) | |
| ERPNEXT_ENV_FILE | No | Path to a separate .env file for a specific site. | |
| ERPNEXT_API_SECRET | No | Your ERPNext API secret (used with ERPNEXT_API_KEY) | |
| ERPNEXT_ACCESS_TOKEN | No | OAuth bearer token for authentication (alternative to API key/secret) |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| erpnext_config_statusA | Inspect resolved target and safe_mode without contacting ERPNext. Legacy allowlists are inactive. |
| erpnext_api_requestA | Call any same-origin ERPNext HTTP route, including API v1/v2, JSON/form/multipart/binary. |
| erpnext_call_methodB | Call any Frappe-exposed RPC method. Unlisted methods need review, not an allowlist edit. |
| erpnext_batch_prepareA | Prepare an exact ordered batch. Verify source count; one user confirmation covers the batch. |
| erpnext_batch_prepare_from_artifactB | Prepare a complete JSON array of requests from a finalized source artifact. |
| erpnext_plan_listB | Recover recent plan IDs after a lost tool response; list running/unknown receipts before retrying. |
| erpnext_plan_inspectA | Read plan status, execution receipts and the full immutable request before confirming it. |
| erpnext_plan_executeA | Execute the frozen plan once. Supply actual in-scope user approval text for sensitive plans. This records agent-attested consent, not independently verified human identity. Do not create another plan to retry an ambiguous write. Inspect its receipt and upstream state. |
| erpnext_result_readA | Read complete result/input bytes in bounded base64 chunks. Optional JSON pointer selects a subtree. |
| erpnext_input_beginA | Begin a local artifact upload using byte length and SHA-256 calculated from the source. |
| erpnext_input_appendA | Append one local input chunk (up to 256 KiB). Out-of-order or excess bytes are rejected. |
| erpnext_input_finalizeB | Verify complete source length and SHA-256. Only finalized inputs can be executed/uploaded. |
| erpnext_doc_createC | Create a document using native REST. safe_mode preflights; expected_lengths checks child rows. |
| erpnext_doc_updateB | Update native fields. In safe_mode pin modified for Frappe save conflict checks; child-table replacement is sensitive. |
| erpnext_doc_deleteC | Prepare/delete any document allowed by ERPNext. safe_mode requires plan confirmation; no draft-only MCP gate. |
| erpnext_doc_submitB | Submit a frozen current document through Frappe. Sensitive: may post stock/accounting effects. |
| erpnext_doc_cancelB | Cancel through Frappe. Sensitive; preflight cannot simulate ledger reversal or custom hooks. |
| erpnext_doc_listB | List one page without a hidden limit clamp. has_more is unknown for a full page without total. |
| erpnext_doc_getA | Read a complete document; large documents are returned through result artifacts. |
| erpnext_doc_mapC | Generate a common mapped document, then freeze any requested save. Use call_method for other mappings. |
| erpnext_bom_create_revisionA | Generate and freeze a draft revision of a submitted BOM; source remains unchanged. |
| erpnext_work_order_make_stock_entryC | Generate Stock Entry using ERPNext; freeze create/submit as one confirmable dependent batch. |
| erpnext_naming_series_configureC | Freeze native naming-series controller requests as one sensitive plan; no separate whitelist. |
| erpnext_health_checkA | Check ERPNext connectivity, authenticated user, and installed app versions. |
| erpnext_doctype_schemaA | Return ERPNext DocType metadata: fields, required fields, child tables, links, and docstatus support. |
| erpnext_bom_preflightA | Preflight an existing BOM or proposed BOM payload without writing. Resolves Routing operations and checks known ERPNext manufacturing rules such as positive operation time. |
| erpnext_link_searchA | Search readable ERPNext Link field candidates, such as Customer, Item, Account, Warehouse, or Supplier. |
| erpnext_report_runC | Run an allowed ERPNext report, such as General Ledger, Accounts Receivable, or Stock Balance. |
| erpnext_stock_balanceB | Return stock quantities for an item and warehouse using ERPNext bin details. |
| erpnext_process_traceA | Trace one ERPNext business flow across sales, buying, production planning, subcontracting, work orders, job cards, stock, quality inspections, delivery, and cost ledgers. |
| erpnext_party_balanceC | Return ERPNext accounting balance for a Customer or Supplier. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 31 tools
The set mixes specific resource tools like doc_create and stock_balance with generic escape hatches like api_request and call_method, so there is definite overlap for document operations. However, the detailed descriptions and the strong erpnext_ prefix give agents enough clues to usually select the intended tool.
Most tools follow an erpnext_<resource>_<action> pattern, such as doc_create, plan_list, and input_finalize, which is predictable and readable. Minor deviations like call_method, api_request, doctype_schema, and stock_balance break the strict pattern but are still intuitive.
31 tools is above the 25+ threshold for a coherent MCP surface, and a large portion are infrastructure mechanics such as input_begin/append/finalize, plan_list/inspect/execute, and result_read. ERPNext is a broad domain, but this count feels heavy and could be consolidated.
The surface covers core ERPNext workflows well: document lifecycle, BOMs, work orders, stock, accounting, reports, and process tracing, with generic api_request and call_method as backstops. Minor gaps like report discovery or attachment-specific helpers exist but are workable through generic routes.