by Casys-AI
Provides a Model Context Protocol server that connects AI agents to ERPNext instances, exposing 120 tools across 14 functional categories and seven interactive UI viewers for seamless data exploration and actions.
MCP ERPNext offers a ready‑to‑run MCP server that bridges AI agents (Claude Desktop, VS Code Copilot, custom agents, etc.) with any ERPNext deployment—self‑hosted or ERPNext Cloud. It surface 120 high‑level tools spanning sales, purchasing, inventory, accounting, HR, projects, CRM, manufacturing, assets, analytics and more, while delivering seven interactive UI viewers that support drill‑down, inline detail panels and cross‑viewer navigation.
npx:
{
"mcpServers": {
"erpnext": {
"command": "npx",
"args": ["-y", "@casys/mcp-erpnext"],
"env": {
"ERPNEXT_URL": "http://localhost:8000",
"ERPNEXT_API_KEY": "<YOUR_API_KEY>",
"ERPNEXT_API_SECRET": "<YOUR_API_SECRET>"
}
}
}
}
npx -y @casys/mcp-erpnext (default stdio mode) or add --http --port=3012 for HTTP.erpnext.--categories=sales,inventory.doclist, invoice, stock, chart, kanban, kpi, funnel) with click‑through navigation.app.sendMessage() – click a row or button to open related documents in another viewer._rowAction metadata.ERPNEXT_URL to your cloud sub‑domain (e.g., https://mycompany.erpnext.com).npx) and Deno (via deno run).--categories CLI flag, e.g., --categories=sales,inventory.refreshRequest payload; they auto‑refresh on focus, after mutations, or via a manual refresh button.MCP server for ERPNext / Frappe ERP — 120 tools across 14 categories, with 7 interactive UI viewers.
Connect any MCP-compatible AI agent (Claude Desktop, Claude Code, VS Code Copilot, custom) to your ERPNext instance via the Model Context Protocol.
Works with self-hosted and ERPNext Cloud (frappe.cloud) instances.
sendMessageerpnext_doc_list filters resolved (#2)Generate API credentials in ERPNext:
API Key and API Secret{
"mcpServers": {
"erpnext": {
"command": "npx",
"args": ["-y", "@casys/mcp-erpnext"],
"env": {
"ERPNEXT_URL": "http://localhost:8000",
"ERPNEXT_API_KEY": "your-api-key",
"ERPNEXT_API_SECRET": "your-api-secret"
}
}
}
}
Works with ERPNext Cloud — set
ERPNEXT_URLto your Frappe Cloud URL (e.g.https://mycompany.erpnext.comorhttps://mysite.frappe.cloud). API key authentication works the same way on self-hosted and cloud instances.
Zero dependencies — single self-contained bundle. Requires Node >= 20.
Add to .vscode/mcp.json:
{
"servers": {
"erpnext": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@casys/mcp-erpnext"],
"env": {
"ERPNEXT_URL": "http://localhost:8000",
"ERPNEXT_API_KEY": "your-api-key",
"ERPNEXT_API_SECRET": "your-api-secret"
}
}
}
}
{
"mcpServers": {
"erpnext": {
"command": "deno",
"args": ["run", "--allow-all", "server.ts"],
"env": {
"ERPNEXT_URL": "http://localhost:8000",
"ERPNEXT_API_KEY": "your-api-key",
"ERPNEXT_API_SECRET": "your-api-secret"
}
}
}
}
ERPNEXT_URL=http://localhost:8000 \
ERPNEXT_API_KEY=xxx \
ERPNEXT_API_SECRET=xxx \
npx -y @casys/mcp-erpnext --http --port=3012
Load only the categories you need:
npx -y @casys/mcp-erpnext --categories=sales,inventory
On a fresh ERPNext instance (no setup wizard), you need to create master data before using business tools. Use erpnext_doc_create for prerequisites:
1. Warehouse Types: Transit, Default
2. UOMs: Nos, Kg, Unit, Set, Meter
3. Item Groups: All Item Groups (is_group=1), then Products, Raw Material (parent=All Item Groups)
4. Territories: All Territories (is_group=1), then France, etc.
5. Customer Groups: All Customer Groups (is_group=1), then Commercial, etc.
6. Supplier Groups: All Supplier Groups (is_group=1), then Hardware, etc.
7. Company: requires Warehouse Types to exist first
Seven interactive MCP Apps viewers, registered as ui://mcp-erpnext/{name}:
| Viewer | Description | Interactive Features |
|---|---|---|
doclist-viewer |
Generic document table with sort, filter, pagination, CSV export | Row click → inline detail panel with Submit/Cancel + sendMessage navigation. Chip filters for status columns. Max 6 columns, rest in detail panel. |
invoice-viewer |
Sales/Purchase Invoice with parties, items, totals | Item click → stock balance + item info panel. Submit/Cancel/Payment actions. sendMessage to payment entries and customer invoices. |
stock-viewer |
Stock balance table with color-coded qty badges | Row click → item info + recent movements. sendMessage to stock chart, item details, stock entries. |
chart-viewer |
Universal chart renderer (12 types via Recharts) | Click bar/pie/line data points → sendMessage drill-down into underlying documents. |
kanban-viewer |
Read-write kanban for Task, Opportunity, Issue | Drag-and-drop moves, inline edit (priority, progress, dates), sendMessage to Timesheets/Quotations/Related docs. |
kpi-viewer |
Big number card with delta, sparkline, trend | Click number → sendMessage to exception list. Click sparkline → trend chart. |
funnel-viewer |
Trapezoid sales funnel with conversion rates | Click stage → sendMessage to document list at that stage. Stage action buttons. |
Viewers communicate via app.sendMessage() — clicking a button in one viewer injects a message into the conversation, which triggers the AI to call the right tool and open the appropriate viewer. This creates a seamless drill-down experience without leaving the chat.
The server auto-injects navigation metadata into tool results:
_rowAction — which tool to call when a row is clicked_sendMessageHints — navigation buttons shown in detail panels (e.g. "Orders", "Invoices")_drillDown / _trendDrillDown — sendMessage templates for KPI and chart click-throughAll viewers carry a refreshRequest payload for safe revalidation via app.callServerTool():
kanban-viewer revalidates after mutations and on focuscd src/ui
npm install
node build-all.mjs
14 categories covering the full ERPNext surface. Each _list tool returns interactive results in the doclist-viewer with row click, inline detail, and cross-viewer navigation.
| Category | Tools | Viewer | Key capabilities |
|---|---|---|---|
| Sales | 17 | doclist / invoice | Customers, Sales Orders, Invoices, Quotations — CRUD + Submit/Cancel |
| Purchasing | 11 | doclist / invoice | Suppliers, Purchase Orders, Invoices, Receipts |
| Inventory | 9 | doclist / stock | Items, Stock Balance, Warehouses, Stock Entries |
| Accounting | 6 | doclist | Accounts, Journal Entries, Payment Entries |
| HR | 12 | doclist | Employees, Attendance, Leave, Salary, Expenses |
| Project | 9 | doclist | Projects, Tasks, Timesheets |
| Delivery | 5 | doclist | Delivery Notes, Shipments |
| Manufacturing | 7 | doclist | BOMs, Work Orders, Job Cards |
| CRM | 8 | doclist | Leads, Opportunities, Contacts, Campaigns |
| Assets | 8 | doclist | Assets, Movements, Maintenance, Categories |
| Operations | 7 | doclist | Generic CRUD for any DocType (erpnext_doc_*) |
| Kanban | 2 | kanban | Task/Opportunity/Issue boards with drag-and-drop |
| Analytics | 17 | chart / kpi / funnel | 12 chart types, 5 KPIs, sales funnel |
| Setup | 2 | — | Company creation |
Full tool reference with all parameters:
docs/tools.md
| Variable | Required | Description |
|---|---|---|
ERPNEXT_URL |
Yes | ERPNext base URL — self-hosted (e.g. http://localhost:8000) or cloud (e.g. https://mycompany.erpnext.com) |
ERPNEXT_API_KEY |
Yes | API Key from User Settings |
ERPNEXT_API_SECRET |
Yes | API Secret from User Settings |
server.ts # MCP server (stdio + HTTP + inspector)
mod.ts # Public API
deno.json # Package config
src/
api/
frappe-client.ts # Frappe REST HTTP client (zero-dependency)
types.ts # Frappe type definitions
kanban/
adapters/ # Per-DocType kanban adapters (task, opportunity, issue)
definitions.ts # Board registry
types.ts # Shared kanban contracts
tools/
sales.ts # 17 sales tools
inventory.ts # 9 inventory tools
purchasing.ts # 11 purchasing tools
accounting.ts # 6 accounting tools
hr.ts # 12 HR tools
project.ts # 9 project tools
delivery.ts # 5 delivery tools
manufacturing.ts # 7 manufacturing tools
crm.ts # 8 CRM tools
assets.ts # 8 asset tools
operations.ts # 7 generic CRUD tools
setup.ts # 2 company/setup tools
kanban.ts # 2 read-write kanban tools
analytics.ts # 17 analytics tools (charts, KPIs, funnel)
ui-refresh.ts # Auto-inject _rowAction, _sendMessageHints, _drillDown
mod.ts # Tool registry
types.ts # Tool interface
client.ts # ErpNextToolsClient
runtime.ts # Deno runtime adapter
runtime.node.ts # Node.js runtime adapter
ui/
shared/ # ActionButton, InfoField, theme, branding, refresh
doclist-viewer/ # Generic document list (inline detail, chip filters)
invoice-viewer/ # Invoice display (item drill-down, actions)
stock-viewer/ # Stock balance (detail panel, sendMessage)
chart-viewer/ # Universal chart renderer (12 types, click drill-down)
kanban-viewer/ # Read-write kanban (drag, edit, sendMessage)
kpi-viewer/ # KPI card (clickable number + sparkline)
funnel-viewer/ # Sales funnel (trapezoid stages, click-through)
viewers.ts # Viewer registry
tests/
tools/ # Tool + ui-refresh + client tests
kanban/ # Kanban adapter tests
ui/ # UI state + refresh tests
docs/
ROADMAP.md # Feature roadmap
coverage.md # Test coverage matrix
The npm package (@casys/mcp-erpnext) is a single self-contained bundle with zero runtime dependencies. UI viewers are embedded.
# Run tests (147 tests)
deno test --allow-all tests/
# Type check
deno check mod.ts server.ts
# Start HTTP server (dev)
deno task serve
# Launch MCP Inspector
deno task inspect
# Build UI viewers
deno task ui:build
# Dev a specific viewer with HMR
cd src/ui && npm run dev:kanban
MIT
Please log in to share your review and rating for this MCP.
Explore related MCPs that share similar capabilities and solve comparable challenges
by robotmcp
Enables bidirectional integration of large language models with ROS‑enabled robots, allowing natural language commands and real‑time access to robot state, topics, services and parameters.
by sunsetcoder
Track flights in real time, retrieve arrival and departure times, view airport status, and monitor emergency situations using Flightradar24 data via a Model Context Protocol server.
by EduBase
Enables Claude and other LLMs to interact with the EduBase e‑learning platform via the Model Context Protocol, allowing automated quiz creation, exam scheduling, and result analysis.
by gNucleus
Generate editable CAD parts or assemblies directly from natural‑language prompts by leveraging gNucleus generative AI models through a lightweight MCP server.
by jyjune
Provides control and access to a video surveillance system, allowing retrieval of live and recorded video streams, channel status queries, PTZ camera positioning, and playback dialog management.
by litmusautomation
Enables LLMs and other intelligent agents to configure, monitor, and manage Litmus Edge devices through real‑time Model Context Protocol communication.
by NonicaTeam
Enables AI desktop applications to read and select Revit model elements through a set of predefined micro‑tools, integrated directly into the Nonicatab toolbar.
by zaiwork
MCP Server for ZIZAI Recruitment API.
by wuye-ai
Provides Model Context Protocol endpoints for property‑industry AI services, including daily industry news, knowledge‑base search, and intelligent question‑answering.
{
"mcpServers": {
"erpnext": {
"command": "npx",
"args": [
"-y",
"@casys/mcp-erpnext"
],
"env": {
"ERPNEXT_URL": "http://localhost:8000",
"ERPNEXT_API_KEY": "<YOUR_API_KEY>",
"ERPNEXT_API_SECRET": "<YOUR_API_SECRET>"
}
}
}
}claude mcp add erpnext npx -y @casys/mcp-erpnext