关于 Enterich
Enterich 是面向 ERPNext 会计操作的 MCP 服务,通过外部 OAuth 授权,并将权限限制在专用用户范围内。它提供固定且区分读写的工具,只能创建或更新草稿,提交由人员在 ERPNext 中完成。
主要功能
- 01固定范围的会计工具
- 02读操作与写操作分离
- 03仅创建和更新单据草稿
- 04遵循 ERPNext 专用用户权限
- 05通过外部授权服务器验证令牌
适用场景
- 01查询发票、账户和银行记录
- 02生成应收、应付与总账报告
- 03准备供人员审核的会计草稿
MCP 相关
Enterich 通过 Streamable HTTP 提供 MCP 服务,供客户端调用固定的 ERPNext 会计工具。它实现 MCP 授权规范的受保护资源验证,并检查每个访问令牌。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
docker run -i --rm -e ENTERICH_RESOURCE_URL -e ENTERICH_ISSUER -e ENTERICH_JWKS_URL -e ENTERICH_CLIENT_ID -e ENTERICH_SUBJECT -e ENTERICH_REQUIRED_SCOPES -e ENTERICH_TOKEN_ALGORITHMS -e ENTERICH_CLOCK_LEEWAY -e ENTERICH_ERPNEXT_URL -e ENTERICH_ERPNEXT_HOST -e ENTERICH_ERPNEXT_PUBLIC_URL -e ENTERICH_ERPNEXT_API_KEY -e ENTERICH_ERPNEXT_API_SECRET -e ENTERICH_COMPANY -e ENTERICH_TOOLS -e ENTERICH_MAX_DRAFTS_PER_HOUR -e ENTERICH_TIMEZONE -e ENTERICH_HOST -e ENTERICH_PORT -e ENTERICH_LOG_LEVEL ghcr.io/interlusion/enterich:0.5.0ENTERICH_RESOURCE_URLThe MCP endpoint exactly as clients enter it, https; its path is the one servedENTERICH_ISSUERThe authorization server's issuer, httpsENTERICH_JWKS_URLThe authorization server's signing keys, httpsENTERICH_CLIENT_IDThe OAuth client the agent's tokens are issued toENTERICH_SUBJECTThe agent identity's subENTERICH_REQUIRED_SCOPESScopes required in the token, space-separatedENTERICH_TOKEN_ALGORITHMS密钥Token signing algorithms accepted, comma-separatedENTERICH_CLOCK_LEEWAYSeconds of clock leeway for token times, 0 to 60ENTERICH_ERPNEXT_URLThe base URL Enterich calls ERPNext atENTERICH_ERPNEXT_HOSTThe Host header sent to ERPNext, by default the URL's hostENTERICH_ERPNEXT_PUBLIC_URLThe base URL people open ERPNext at, for links in resultsENTERICH_ERPNEXT_API_KEY密钥The ERPNext agent user's API keyENTERICH_ERPNEXT_API_SECRET密钥The ERPNext agent user's API secretENTERICH_COMPANYThe assigned company, exactly as named in ERPNextENTERICH_TOOLSThe operations to offer, comma-separated; by default allENTERICH_MAX_DRAFTS_PER_HOURMost drafts of each type the agent may create in an hour; unset, no limitENTERICH_TIMEZONEIANA time zone for today's date, the ERPNext site'sENTERICH_HOSTThe listen addressENTERICH_PORTThe listen portENTERICH_LOG_LEVELThe level for libraries' log lines: DEBUG, INFO, WARNING or ERROR本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
ghcr.io/interlusion/enterich:0.5.0Streamable HTTP工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍

Enterich
一个用于 ERPNext 的 MCP 服务,设有严格限制:工具列表短小且固定,令牌来自外部 OAuth 授权服务器,并且只能使用一个 ERPNext 用户的权限。
状态: 每项操作都经过 ERPNext v16 API 模型测试,并且每周都会在真实的 ERPNext v16 站点上测试。更新日志列出了各版本的发布记录。
它是什么
- 一项独立服务,而非 Frappe 应用。它使用专用 Agent 用户的 API 密钥调用 ERPNext 的 REST API,不持有其他 ERPNext 凭据。无论服务执行什么操作,都受限于 ERPNext 为该用户设置的角色权限。
- MCP 授权规范的资源服务器。 它提供受保护资源元数据,在缺少令牌时返回 401,并自行检查每个访问令牌(颁发者、受众、客户端、主体)。登录由外部授权服务器(例如 Keycloak)处理。
- 固定的操作列表,每项操作都有自己的用途和输入架构,读写分离。不提供通用文档访问、方法调用或文件访问。
- 不依赖特定客户端。 它使用纯 MCP(Streamable HTTP),也不依赖任何客户端在写入前征求许可。
它不是什么
- 不是通用 ERPNext API 桥接工具:不支持以 DocType、报表名称、方法名称、字段列表、筛选表达式或文件路径作为输入的工具。
- 不是提交单据的方式:没有工具会提交、取消、修改、删除或丢弃单据。Agent 只准备草稿;由人员在 ERPNext 中审核并提交(审核草稿)。
- 与 Frappe Technologies 无关联,也未获其认可。ERPNext 和 Frappe 是该公司的商标。
工具
Enterich 提供 37 个工具。部署可以提供更少的工具(ENTERICH_TOOLS);每个工具都只处理一家公司的数据,并受限于 ERPNext 授予 Agent 用户的权限。
主数据(REQ-003)
物料。
| 工具 | 标题 | 类型 |
|---|---|---|
list_items | 列出物料 | 读取 |
get_item | 获取物料 | 读取 |
订单到收款(REQ-004)
客户、销售发票、应收账款。
| 工具 | 标题 | 类型 |
|---|---|---|
list_customers | 列出客户 | 读取 |
get_customer | 获取客户 | 读取 |
list_sales_invoices | 列出销售发票 | 读取 |
get_sales_invoice | 获取销售发票 | 读取 |
list_sales_tax_templates | 列出销售税模板 | 读取 |
report_accounts_receivable | 应收账款 | 读取 |
create_draft_sales_invoice | 创建销售发票草稿 | 创建草稿 |
update_draft_sales_invoice | 更新销售发票草稿 | 更新草稿 |
create_draft_sales_return | 创建销售退货草稿 | 创建草稿 |
update_draft_sales_return | 更新销售退货草稿 | 更新草稿 |
采购到付款(REQ-005)
供应商、采购发票、应付账款。
| 工具 | 标题 | 类型 |
|---|---|---|
list_suppliers | 列出供应商 | 读取 |
get_supplier | 获取供应商 | 读取 |
list_purchase_invoices | 列出采购发票 | 读取 |
get_purchase_invoice | 获取采购发票 | 读取 |
list_purchase_tax_templates | 列出采购税模板 | 读取 |
report_accounts_payable | 应付账款 | 读取 |
create_draft_purchase_invoice | 创建采购发票草稿 | 创建草稿 |
update_draft_purchase_invoice | 更新采购发票草稿 | 更新草稿 |
create_draft_purchase_return | 创建采购退货草稿 | 创建草稿 |
update_draft_purchase_return | 更新采购退货草稿 | 更新草稿 |
记录到报表(REQ-006)
科目、成本中心、日记账分录、总账、试算平衡表。
| 工具 | 标题 | 类型 |
|---|---|---|
list_accounts | 列出科目 | 读取 |
list_cost_centers | 列出成本中心 | 读取 |
list_journal_entries | 列出日记账分录 | 读取 |
get_journal_entry | 获取日记账分录 | 读取 |
report_general_ledger | 总账 | 读取 |
report_trial_balance | 试算平衡表 | 读取 |
create_draft_journal_entry | 创建日记账分录草稿 | 创建草稿 |
update_draft_journal_entry | 更新日记账分录草稿 | 更新草稿 |
银行与现金(REQ-007)
银行账户、银行交易、付款。
| 工具 | 标题 | 类型 |
|---|---|---|
list_bank_accounts | 列出银行账户 | 读取 |
list_bank_transactions | 列出银行交易 | 读取 |
get_bank_transaction | 获取银行交易 | 读取 |
list_payment_entries | 列出付款分录 | 读取 |
get_payment_entry | 获取付款分录 | 读取 |
create_draft_payment_entry | 创建付款分录草稿 | 创建草稿 |
update_draft_payment_entry | 更新付款分录草稿 | 更新草稿 |
范围
Enterich 供我们自用并由我们维护。欢迎贡献(贡献指南);但不承诺提供支持。请按照安全政策中的说明,私下报告漏洞。
文档
从 docs/README.md 开始。最重要的内容包括:
许可证
Apache-2.0。原因:ADR-006。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。