mcpField
E
Enterich

Enterich

本地服务
github.com金融数据01 天前更新

关于 Enterich

Enterich 是面向 ERPNext 会计操作的 MCP 服务,通过外部 OAuth 授权,并将权限限制在专用用户范围内。它提供固定且区分读写的工具,只能创建或更新草稿,提交由人员在 ERPNext 中完成。

主要功能

  1. 01固定范围的会计工具
  2. 02读操作与写操作分离
  3. 03仅创建和更新单据草稿
  4. 04遵循 ERPNext 专用用户权限
  5. 05通过外部授权服务器验证令牌

适用场景

  1. 01查询发票、账户和银行记录
  2. 02生成应收、应付与总账报告
  3. 03准备供人员审核的会计草稿

MCP 相关

Enterich 通过 Streamable HTTP 提供 MCP 服务,供客户端调用固定的 ERPNext 会计工具。它实现 MCP 授权规范的受保护资源验证,并检查每个访问令牌。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"dev-interlusion-enterich": {
"command": "docker",
"args": [
"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.0"
],
"env": {
"ENTERICH_RESOURCE_URL": "<ENTERICH_RESOURCE_URL>",
"ENTERICH_ISSUER": "<ENTERICH_ISSUER>",
"ENTERICH_JWKS_URL": "<ENTERICH_JWKS_URL>",
"ENTERICH_CLIENT_ID": "<ENTERICH_CLIENT_ID>",
"ENTERICH_SUBJECT": "<ENTERICH_SUBJECT>",
"ENTERICH_REQUIRED_SCOPES": "<ENTERICH_REQUIRED_SCOPES>",
"ENTERICH_TOKEN_ALGORITHMS": "<ENTERICH_TOKEN_ALGORITHMS>",
"ENTERICH_CLOCK_LEEWAY": "<ENTERICH_CLOCK_LEEWAY>",
"ENTERICH_ERPNEXT_URL": "<ENTERICH_ERPNEXT_URL>",
"ENTERICH_ERPNEXT_HOST": "<ENTERICH_ERPNEXT_HOST>",
"ENTERICH_ERPNEXT_PUBLIC_URL": "<ENTERICH_ERPNEXT_PUBLIC_URL>",
"ENTERICH_ERPNEXT_API_KEY": "<ENTERICH_ERPNEXT_API_KEY>",
"ENTERICH_ERPNEXT_API_SECRET": "<ENTERICH_ERPNEXT_API_SECRET>",
"ENTERICH_COMPANY": "<ENTERICH_COMPANY>",
"ENTERICH_TOOLS": "<ENTERICH_TOOLS>",
"ENTERICH_MAX_DRAFTS_PER_HOUR": "<ENTERICH_MAX_DRAFTS_PER_HOUR>",
"ENTERICH_TIMEZONE": "<ENTERICH_TIMEZONE>",
"ENTERICH_HOST": "<ENTERICH_HOST>",
"ENTERICH_PORT": "<ENTERICH_PORT>",
"ENTERICH_LOG_LEVEL": "<ENTERICH_LOG_LEVEL>"
}
}
}
}
启动命令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.0
需要配置的环境变量
ENTERICH_RESOURCE_URLThe MCP endpoint exactly as clients enter it, https; its path is the one served
ENTERICH_ISSUERThe authorization server's issuer, https
ENTERICH_JWKS_URLThe authorization server's signing keys, https
ENTERICH_CLIENT_IDThe OAuth client the agent's tokens are issued to
ENTERICH_SUBJECTThe agent identity's sub
ENTERICH_REQUIRED_SCOPESScopes required in the token, space-separated
ENTERICH_TOKEN_ALGORITHMS密钥Token signing algorithms accepted, comma-separated
ENTERICH_CLOCK_LEEWAYSeconds of clock leeway for token times, 0 to 60
ENTERICH_ERPNEXT_URLThe base URL Enterich calls ERPNext at
ENTERICH_ERPNEXT_HOSTThe Host header sent to ERPNext, by default the URL's host
ENTERICH_ERPNEXT_PUBLIC_URLThe base URL people open ERPNext at, for links in results
ENTERICH_ERPNEXT_API_KEY密钥The ERPNext agent user's API key
ENTERICH_ERPNEXT_API_SECRET密钥The ERPNext agent user's API secret
ENTERICH_COMPANYThe assigned company, exactly as named in ERPNext
ENTERICH_TOOLSThe operations to offer, comma-separated; by default all
ENTERICH_MAX_DRAFTS_PER_HOURMost drafts of each type the agent may create in an hour; unset, no limit
ENTERICH_TIMEZONEIANA time zone for today's date, the ERPNext site's
ENTERICH_HOSTThe listen address
ENTERICH_PORTThe listen port
ENTERICH_LOG_LEVELThe level for libraries' log lines: DEBUG, INFO, WARNING or ERROR

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocighcr.io/interlusion/enterich:0.5.0

工具

还没有获取到工具列表

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

详细介绍

Enterich 的标志:一只戴着帽子、手持麦克风并带有 MCP 链条的雄鸭

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。

评论

支持 Markdown

第一次接触 MCP?

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

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