mcpField
E
Erpnext_mcp_server

Erpnext_mcp_server

ローカル
github.com/ManotLuijiuビジネス・マーケティング415 週間前に更新

Erpnext_mcp_server について

Erpnext_mcp_serverは、Frappe/ERPNextのbench層で動作し、MCPクライアントからERPNextを管理するチーム向けのMCPサーバーです。1つのインスタンスでbench内の複数サイトに対応し、ツール呼び出しごとにサイトを切り替えられます。

主な機能

  1. 01bench層で動作
  2. 02サイトコンテキストの動的切り替え
  3. 03ERPNext文書の読み取りと更新
  4. 04読み取り専用SQLと制限付きファイル操作
  5. 05DocTypeと文書の検索

活用シーン

  1. 01複数サイトのERPNextレコードを照会
  2. 02業務文書の作成や更新
  3. 03データベース構造とシステム情報の確認
  4. 04許可されたbenchパスのファイルを読む

MCP 対応

stdio経由で、サイト管理、文書操作、検索、データベース照会、ファイル操作のツールをMCPクライアントに公開します。SQLはSELECTのみで、ファイルアクセスとbenchコマンドにも制限があります。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

ERPNext MCP サーバー

Frappe/ERPNext 向けのフレームワークレベルの MCP サーバーです。Doppio CLI のように動作し、特定のサイトに依存しません。

AWS Solution Ltd. が開発 | お問い合わせ:[email protected]

概要

サイトごとにインストールする一般的な Frappe アプリとは異なり、この MCP サーバーはベンチのフレームワークレベルで実行されます。

  • 1 つのサーバーインスタンスでベンチ上のすべてのサイトに対応します
  • ツール呼び出しによってサイトのコンテキストが動的に切り替わります
  • 各サイトへのインストールは不要です
┌─────────────────────────────────────────────────────┐
│  MCP Client (Claude, Hermes, etc.)                 │
│  (running on another machine)                        │
└────────────────────┬────────────────────────────────┘
                     │ stdio
┌────────────────────▼────────────────────────────────┐
│  ERPNext MCP Server                                 │
│  (this bench)                                       │
│                                                     │
│  • list_sites     → all bench sites               │
│  • switch_site    → change context                 │
│  • get_document   → query current site             │
│  • execute_sql    → safe SELECT queries            │
│  • bench_command  → read-only bench operations     │
│  • ... + 15 more tools                            │
└─────────────────────────────────────────────────────┘

前提条件

  • ベンチに Frappe/ERPNext v15+ がインストールされていること
  • Python 3.10+(ベンチの仮想環境を使用)
  • MCP クライアント(Claude Code、Hermes Agent など)

クイックスタート

1. Python 環境を確認する
cd ~/frappe-bench
./env/bin/python --version  # Should be Python 3.10+
2. ローカルでテストする
# Set your default site
export FRAPPE_SITE=your-site.domain.com
export BENCH_PATH=/path/to/your/frappe-bench

# Run the server
./env/bin/python -m erpnext_mcp_server.mcp.server
3. MCP クライアントを設定する
Claude Code の場合

プロジェクト内の .mcp.json に追加します。

{
  "mcpServers": {
    "erpnext": {
      "command": "python",
      "args": ["-m", "erpnext_mcp_server.mcp.server"],
      "env": {
        "FRAPPE_SITE": "your-site.domain.com",
        "BENCH_PATH": "/home/youruser/frappe-bench"
      }
    }
  }
}
Hermes Agent の場合

Hermes の設定に追加します。

mcp_servers:
  erpnext:
    command: ssh
    args:
      - user@your-server
      - 'cd /path/to/bench && FRAPPE_SITE=your-site.com ./env/bin/python -m erpnext_mcp_server.mcp.server'
その他の MCP クライアントの場合

このサーバーはSTDIO トランスポート(stdin/stdout)を使用します。stdio に対応する MCP クライアントであれば、どれでも動作します。

{
  "mcpServers": {
    "erpnext": {
      "command": "/path/to/frappe-bench/env/bin/python",
      "args": ["-m", "erpnext_mcp_server.mcp.server"],
      "env": {
        "FRAPPE_SITE": "your-site.domain.com",
        "BENCH_PATH": "/path/to/frappe-bench"
      }
    }
  }
}

利用可能なツール

サイト管理
ツール引数説明
list_sites—このベンチ上のすべてのサイトを一覧表示します
switch_sitesite別のサイトに切り替えます
current_site—現在のサイト名を取得します
ドキュメントの CRUD
ツール引数説明
get_documentdoctype, nameID でドキュメントを取得します
list_documentsdoctype, filters?, limit?フィルターを指定してドキュメントを一覧表示します
create_documentdoctype, data新しいドキュメントを作成します
update_documentdoctype, name, data既存のドキュメントを更新します
delete_documentdoctype, nameドキュメントを削除/キャンセルします
count_documentsdoctype, filters?条件に一致するドキュメント数を数えます
メタデータ
ツール引数説明
list_doctypesmodule?すべての DocType を一覧表示します
get_doctype_metadoctypeフィールド定義を取得します
データベース
ツール引数説明
execute_sqlquery, limit?SELECT クエリを実行します(安全)
get_table_infotableテーブル構造を取得します
システム情報
ツール引数説明
get_system_info—システムと DB の情報を取得します
get_versions—インストール済みアプリのバージョンを取得します
bench_commandcommand読み取り専用のベンチコマンドを実行します
ワークフロー
ツール引数説明
submit_documentdoctype, nameドキュメントを提出します(docstatus 0→1)
cancel_documentdoctype, name提出済みドキュメントをキャンセルします
検索
ツール引数説明
searchquery, doctype?, limit?DocType 全体を検索します
ファイル
ツール引数説明
read_filepath, lines?ファイルを読み取ります(安全なパスのみ)
list_filespath, recursive?ディレクトリを一覧表示します

使用例

Python クライアントのテスト
import subprocess
import json

proc = subprocess.Popen(
    ["./env/bin/python", "-m", "erpnext_mcp_server.mcp.server"],
    stdin=subprocess.PIPE,
    stdout=subprocess.PIPE,
    cwd="/path/to/frappe-bench",
    env={"FRAPPE_SITE": "your-site.domain.com"}
)

# Initialize
init_msg = {
    "jsonrpc": "2.0", "id": 1,
    "method": "initialize",
    "params": {
        "protocolVersion": "2024-11-05",
        "capabilities": {},
        "clientInfo": {"name": "test", "version": "1.0"}
    }
}
proc.stdin.write((json.dumps(init_msg) + "\n").encode())
proc.stdin.flush()

# List sites
list_msg = {
    "jsonrpc": "2.0", "id": 2,
    "method": "tools/call",
    "params": {"name": "list_sites", "arguments": {}}
}
proc.stdin.write((json.dumps(list_msg) + "\n").encode())
proc.stdin.flush()

proc.stdin.close()
print(proc.stdout.read().decode())
Claude Code の使用方法

設定が完了したら、Claude に尋ねるだけです。

> List all customers in ERPNext
> Create a new Sales Order for customer ABC
> What is the total outstanding for Invoice INV-001?

Claude は MCP ツールを使用して、ERPNext に直接問い合わせます。

アーキテクチャ

erpnext_mcp_server/
├── __init__.py
├── hooks.py
├── mcp/
│   ├── __init__.py
│   ├── __main__.py          # Entry point
│   ├── server.py            # Main MCP server
│   └── config.py            # Configuration
└── doctype/                 # Settings DocTypes (optional)
設計原則
  1. フレームワークレベル — サイトごとではなく、bench レベルで動作します
  2. 遅延読み込み — 必要な場合にのみ Frappe をインポートします
  3. サイトコンテキスト — ツール呼び出しごとにコンテキストを動的に切り替えます
  4. セキュリティ優先 — SQL は SELECT のみに制限され、ファイルへのアクセスは安全なパスに制限されます

セキュリティ

制限詳細
SQLSELECT クエリのみ許可
ファイルsites/、apps/、logs/、config/ のパスのみ
Bench コマンド読み取り専用操作のみ
サイトアクセスFrappe の権限によって適用されます

環境変数

変数必須デフォルト説明
FRAPPE_SITEはい—デフォルトのサイト名
BENCH_PATHいいえ/home/frappe/frappe-benchBench ディレクトリ
FRAPPE_STREAM_LOGGINGいいえ1ファイルログを無効化

トラブルシューティング

「site does not exist」エラー
# Verify site exists
ls ~/frappe-bench/sites/  | grep your-site

# Check site config
cat ~/frappe-bench/sites/your-site.domain.com/site_config.json
接続が拒否される

サーバーは HTTP ではなく、stdio トランスポートを使用します。MCP クライアントが stdin/stdout パイプ経由で接続していることを確認してください。

権限が拒否される

サーバーを実行するユーザーに、以下の権限があることを確認してください。

  • bench ディレクトリへの読み取りアクセス
  • サイトのデータベースへのアクセス
  • bench コマンドの実行権限

ライセンス

プロプライエタリ — AWS Solution Ltd.

サポート

  • メール:[email protected]
  • 問題:リポジトリで Issue を作成してください

Frappe Framework で構築 | MCP Protocol | STDIO Transport

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。