This server connects an AI assistant to an ERPNext instance through the Frappe REST API. The tools are deliberately generic. Instead of one tool per module, the assistant gets a small set that works with any DocType, because ERPNext already knows its own schema:
get_doctypesandget_doctype_fieldsto discover what exists and what fields a DocType hasget_documentsandget_documentto list records or read one with its child tablescreate_document,update_documentanddelete_documentfor writessubmit_documentandcancel_document, which use Frappe’s own document lifecyclecall_methodfor whitelisted server-side methods, andrun_reportfor ERPNext reports
Documents are also exposed as resources at erpnext://{doctype}/{name}. Writes return a minimal response by default, with an opt-in verbose flag, so a large document doesn’t fill the model’s context every time it saves something.
It runs in Claude Desktop, Cline or any other MCP client. You give it your ERPNext URL and an API key and secret.
I wrote it in March 2025, during a run of small MCP servers. I expected it to be the boring one, and it turned out to be the one people use. After the first week I left it alone for eleven months. In February 2026 I came back to it, upgraded the MCP SDK, and added the lifecycle, call_method and minimal-response changes, based on a pull request from a contributor. I’ve also turned down a larger set of accounting tools in favour of keeping the server lean. Open threads remain, including a pull request for HTTP/SSE transport and multi-site support. I maintain it in bursts. I wrote about what that has taught me in Maintaining an MCP server people actually use.