MCP-to-Odoo 工具
一种与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(数字):记录 IDfields(可选数组):要获取的可选字段
- 返回:带有请求字段的记录数据
-
create_record
- 在 Odoo 中创建新记录
- 输入:
model(字符串):模型名称(例如,'res.partner')values(对象):字段值字典
- 返回:包含新记录 ID 的字典
-
update_record
- 更新现有记录
- 输入:
model(字符串):模型名称(例如,'res.partner')id(数字):记录 IDvalues(对象):要更新的字段值字典
- 返回:指示成功的字典
-
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 连接设置
- 创建一个名为
odoo_config.json的配置文件:
{
"url": "https://your-odoo-instance.com",
"db": "your-database-name",
"username": "your-username",
"password": "your-password-or-api-key"
}
- 或者,使用环境变量:
ODOO_URL: 你的 Odoo 服务器 URLODOO_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 操作时,请注意这些参数格式指南:
-
域参数:
- 支持以下域格式:
- 列表格式:
[["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"]]
- 列表格式:
- 支持以下域格式:
-
字段参数:
- 应该是一个字段名称数组:
["name", "email", "phone"] - 服务器将尝试将字符串输入解析为 JSON
- 应该是一个字段名称数组:
许可证
此 MCP 服务器采用 MIT 许可证。