mcpField
E
Erpnext_mcp_server

Erpnext_mcp_server

本地服务
github.com/ManotLuijiu商业与营销415 周前更新

关于 Erpnext_mcp_server

Erpnext_mcp_server 是运行在 Frappe/ERPNext bench 层级的 MCP 服务,供需要通过 MCP 客户端管理 ERPNext 的团队使用。单个实例可服务 bench 上的多个站点,并可在工具调用间切换站点。

主要功能

  1. 01在 bench 层级运行
  2. 02动态切换站点
  3. 03读取和修改 ERPNext 文档
  4. 04只读 SQL 与安全路径文件操作
  5. 05搜索 DocType 和文档

适用场景

  1. 01跨站点查询 ERPNext 记录
  2. 02创建或更新业务文档
  3. 03检查数据库结构和系统信息
  4. 04读取 bench 中受限路径的文件

MCP 相关

通过 stdio 向 MCP 客户端提供站点管理、文档操作、搜索、数据库查询和文件工具。SQL 仅允许 SELECT,文件与 bench 命令均受只读或安全路径限制。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

ERPNext MCP Server

Frappe/ERPNext 的框架级 MCP Server——运行方式类似 Doppio CLI,而非针对特定站点。

由 AWS Solution Ltd. 构建 | 联系方式:[email protected]

概述

与典型的、按站点安装的 Frappe 应用不同,此 MCP Server 在 bench 框架级别运行:

  • 一个 Server 实例可为 bench 上的所有站点提供服务
  • 可通过工具调用动态切换站点上下文
  • 无需在每个站点上安装
┌─────────────────────────────────────────────────────┐
│  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                            │
└─────────────────────────────────────────────────────┘

前提条件

  • bench 上已安装 Frappe/ERPNext v15+
  • Python 3.10+(使用 bench 的虚拟环境)
  • 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 客户端

此 Server 使用 STDIO 传输(标准输入/标准输出)。任何支持 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—列出此 bench 上的所有站点
switch_sitesite切换到其他站点
current_site—获取当前站点名称
文档 CRUD
工具参数描述
get_documentdoctype、name按 ID 获取文档
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—系统和数据库信息
get_versions—已安装的应用版本
bench_commandcommand运行只读 bench 命令
工作流
工具参数描述
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,文件仅限安全路径

安全

限制详情
SQL仅允许 SELECT 查询
文件仅限 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
连接被拒绝

该服务使用 stdio 传输,而非 HTTP。请确保 MCP 客户端通过 stdin/stdout 管道连接。

权限被拒绝

请确保运行该服务的用户拥有以下权限:

  • 读取 bench 目录的权限
  • 访问该站点数据库的权限
  • 执行 bench 命令的权限

许可证

专有 — AWS Solution Ltd.

支持


基于 Frappe Framework 构建 | MCP Protocol | STDIO Transport

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。