Odoo

com.odooconsole由 odooconsole.com 发布官方发布者v1.1.0更新于 Oct 24, 2026

Odoo ERP for AI agents: hosted OAuth endpoint, gated writes, one endpoint for every instance.

已验证Streamable HTTP可网页运行数据库效率与工作流商业与电商

概览

AI 生成的概览

托管的 Odoo ERP 连接器,让 AI 助手查询、创建、更新和删除 Odoo 记录,并查看模型与视图。

可以做什么
按条件筛选、计数和批量导出记录,并按 ID 创建、更新或删除记录,或对记录执行确认、过账等模型方法。发现可用模型,查看字段定义、默认值、视图和窗口动作,并可修改字段默认值或动作设置。对实例做健康诊断,并显示当前连接信息。
适用场景
适合需要让助手直接操作 Odoo ERP 实例的场景:查询销售订单、联系人、产品,导出数据,创建或修改记录,或查看和调整模型配置。只读模式适合安全地浏览生产实例。
运行要求
远程 OAuth 认证端点,或在本地用 Python 3.11+ 与 uv(或 fastmcp、httpx)运行脚本。需要提供 Odoo 实例地址、数据库名和用户名,以及密码或 API 密钥,均通过环境变量传入。
安装前请注意
写入工具可创建、更新、删除记录并执行任意模型方法,定制工具会修改字段默认值和窗口动作;可开启只读模式禁用写入。服务器持有 Odoo 凭据和已认证会话,请谨慎限定账号权限,尤其是在生产数据库上。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Odoo,将其添加到工作区。
  2. 连接 所需的 凭据。它们会被私密存储,绝不会在公开页面上展示。
  3. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/com.odooconsole%2Fodoo/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。 客户端会在首次连接时完成 OAuth 登录。

{
  "mcpServers": {
    "odoo": {
      "type": "http",
      "url": "https://mcp.odooconsole.com/mcp"
    }
  }
}

README

Odoo MCP Server

An MCP (Model Context Protocol) server that connects AI agents to Odoo ERP instances. Works with Claude Code, Cursor, Windsurf, and any MCP-compatible client.

Supports Odoo 17-18 (JSON-RPC) and Odoo 19+ (JSON-2 API) — auto-detects the best protocol.

[Odoo MCP Server Overview]

Quick Start

bash
# Run directly (uv handles dependencies automatically)ODOO_URL=https://my.odoo.com ODOO_DB=mydb ODOO_USER=admin ODOO_PASSWORD=secret \  uv run odoo_mcp_server.py

No virtualenv or pip install needed — the script has inline metadata that uv resolves automatically.

Configure in Claude Code

Add to your project's .mcp.json:

json
{  "mcpServers": {    "odoo": {      "type": "stdio",      "command": "uv",      "args": ["run", "--python", "3.11", "--script", "/path/to/odoo_mcp_server.py"],      "env": {        "ODOO_URL": "https://your-instance.odoo.com",        "ODOO_DB": "your-database",        "ODOO_USER": "admin",        "ODOO_PASSWORD": "your-password"      }    }  }}

Or for Odoo 19+ with API key auth:

json
{  "mcpServers": {    "odoo": {      "type": "stdio",      "command": "uv",      "args": ["run", "--python", "3.11", "--script", "/path/to/odoo_mcp_server.py"],      "env": {        "ODOO_URL": "https://your-instance.odoo.com",        "ODOO_DB": "your-database",        "ODOO_USER": "admin",        "ODOO_API_KEY": "your-api-key"      }    }  }}

Configure in Cursor / Windsurf

Add to ~/.cursor/mcp.json or equivalent:

json
{  "mcpServers": {    "odoo": {      "command": "uv",      "args": ["run", "--python", "3.11", "--script", "/path/to/odoo_mcp_server.py"],      "env": {        "ODOO_URL": "https://your-instance.odoo.com",        "ODOO_DB": "your-database",        "ODOO_USER": "admin",        "ODOO_PASSWORD": "your-password"      }    }  }}

Environment Variables

VariableRequiredDescription
ODOO_URLYesOdoo instance URL
ODOO_DBYesDatabase name
ODOO_USERYesLogin username
ODOO_PASSWORDOne of thesePassword (Odoo 17-18)
ODOO_API_KEYrequiredAPI key (Odoo 19+, preferred)
ODOO_READONLYNoSet to true to disable all write operations

Read-Only Mode

Set ODOO_READONLY=true to disable create, update, delete, and execute tools. Useful for safe browsing of production instances:

json
{  "mcpServers": {    "odoo": {      "type": "stdio",      "command": "uv",      "args": ["run", "--python", "3.11", "--script", "/path/to/odoo_mcp_server.py"],      "env": {        "ODOO_URL": "https://production.odoo.com",        "ODOO_DB": "prod",        "ODOO_USER": "readonly-user",        "ODOO_PASSWORD": "secret",        "ODOO_READONLY": "true"      }    }  }}

Available Tools

Core CRUD

ToolDescription
odoo_search_readQuery records with domain filters, field selection, pagination
odoo_search_countCount matching records without fetching data
odoo_exportBulk export up to 2000 records per call for spreadsheets
odoo_createCreate new records
odoo_updateUpdate existing records by ID
odoo_deleteDelete records by ID
odoo_executeRun any model method (action_confirm, action_post, etc.)

Discovery

ToolDescription
odoo_list_modelsDiscover available models with keyword filter
odoo_get_fieldsInspect field definitions for any model
odoo_doctorHealth diagnostics (version, modules, users, crons, errors)
odoo_connection_infoShow current connection details

Model Customization

ToolDescription
odoo_model_infoGet comprehensive model metadata in one call — fields, views, actions, defaults, sort order
odoo_set_defaultSet, update, or clear a field's default value (handles ir.default + JSON encoding)
odoo_get_viewGet the fully rendered (merged) form/tree/search view XML
odoo_modify_actionChange a window action's domain, context, sort order, limit, or view modes

Example Usage

Once configured, ask your AI agent:

  • "List all sale orders from this month"
  • "Show me the fields on res.partner"
  • "Create a new contact named Acme Corp"
  • "Run a health check on the Odoo instance"
  • "Export all products to a spreadsheet"
  • "Confirm sale order 42"

Model Customization Examples

  • "What's the default sort order for sale.order?"
  • "Change the default invoice policy on products to 'delivery'"
  • "Show me the form view for res.partner"
  • "What window actions exist for account.move? Change the default sort to date desc"
  • "List all custom fields on res.partner"
  • "What fields are required on sale.order?"

Model Customization Tools — Detailed Reference

odoo_model_info

Returns everything about a model in one call, eliminating the need for multiple exploratory queries.

odoo_model_info(model="sale.order")

Returns:

  • default_order — the model's _order attribute (e.g. "date_order desc, id desc")
  • rec_name — the field used for display name in dropdowns
  • field_count — total number of fields
  • fields_by_type — field count grouped by type (many2one: 12, char: 8, ...)
  • custom_fields — user-created fields (x_ prefix or state=manual)
  • relational_fields — all Many2one, One2many, Many2many with their targets
  • required_fields — fields that must be filled
  • views — base views (form, tree, search) with IDs and priorities
  • actions — window actions with their domain, context, and view modes
  • defaults — current ir.default values set for this model's fields

odoo_set_default

Manages field defaults via ir.default with proper JSON encoding. The most common source of agent errors when done manually.

# Set global defaultodoo_set_default(model="product.template", field_name="invoice_policy", value="delivery")
# Set user-specific defaultodoo_set_default(model="sale.order", field_name="warehouse_id", value=2, user_id=5)
# Remove a defaultodoo_set_default(model="product.template", field_name="invoice_policy", value=null)

The tool:

  1. Finds the field_id in ir.model.fields (validates the field exists)
  2. JSON-encodes the value automatically
  3. Creates or updates the ir.default record
  4. Returns before/after values for confirmation

odoo_get_view

Returns the fully rendered view XML after all inheritance is applied — what the user actually sees, not the raw fragments stored in ir.ui.view.

odoo_get_view(model="sale.order", view_type="form")odoo_get_view(model="res.partner", view_type="tree")odoo_get_view(model="account.move", view_type="search")

Returns:

  • arch — the complete merged XML
  • view_id — the base view ID
  • fields_in_view — list of field names present in the view

odoo_modify_action

Changes how a model appears in the UI by modifying its window action (ir.actions.act_window).

# List actions for a model (read-only)odoo_modify_action(model="sale.order")
# Change default sort orderodoo_modify_action(action_id=42, order="date_order desc")
# Change default filter and page sizeodoo_modify_action(action_id=42, domain="[['state','=','sale']]", limit=200)
# Add default grouping via contextodoo_modify_action(action_id=42, context="{'group_by': 'partner_id'}")

The tool returns before/after values so you can verify what changed.

How It Works

AI Agent (Claude, Cursor, etc.)    ↕ MCP Protocol (stdio)Odoo MCP Server    ↕ JSON-RPC / JSON-2 APIOdoo Instance

The server authenticates once at startup and maintains a persistent connection. All tools use the same authenticated session.

Requirements

  • Python 3.11+
  • uv (recommended) or pip install fastmcp httpx

License

MIT

来源:README.md,提交 898089d

工具

0
该服务器需要登录,因此 SourceWeft 无法在没有账号的情况下读取其工具,也未收录。已连接账号所能看到的内容可能因账号及其权限而异。

版本历史

1
  1. v1.1.0最新Sep 16, 2026

评分

已满足适用检查项的 85%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分