/ ディレクトリ / プレイグラウンド / Frappe_Assistant_Core
● コミュニティ buildswithpaul ⚡ 即起動

Frappe_Assistant_Core

作者 buildswithpaul · buildswithpaul/Frappe_Assistant_Core

ERPNextインスタンスを21のツールで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. Claude DesktopにOAuth経由で接続する
    Connect to my ERPNext MCP endpoint at https://erp.example.com/api/method/frappe_assistant_core.mcp✓ コピーしました
    → OAuthログインが完了し、Claudeが利用可能なツールを一覧表示する
  2. ビジネス上の質問をする
    What's my total sales this month broken down by customer group? Compare to last month.✓ コピーしました
    → Claudeがレポートツールを実行し、比較結果を返す
  3. 異常値を深掘りする
    Customer group 'Wholesale' dropped 40%. Show me the top 10 customers in that group and their YoY sales.✓ コピーしました
    → アクション可能なインサイト付きのランキングリスト

結果: チャットクライアントから離れることなく、経理・オペレーション関連の質問に数秒で回答が得られます。

注意点
  • Claudeがカスタマイズに存在しないDoctype名をハルシネーションする — まず利用可能なDoctypeの一覧を取得させ、正確な名前で参照するようにしてください
  • Python実行ツールがサニタイズされていないコードをDBに対して実行する — ロール権限で管理者以外のユーザーに対してexecute_python_codeツールを無効にしてください
組み合わせ: notion

概要情報からドキュメントを一括作成・更新する

👤 ERPNext導入コンサルタント、データ移行担当者 ⏱ ~20 min intermediate

使うタイミング: スプレッドシートやテキストのデータを、ERPNext上の複数ドキュメント(品目、顧客、仕入先)として登録したい場合。

前提条件
  • 対象Doctypeへの書き込み権限 — ユーザーに割り当てられたロール経由
フロー
  1. 作成内容を記述する
    I have these 15 new suppliers [paste table]. Create them as Supplier records with country, currency, and tax category set.✓ コピーしました
    → Claudeがレコードを提案し、書き込み前に確認を求める
  2. 確認して実行する
    Looks good, proceed. Report any validation errors per row.✓ コピーしました
    → 行ごとの作成結果レポートとエラーの報告
  3. ERPNextで確認する
    List the Suppliers I just created along with their creation date to confirm.✓ コピーしました
    → 15件の一致するリスト

結果: CSVインポートツールの煩雑さなしに、数分でデータの一括登録が完了します。

注意点
  • ナチュラルキーのチェックをしないとClaudeが重複レコードを作成する — 各作成の前に既存レコードを検索するよう指示してください

カスタムFrappeアプリのロジックをMCPツールとして公開する

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

使うタイミング: ドメイン固有のロジック(ローン償還計算、製造BOM展開など)を持つカスタムアプリがあり、LLMから直接呼び出せるようにしたい場合。

前提条件
  • Frappeカスタムアプリ — 標準のbench new-appで作成
フロー
  1. アプリのhooks.pyにツールを登録する
    Walk me through adding a custom MCP tool in my app acme_lending that computes loan amortization, based on the Frappe Assistant Core plugin spec.✓ コピーしました
    → 具体的なhooks.pyのスニペットとツール関数
  2. リロードして確認する
    How do I reload Frappe Assistant Core to pick up the new tool, and how do I confirm it shows up in Claude?✓ コピーしました
    bench restart + ツール一覧での確認

結果: ドメインロジックが任意のMCPクライアントから呼び出し可能になります。別途APIを構築する必要はありません。

注意点
  • ツールが機密フィールドを監査ログに記録してしまう — フィールドにno_copyを設定するか、ツールレスポンスでマスク処理を行ってください

組み合わせ

他のMCPと組み合わせて10倍の力を

frappe-assistant-core + notion

ERPNextの月次損益計算書を実行し、経営会議用にNotionへサマリーを投稿する

Run our monthly P&L report in ERPNext for last month, summarize top 3 variances vs plan, and create a Notion page in 'Finance Weekly'.✓ コピーしました
frappe-assistant-core + filesystem

ERPNextレポートをCSV/Markdownにエクスポートしてオフライン共有する

Run Sales by Customer report for Q1, save as /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ダッシュボードのチャートをデータとして取得する 1 aggregation query

コストと制限

運用コスト

APIクォータ
ERPNextサイトのキャパシティに依存します。MCP呼び出しはWeb UIの操作と同等に扱ってください
呼び出しあたりのトークン
リストクエリは500〜3000トークン、単一ドキュメント取得は200〜800トークン
金額
無料 — AGPL-3.0ライセンス。コストはERPNextのホスティング費用のみです。
ヒント
get_listには必ずfieldsを指定してください。全子テーブルを含むSales Invoiceを取得すると、1行あたり1万トークンを超える可能性があります。

セキュリティ

権限、シークレット、影響範囲

最小スコープ: 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

ERPNext > OAuth ClientにOAuthクライアントが登録されていること、およびリダイレクト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のDeveloper Modeが必要です。Claude Desktopの方が柔軟に対応できます。

代替案

Frappe_Assistant_Core 他との比較

代替案代わりに使う場面トレードオフ
Direct REST API + custom MCP wrapper2〜3の操作だけが必要で、Frappeアプリをインストールしたくない場合ラッパーの構築とメンテナンスを自分で行う必要があります
Odoo MCPERPNextではなくOdooを使用している場合異なるERP、異なるDoctype体系

その他

リソース

📖 GitHub の公式 README を読む

🐙 オープンな issue を見る

🔍 400以上のMCPサーバーとSkillsを見る