odoo快速mcp
使用Odoo RPC的Odoo 16+模型上下文协议(MCP)服务器。该服务器使AI助手能够通过标准化的界面与Odoo ERP系统进行交互。
特性🚀
- 完整的CRUD操作:在任何Odoo模型中创建、读取、更新、删除记录
- 连接管理:连接到多个数据库,从配置自动连接
- 模型反思:发现模型和字段定义
- 方法执行:调用任何Odoo模型方法(工作流操作、自定义方法)
- 报告生成:生成并下载Odoo报告(PDF)
- MCP资源:访问连接状态和型号信息作为MCP资源
用法📚
如果您下载了此仓库,您可以通过添加以下配置来配置MCP客户端(例如VSCode)以使用服务器:
"odoo": {
"type": "stdio",
"command": "uvx",
"args": [
"--from",
".",
"odoo-fast-mcp"
],
"envFile": "${workspaceFolder}/.env"
},在其他项目中,您可以这样使用它:
"odoo": {
"type": "stdio",
"command": "uvx",
"args": [
"--from",
"git+https://github.com/okolovmark/odoo-fast-mcp",
"odoo-fast-mcp"
],
"envFile": "${workspaceFolder}/.env"
},可用工具🛠️
连接工具
| 工具 | 说明 |
|---|---|
connect | 连接并验证到Odoo服务器 |
disconnect | 断开与当前会话的连接 |
list_databases | 列出Odoo服务器上的可用数据库 |
get_server_version | 获取连接的Odoo服务器的版本 |
get_connection_status | 获取当前连接状态和用户信息 |
读取操作
| 工具 | 说明 |
|---|---|
search | 搜索与域筛选器匹配的记录ID |
read | 按ID读取特定记录 |
search_read | 在一次操作中搜索和读取记录(推荐) |
search_count | 统计与域匹配的记录 |
name_search | 通过模糊匹配按名称搜索记录 |
写入操作
| 工具 | 说明 |
|---|---|
create | 在模型中创建新记录 |
write | 更新现有记录 |
unlink | 删除记录(破坏性) |
元数据工具
| 工具 | 说明 |
|---|---|
get_model_fields | 获取模型的字段定义 |
list_models | 列出Odoo实例中的所有可用型号 |
先进工具
| 工具 | 说明 |
|---|---|
execute | 在Odoo模型上执行任何方法 |
get_report | 生成Odoo报告并将其保存为PDF |
配置⚙️
创建一个 .env 文件中包含您的Odoo连接详细信息:
# Copy the example file
cp .env.example .env
# Edit with your settings
ODOO_URL=http://localhost:8069
ODOO_DATABASE=your_database
ODOO_USERNAME=admin
ODOO_PASSWORD=admin
ODOO_TIMEOUT=30服务器将在启动时使用这些凭据自动连接。
您还可以直接将这些设置为环境变量,而无需 .env 文件。
域语法📝
Odoo域是用于过滤记录的条件列表:
# Basic syntax
[["field", "operator", "value"]]
# Common operators
=, !=, >, >=, :
/mcp`.
您还可以通过环境变量配置传输 `.env` 文件:
MCP_TRANSPORT=http MCP_HOST=0.0.0.0 MCP_PORT=8000
> **注:** CLI参数优先于环境变量,环境变量优先于默认值。
### 苏格兰和南方能源公司运输(传统)
odoo-fast-mcp --transport sse --port 8000
### 从MCP客户端连接(HTTP模式)
使用HTTP传输时,将MCP客户端配置为通过URL而不是stdio连接:
"odoo": { "type": "http", "url": "http://localhost:8000/mcp" }
## 已知限制⚠️
### 报告下载(get_Report)
由于Odoo 16+中的CSRF保护 `get_report` 该工具无法直接下载报告。当被调用时,它将:
1. 验证报告是否存在于Odoo中
1. 返回报告元数据(名称、报告名称、型号)
1. 举起一个 `NotImplementedError` 在指导下
**解决方法:**
- 使用Odoo web界面手动下载报告
- 在Odoo中设置计划操作,以生成报告并将其存储为附件
- 使用 `search_read` 工具打开 `ir.attachment` 检索存储的报告附件
______________________________________________________________________
如果您想要不同的工作流(例如,使用系统站点包或自定义提示),请运行 `uv help venv` 更多选择。