/ 目錄 / 演練場 / Frappe_Assistant_Core
● 社群 buildswithpaul ⚡ 即開即用

Frappe_Assistant_Core

作者 buildswithpaul · buildswithpaul/Frappe_Assistant_Core

透過 21 個工具將你的 ERPNext 實例接入 Claude——涵蓋文件、報表、分析,甚至 Python 執行——並以 OAuth 和角色型權限管控存取。

Frappe Assistant Core 安裝於你的 Frappe/ERPNext bench 內,並以 MCP 協定與 LLM 用戶端溝通。文件 CRUD、搜尋、報表、Python 執行及圖表產生,全部受你現有的 ERPNext 角色權限控管,OAuth 讓每位使用者以自己的帳號登入。

為什麼要用

核心特性

即時演示

實際使用效果

frappe-assistant-core.replay ▶ 就緒
0/0

安裝

選擇你的客戶端

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "frappe-assistant-core": {
      "command": "uvx",
      "args": [
        "Frappe_Assistant_Core"
      ],
      "_inferred": true
    }
  }
}

開啟 Claude Desktop → Settings → Developer → Edit Config。儲存後重啟應用。

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "frappe-assistant-core": {
      "command": "uvx",
      "args": [
        "Frappe_Assistant_Core"
      ],
      "_inferred": true
    }
  }
}

Cursor 使用與 Claude Desktop 相同的 mcpServers 格式。專案級設定優先於全域。

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "frappe-assistant-core": {
      "command": "uvx",
      "args": [
        "Frappe_Assistant_Core"
      ],
      "_inferred": true
    }
  }
}

點擊 Cline 側欄中的 MCP Servers 圖示,然後選 "Edit Configuration"。

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "frappe-assistant-core": {
      "command": "uvx",
      "args": [
        "Frappe_Assistant_Core"
      ],
      "_inferred": true
    }
  }
}

格式與 Claude Desktop 相同。重啟 Windsurf 生效。

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "frappe-assistant-core",
      "command": "uvx",
      "args": [
        "Frappe_Assistant_Core"
      ]
    }
  ]
}

Continue 使用伺服器物件陣列,而非映射。

~/.config/zed/settings.json
{
  "context_servers": {
    "frappe-assistant-core": {
      "command": {
        "path": "uvx",
        "args": [
          "Frappe_Assistant_Core"
        ]
      }
    }
  }
}

加入 context_servers。Zed 儲存後熱重載。

claude mcp add frappe-assistant-core -- uvx Frappe_Assistant_Core

一行命令搞定。用 claude mcp list 驗證,claude mcp remove 移除。

使用場景

實戰用法: Frappe_Assistant_Core

以自然語言向 ERPNext 提問商業問題

👤 創辦人、營運主管、財務團隊 ⏱ ~15 min beginner

何時使用: 想查詢銷售、庫存、應收帳款數字,但不想逐一點開 ERPNext 報表或等待分析師。

前置條件
  • 已安裝 Frappe Assistant Core 的 ERPNext 站台bench get-app + bench install-app frappe_assistant_core
  • 具備適當讀取角色的使用者帳號 — 使用你自己的帳號登入,權限隨之套用
步驟
  1. 透過 OAuth 連線 Claude Desktop
    連線至我的 ERPNext MCP 端點 https://erp.example.com/api/method/frappe_assistant_core.mcp✓ 已複製
    → OAuth 登入完成;Claude 列出可用工具
  2. 提出商業問題
    本月按客戶群組分類的總銷售額是多少?請與上月比較。✓ 已複製
    → Claude 執行報表工具並回傳比較結果
  3. 深入調查異常
    「Wholesale」客戶群組下降了 40%。請列出該群組前 10 名客戶及其年同比銷售額。✓ 已複製
    → 附有可行建議的排名清單

結果: 無需離開聊天用戶端,數秒內獲得財務與營運問題的解答。

注意事項
  • Claude 幻覺出不存在於你自訂設定中的 Doctype 名稱 — 務必先要求它列出可用的 Doctype,再以精確名稱引用
  • Python 執行工具對你的資料庫執行未經過濾的程式碼 — 透過角色權限為非管理員使用者停用 execute_python_code 工具
搭配使用: notion

依據描述批次建立或更新文件

👤 ERPNext 導入顧問、資料遷移人員 ⏱ ~20 min intermediate

何時使用: 你有一份試算表或一段資料描述,需要以多筆文件(Items、Customers、Suppliers)形式匯入 ERPNext。

前置條件
  • 目標 Doctype 的寫入權限 — 透過指派給使用者的角色取得
步驟
  1. 描述要建立的內容
    我有這 15 個新供應商 [貼上表格]。請以供應商記錄建立,並設定國家、幣別和稅務類別。✓ 已複製
    → Claude 提出記錄清單,寫入前請求確認
  2. 確認後執行
    看起來沒問題,請繼續。逐列回報任何驗證錯誤。✓ 已複製
    → 逐列建立報告,包含任何錯誤
  3. 在 ERPNext 中驗證
    請列出我剛建立的供應商及其建立日期以供確認。✓ 已複製
    → 符合的 15 筆清單

結果: 無需 CSV 匯入工具的繁瑣流程,數分鐘內完成批次資料輸入。

注意事項
  • 若未檢查自然鍵,Claude 可能建立重複記錄 — 告訴它在每次建立前先搜尋是否已有相同記錄

將自訂 Frappe 應用程式的邏輯公開為 MCP 工具

👤 Frappe/ERPNext 開發者 ⏱ ~45 min advanced

何時使用: 你有一個包含領域邏輯的自訂應用程式(例如貸款攤還、製造 BOM 展開器),並希望 LLM 能直接呼叫它。

前置條件
  • 一個 Frappe 自訂應用程式 — 標準的 bench new-app
步驟
  1. 在應用程式的 hooks.py 中註冊工具
    請依照 Frappe Assistant Core 插件規格,帶我完成在應用程式 acme_lending 中新增計算貸款攤還的自訂 MCP 工具。✓ 已複製
    → 具體的 hooks.py 程式碼片段 + 工具函式
  2. 重新載入並驗證
    如何重新載入 Frappe Assistant Core 以套用新工具,並確認它顯示在 Claude 中?✓ 已複製
    bench restart + 工具清單檢查

結果: 你的領域邏輯現在可從任何 MCP 用戶端呼叫,無需另外建立 API。

注意事項
  • 工具將敏感欄位記錄至稽核日誌 — 將欄位標記為 no_copy 或在工具回應中遮罩

組合

與其他 MCP 搭配,撬動十倍槓桿

frappe-assistant-core + notion

執行每月 ERPNext 損益報表,將摘要發佈至 Notion 供領導層週會使用

執行 ERPNext 上月的月度損益報表,摘要列出與計畫相比前 3 大差異,並在「Finance Weekly」中建立 Notion 頁面。✓ 已複製
frappe-assistant-core + filesystem

將 ERPNext 報表匯出為 CSV/Markdown 以供離線分享

執行 Q1 的依客戶銷售報表,儲存為 /reports/sales-q1.csv。✓ 已複製

工具

此 MCP 暴露的能力

工具輸入參數何時呼叫成本
get_document doctype: str, name: str 依主鍵取得特定 ERPNext 文件 1 DB read
get_list doctype: str, filters?: obj, fields?: str[], limit?: int 依篩選條件列出或搜尋 Doctype 的文件 1 DB query
create_document doctype: str, data: obj 插入新文件——遵循驗證規則 1 DB write + hooks
update_document doctype, name, data 修補現有文件的欄位 1 DB write
run_report report_name: str, filters?: obj 執行已儲存的 Frappe 查詢/腳本/報表建構器報表 variable
execute_python_code code: str 在 Frappe 環境中執行任意 Python——僅限管理員,請對一般使用者停用 unbounded
get_chart_data chart_name / config 將 Frappe Dashboard 圖表轉換為資料輸出 1 aggregation query

成本與限制

運行它的成本

API 配額
受限於你的 ERPNext 站台容量——將 MCP 呼叫視同 Web UI 操作
每次呼叫 Token 數
清單查詢 500-3000 tokens;單筆文件讀取 200-800
費用
免費——AGPL-3.0。費用即你支付 ERPNext 主機託管的費用。
提示
使用 get_list 時務必傳入 fields——取得包含所有子表的完整 Sales Invoice 每列可能耗用超過 10k tokens。

安全

權限、密鑰、影響範圍

最小權限: Whatever role permissions the user already has in ERPNext
憑證儲存: OAuth 令牌由 MCP 用戶端儲存;請在 ERPNext 使用者設定中輪換
資料出站: 直接從你的 ERPNext 站台傳送至你所連線的 LLM 供應商
切勿授予: System Manager to the OAuth app unless genuinely needed Enable `execute_python_code` for non-admin users

故障排查

常見錯誤與修復

OAuth redirect fails / invalid_client

確認 OAuth 用戶端已在 ERPNext > OAuth Client 中註冊,且重新導向 URI 與你的 MCP 用戶端回呼位址完全相符。

驗證: Check `bench log` and the OAuth Client record
Tool says 'Permission denied' for a Doctype

登入使用者缺少讀取/寫入角色。請在使用者權限中授予適當角色。

驗證: Try the same operation in the ERPNext web UI
Custom plugin tool not appearing

執行 bench restart,並確認應用程式已安裝於站台且 hooks.py 正確公開工具。

驗證: List tools from Claude — your custom tool should be present
ChatGPT custom connector rejects the endpoint

ChatGPT 自訂連接器需要啟用開發人員模式的 ChatGPT Plus。Claude Desktop 的相容性較為寬鬆。

替代方案

Frappe_Assistant_Core 對比其他方案

替代方案何時用它替代權衡
Direct REST API + custom MCP wrapper你只需要 2-3 個操作且不想安裝 Frappe 應用程式需要自行建立並維護封裝層
Odoo MCP你使用的是 Odoo 而非 ERPNext不同的 ERP,不同的 Doctype

更多

資源

📖 閱讀 GitHub 上的官方 README

🐙 查看未解決的 issue

🔍 瀏覽全部 400+ MCP 伺服器和 Skills