Moqui MCP:企业中的人工智能代理
在真实的业务系统中为AI代理提供真正的工作。

这是什么
Moqui MCP将AI代理连接到 Moqui 框架,一个开源的ERP平台。通过MCP(模型上下文协议),代理可以浏览屏幕、填写表单、执行事务和查询数据,这些操作与人类通过web界面执行的操作相同。
这不是一个固定在ERP上的聊天机器人。它是可以直接访问业务运营的人工智能。
代理人可以做什么
- 浏览 完整的应用程序层次结构-目录、订单、各方、会计
- 搜索 具有完整查询功能的产品、客户、库存
- 创建 订单、发票、货物、当事人、产品
- 更新 价格、数量、状态、关系
- 执行 跨多个屏幕和服务的工作流
所有操作均遵循Moqui的安全模型。代理只看到他们的用户帐户允许的内容。
为什么是莫基?
ERP系统是企业的运营支柱。它们包括:
- 真实数据:实际库存水平、客户记录、财务交易
- 实际流程:订单兑现、采购支付、雇佣退休工作流程
- 实际约束:业务规则、审批链、合规要求
Moqui以开源软件的形式提供所有这些,具有独特的人工智能友好架构:
- 声明性屏幕:具有丰富语义元数据的XML定义
- 以服务为导向:UI和业务逻辑之间的清晰分离
- 人工制品安全:每个屏幕、服务和实体上的细粒度权限
- 可扩展:无需分叉即可添加AI特定的屏幕和服务
MARIA格式
企业屏幕是为具有视觉背景的人类构建的。AI代理需要结构化的语义。我们通过以下方式解决了这个问题 MARIA(MCP可访问富互联网应用程序) -基于W3C可访问性标准的JSON格式。
MARIA将Moqui屏幕转化为LLM自然理解的可访问性树:
{
"role": "document",
"name": "FindParty",
"children": [
{
"role": "form",
"name": "CreatePersonForm",
"children": [
{"role": "textbox", "name": "First Name", "required": true},
{"role": "textbox", "name": "Last Name", "required": true},
{"role": "combobox", "name": "Role", "options": 140},
{"role": "button", "name": "createPerson"}
]
},
{
"role": "grid",
"name": "PartyListForm",
"rowcount": 47,
"columns": ["ID", "Name", "Username", "Role"],
"children": [
{"role": "row", "name": "John Sales"},
{"role": "row", "name": "Jane Accountant"}
],
"moreRows": 45
}
]
}见解: 人工智能代理是一种新型的可访问性挑战用户。 他们看不到像素或解释视觉布局——他们需要结构化的语义。这正是几十年前ARIA为屏幕阅读器解决的问题。但是ARIA没有JSON序列化,屏幕阅读器通过本地操作系统API而不是网络协议访问可访问性树。MARIA填补了这一空白:ARIA词汇表,序列化为JSON,通过MCP传输。
因为人类和代理通过相同的语义模型进行交互,所以它们可以用相同的术语相互解释动作。“我从订单状态下拉列表中选择了‘已发货’”意味着无论是人工还是代理都是一样的——不需要翻译层。
为什么集成MARIA胜过浏览器自动化
Playwright MCP等工具允许代理通过捕获屏幕截图和可访问性快照来控制浏览器。这是可行的,但对于企业系统来说,这是错误的抽象:
| 方面 | 编剧/浏览器 | 集成MARIA |
|---|---|---|
| 延迟 | 屏幕截图→ 视觉模型→ 操作 | 直接JSON-RPC往返 |
| 代币成本 | 图像+DOM快照燃烧令牌 | 仅语义有效载荷 |
| 国家访问权限 | 仅限于可见DOM | 完整的服务器端上下文 |
| 安全 | 浏览器会话=完全UI访问 | 细粒度工件授权 |
| 可靠性 | CSS更改中断选择器 | 稳定的语义契约 |
| 批量操作 | 一次单击一次 | 单次调用中的批量操作 |
MARIA直接从源代码提供可访问性树——无需浏览器渲染,无需视觉模型,无需DOM抓取。代理能够准确地获得所需的语义结构,而不会产生任何开销。
渲染模式
| 模式 | 输出 | 用例 |
|---|---|---|
aria | MARIA可访问性树 | 结构化代理交互 |
compact | 压缩JSON摘要 | 快速屏幕概述 |
mcp | 完整语义状态 | 完整元数据访问 |
text | 纯文本 | 简单查询 |
html | 标准HTML | 调试,人工审核 |
示例会话
Agent: moqui_browse_screens(path="PopCommerce/PopCommerceAdmin/Catalog/Product/FindProduct")
Server: {
"summary": "20 products. Forms: NewProductForm. Actions: createProduct",
"grids": {"ProductsForm": {"rowCount": 20, "columns": ["ID", "Name", "Type"]}},
"actions": {"createProduct": {"service": "create#mantle.product.Product"}}
}
Agent: I need to create a new product with variants.
moqui_browse_screens(
path="PopCommerce/PopCommerceAdmin/Catalog/Product/FindProduct",
action="createProduct",
parameters={"productName": "Widget Pro", "productTypeEnumId": "PtVirtual"}
)
Server: {
"result": {"status": "executed", "productId": "100042"},
"summary": "Product created. Navigate to EditProduct to add features."
}入门指南
# Clone with submodules
git clone --recursive https://github.com/moqui/moqui-mcp
# Build and load demo data
./gradlew load
# Start server
./gradlew run
# MCP endpoint: http://localhost:8080/mcpMCP工具
| 工具 | 目的 |
|---|---|
moqui_browse_screens | 浏览屏幕、执行操作、呈现内容 |
moqui_search_screens | 按名称查找屏幕 |
moqui_get_screen_details | 获取字段元数据,下拉选项 |
建筑
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ AI Agent │────▶│ MCP Servlet │────▶│ Moqui Screen │
│ │◀────│ (JSON-RPC 2.0) │◀────│ Framework │
└─────────────────┘ └──────────────────┘ └─────────────────┘
│
┌───────┴───────┐
▼ ▼
┌──────────────┐ ┌──────────────┐
│ MARIA │ │ Wiki Docs │
│ Transform │ │ (Guidance) │
└──────────────┘ └──────────────┘- MCP Servlet:JSON-RPC 2.0协议、会话管理、身份验证
- 屏幕框架:具有MCP输出模式的Moqui渲染引擎
- 玛丽亚转型:将语义状态转换为可访问性树格式
- Wiki文档:具有路径继承的屏幕特定说明
用例
自主操作
- 采购代理与供应商目录谈判
- 库存代理根据需求预测重新排序
- 定价代理实时调整利润率
辅助工作流程
- 具有完整订单历史访问权限的客户服务代理
- 销售代理根据实时定价生成报价
- 协调提货和发货的仓库代理
分析和报告
- 财务代理查询实际与预算
- 运营代理识别瓶颈
- 合规代理审核交易跟踪
安全
生产部署应:
- 为AI代理创建专用服务帐户
- 使用Moqui工件授权来限制权限
- 启用全面的审计日志记录
- 在敏感操作中考虑人工参与
- 从只读访问开始,逐步扩展
状态
这是一个积极的概念验证。工作:
- 屏幕浏览和发现
- 表单提交和动作执行
- MARIA/紧凑/MCP渲染模式
- 带有继承功能的Wiki文档
- 工件安全集成
路线图:
- 实体级查询(超出屏幕上下文)
- 服务直接调用
- 实时通知(ARIA实时区域)
- 多智能体协调模式
贡献
欢迎捐款:
- 测试覆盖率和边缘情况
- 其他ARIA角色映射
- 性能优化
- 文件和示例
- 其他MCP客户端的集成模式
许可证
CC0 1.0通用和专利许可授予下的公共领域,与Moqui框架一致。
