M

MCP-to-Odoo 工具

@Willval117/mcp-to-odoo
0 Stars 35 次浏览 Willval117 更新于 2026-08-23

一种与Odoo ERP系统集成的实现,通过模型上下文协议使人工智能助手能够与Odoo的数据和功能进行交互。

MCP 服务配置

复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用

{
  "mcpServers": {
    "odoo": {
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "ODOO_URL",
        "-e",
        "ODOO_DB",
        "-e",
        "ODOO_USERNAME",
        "-e",
        "ODOO_PASSWORD",
        "mcp/odoo"
      ],
      "command": "docker",
      "env": {
        "ODOO_DB": "your-database-name",
        "ODOO_PASSWORD": "your-password-or-api-key",
        "ODOO_URL": "https://your-odoo-instance.com",
        "ODOO_USERNAME": "your-username"
      }
    }
  }
}

该服务需要配置环境变量:HTTP_PROXY、ODOO_DB、ODOO_PASSWORD、ODOO_TIMEOUT、ODOO_URL、ODOO_USERNAME、ODOO_VERIFY_SSL

服务介绍

Odoo MCP 服务器

一个与Odoo ERP系统集成的MCP服务器实现,通过模型上下文协议(Model Context Protocol)使AI助手能够与Odoo数据和功能进行交互。

特性

  • 全面的Odoo集成:完全访问Odoo模型、记录和方法
  • XML-RPC通信:通过XML-RPC安全连接到Odoo实例
  • 灵活配置:支持配置文件和环境变量
  • 资源模式系统:基于URI访问Odoo数据结构
  • 错误处理:针对常见的Odoo API问题提供清晰的错误信息
  • 无状态操作:干净的请求/响应周期以确保可靠的集成

工具

...

请注意,原文中的“Tools”部分没有具体内容,因此在翻译版本中也保留为空。如果有更多的工具或具体细节需要添加,请提供相关信息。

  • search_records

    • 在任何 Odoo 模型中搜索记录
    • 输入:
      • model (字符串):模型名称(例如,'res.partner')
      • domain (数组):搜索域(例如,[['is_company', '=', true]])
      • fields (可选数组):要获取的可选字段
      • limit (可选数字):返回的最大记录数
    • 返回:带有请求字段的匹配记录
  • read_record

    • 读取特定记录的详细信息
    • 输入:
      • model (字符串):模型名称(例如,'res.partner')
      • id (数字):记录 ID
      • fields (可选数组):要获取的可选字段
    • 返回:带有请求字段的记录数据
  • create_record

    • 在 Odoo 中创建新记录
    • 输入:
      • model (字符串):模型名称(例如,'res.partner')
      • values (对象):字段值字典
    • 返回:包含新记录 ID 的字典
  • update_record

    • 更新现有记录
    • 输入:
      • model (字符串):模型名称(例如,'res.partner')
      • id (数字):记录 ID
      • values (对象):要更新的字段值字典
    • 返回:指示成功的字典
  • delete_record

    • 从 Odoo 中删除记录
    • 输入:
      • model (字符串):模型名称(例如,'res.partner')
      • id (数字):记录 ID
    • 返回:指示成功的字典
  • execute_method

    • 在 Odoo 模型上执行自定义方法
    • 输入:
      • model (字符串):模型名称(例如,'res.partner')
      • method (字符串):要执行的方法名称
      • args (可选数组):位置参数
      • kwargs (可选对象):关键字参数
    • 返回:包含方法结果的字典
  • get_model_fields

    • 获取模型的字段定义
    • 输入:
      • model (字符串):模型名称(例如,'res.partner')
    • 返回:包含字段定义的字典
  • search_employee

    • 根据姓名搜索员工。
    • 输入:
      • name (字符串):要搜索的姓名(或部分姓名)。
      • limit (可选数字):返回的最大结果数量(默认为20)。
    • 返回:匹配的员工姓名和ID列表。
  • search_holidays

    • 在指定日期范围内搜索假期。
    • 输入:
      • start_date (字符串):开始日期,格式为YYYY-MM-DD。
      • end_date (字符串):结束日期,格式为YYYY-MM-DD。
      • employee_id (可选数字):用于筛选假期的可选员工ID。
    • 返回:找到的假期列表。

资源

## 资源
  • odoo://models

    • 列出 Odoo 系统中所有可用的模型
    • 返回:包含模型信息的 JSON 数组
  • odoo://model/{model_name}

    • 获取特定模型的信息,包括字段
    • 示例:odoo://model/res.partner
    • 返回:包含模型元数据和字段定义的 JSON 对象
  • odoo://record/{model_name}/{record_id}

    • 通过 ID 获取特定记录
    • 示例:odoo://record/res.partner/1
    • 返回:包含记录数据的 JSON 对象
  • odoo://search/{model_name}/{domain}

    • 搜索匹配某个域的记录
    • 示例:odoo://search/res.partner/[["is_company","=",true]]
    • 返回:匹配记录的 JSON 数组(默认限制为 10 条)

配置

Odoo 连接设置

  1. 创建一个名为 odoo_config.json 的配置文件:
{
  "url": "https://your-odoo-instance.com",
  "db": "your-database-name",
  "username": "your-username",
  "password": "your-password-or-api-key"
}
  1. 或者,使用环境变量:
    • ODOO_URL: 你的 Odoo 服务器 URL
    • ODOO_DB: 数据库名称
    • ODOO_USERNAME: 登录用户名
    • ODOO_PASSWORD: 密码或 API 密钥
    • ODOO_TIMEOUT: 连接超时时间(秒,默认 30 秒)
    • ODOO_VERIFY_SSL: 是否验证 SSL 证书(默认 true)
    • HTTP_PROXY: 强制 Odoo 连接使用 HTTP 代理

与 Claude Desktop 一起使用

在你的 claude_desktop_config.json 中添加以下内容:

{
  "mcpServers": {
    "odoo": {
      "command": "python",
      "args": [
        "-m",
        "odoo_mcp"
      ],
      "env": {
        "ODOO_URL": "https://your-odoo-instance.com",
        "ODOO_DB": "your-database-name",
        "ODOO_USERNAME": "your-username",
        "ODOO_PASSWORD": "your-password-or-api-key"
      }
    }
  }
}

Docker

{
  "mcpServers": {
    "odoo": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "ODOO_URL",
        "-e",
        "ODOO_DB",
        "-e",
        "ODOO_USERNAME",
        "-e",
        "ODOO_PASSWORD",
        "mcp/odoo"
      ],
      "env": {
        "ODOO_URL": "https://your-odoo-instance.com",
        "ODOO_DB": "your-database-name",
        "ODOO_USERNAME": "your-username",
        "ODOO_PASSWORD": "your-password-or-api-key"
      }
    }
  }
}

安装

Python 包

pip install odoo-mcp

运行服务器

# Using the installed package
odoo-mcp

# Using the MCP development tools
mcp dev odoo_mcp/server.py

# With additional dependencies
mcp dev odoo_mcp/server.py --with pandas --with numpy

# Mount local code for development
mcp dev odoo_mcp/server.py --with-editable .

构建

Docker 构建:

docker build -t mcp/odoo:latest -f Dockerfile .

参数格式指南

在使用 MCP 工具进行 Odoo 操作时,请注意这些参数格式指南:

  1. 域参数

    • 支持以下域格式:
      • 列表格式:[["field", "operator", value], ...]
      • 对象格式:{"conditions": [{"field": "...", "operator": "...", "value": "..."}]}
      • 任意格式的 JSON 字符串
    • 示例:
      • 列表格式:[["is_company", "=", true]]
      • 对象格式:{"conditions": [{"field": "date_order", "operator": ">=", "value": "2025-03-01"}]}
      • 多个条件:[["date_order", ">=", "2025-03-01"], ["date_order", "<=", "2025-03-31"]]
  2. 字段参数

    • 应该是一个字段名称数组:["name", "email", "phone"]
    • 服务器将尝试将字符串输入解析为 JSON

许可证

此 MCP 服务器采用 MIT 许可证。