mcpField
O
odoo

odoo

リモート
odooconsole.comビジネス・マーケティング524 週間前に更新
リポジトリ公式サイト

odoo について

odoo は、AI エージェントから Odoo ERP のレコードや設定を扱うための MCP サーバーです。Odoo 17~18 と 19 以降の API に対応し、安全な閲覧向けの読み取り専用モードも備えています。

主な機能

  1. 01レコードの検索、件数取得、エクスポート
  2. 02レコードの作成、更新、削除
  3. 03Odoo モデルメソッドの実行
  4. 04モデル、フィールド、ビューの確認
  5. 05デフォルト値とウィンドウアクションの変更
  6. 06インスタンスの状態診断

活用シーン

  1. 01販売注文や連絡先の確認
  2. 02表計算用の商品レコードの出力
  3. 03必須フィールドやモデルビューの確認
  4. 04本番データの読み取り専用閲覧

MCP 対応

stdio 経由で、Odoo のデータ、モデル探索、設定、診断ツールを MCP クライアントに公開します。認証済み接続を維持し、読み取り専用モードでは書き込み操作を無効にできます。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://mcp.odooconsole.com/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

ツール

詳細

Odoo MCP Server

AI エージェントを Odoo ERP インスタンスに接続する MCP(Model Context Protocol) サーバーです。Claude Code、Cursor、Windsurf、および MCP 対応のあらゆるクライアントで使用できます。

Odoo 17-18(JSON-RPC)と Odoo 19+(JSON-2 API)に対応し、最適なプロトコルを自動検出します。

Odoo MCP Server の概要

クイックスタート

# 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

仮想環境や pip install は不要です。このスクリプトには インラインメタデータ が含まれており、uv が自動的に解決します。

Claude Code で設定する

プロジェクトの .mcp.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"
      }
    }
  }
}

または、API キー認証を使用する Odoo 19+ の場合:

{
  "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"
      }
    }
  }
}

Cursor / Windsurf で設定する

~/.cursor/mcp.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"
      }
    }
  }
}

環境変数

変数必須説明
ODOO_URLはいOdoo インスタンスの URL
ODOO_DBはいデータベース名
ODOO_USERはいログインユーザー名
ODOO_PASSWORDいずれか一方パスワード(Odoo 17-18)
ODOO_API_KEY必須API キー(Odoo 19+、推奨)
ODOO_READONLYいいえtrue に設定すると、すべての書き込み操作が無効になります
読み取り専用モード

ODOO_READONLY=true に設定すると、create、update、delete、および execute ツールが無効になります。本番インスタンスを安全に閲覧する場合に便利です。

{
  "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"
      }
    }
  }
}

利用可能なツール

基本的な CRUD
ツール説明
odoo_search_readドメインフィルター、フィールド選択、ページネーションを使ってレコードを検索
odoo_search_countデータを取得せずに一致するレコード数をカウント
odoo_exportスプレッドシート用に、1 回の呼び出しで最大 2000 件のレコードを一括エクスポート
odoo_create新しいレコードを作成
odoo_updateID を指定して既存のレコードを更新
odoo_deleteID を指定してレコードを削除
odoo_execute任意のモデルメソッドを実行(action_confirm、action_post など)
検出
ツール説明
odoo_list_modelsキーワードフィルターを使って利用可能なモデルを検出
odoo_get_fields任意のモデルのフィールド定義を確認
odoo_doctorヘルス診断(バージョン、モジュール、ユーザー、cron、エラー)
odoo_connection_info現在の接続情報を表示
モデルのカスタマイズ
ツール説明
odoo_model_infoフィールド、ビュー、アクション、デフォルト値、並び順など、モデルの包括的なメタデータを 1 回の呼び出しで取得
odoo_set_defaultフィールドのデフォルト値を設定、更新、またはクリア(ir.default と JSON エンコーディングに対応)
odoo_get_view完全にレンダリングされた(マージ済みの)フォーム/ツリー/検索ビュー XML を取得
odoo_modify_actionウィンドウアクションのドメイン、コンテキスト、並び順、上限、またはビューのモードを変更

使用例

設定したら、AI エージェントに次のように依頼します。

  • 「今月のすべての販売注文を一覧表示して」
  • 「res.partner のフィールドを表示して」
  • 「Acme Corp という名前の新しい連絡先を作成して」
  • 「Odoo インスタンスのヘルスチェックを実行して」
  • 「すべての商品をスプレッドシートにエクスポートして」
  • 「販売注文 42 を確定して」
モデルカスタマイズの例
  • 「sale.order のデフォルトの並び順は?」
  • 「商品のデフォルトの請求ポリシーを 'delivery' に変更して」
  • 「res.partner のフォームビューを表示して」
  • 「account.move にはどのようなウィンドウアクションがある?デフォルトの並び順を date desc に変更して」
  • 「res.partner のカスタムフィールドをすべて一覧表示して」
  • 「sale.order で必須のフィールドは?」

モデルカスタマイズツール — 詳細リファレンス

odoo_model_info

1 回の呼び出しですべてのモデル情報を返すため、複数回の調査クエリが不要になります。

odoo_model_info(model="sale.order")

返される情報:

  • default_order — モデルの _order 属性(例:"date_order desc, id desc")
  • rec_name — ドロップダウンで表示名に使用されるフィールド
  • field_count — フィールドの総数
  • fields_by_type — 型ごとに分類したフィールド数(many2one: 12, char: 8, ...)
  • custom_fields — ユーザーが作成したフィールド(x_ プレフィックスまたは state=manual)
  • relational_fields — 対象を含む、すべての Many2one、One2many、Many2many
  • required_fields — 入力必須のフィールド
  • views — ID と優先度を含むベースビュー(form、tree、search)
  • actions — ドメイン、コンテキスト、ビューのモードを含むウィンドウアクション
  • defaults — このモデルのフィールドに設定されている現在の ir.default 値
odoo_set_default

適切な JSON エンコードを行い、ir.default を使ってフィールドのデフォルト値を管理します。手動で設定する際に、エージェントが最もよくエラーを起こす原因です。

# Set global default
odoo_set_default(model="product.template", field_name="invoice_policy", value="delivery")

# Set user-specific default
odoo_set_default(model="sale.order", field_name="warehouse_id", value=2, user_id=5)

# Remove a default
odoo_set_default(model="product.template", field_name="invoice_policy", value=null)

このツールは以下を行います。

  1. ir.model.fields から field_id を検索します(フィールドが存在することを検証します)
  2. 値を自動的に JSON エンコードします
  3. ir.default レコードを作成または更新します
  4. 確認のため、変更前と変更後の値を返します
odoo_get_view

継承がすべて適用された、完全にレンダリング済みのビュー XML を返します。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")

返される情報:

  • arch — 結合後の完全な XML
  • view_id — ベースビューの ID
  • fields_in_view — ビューに含まれるフィールド名の一覧
odoo_modify_action

ウィンドウアクション(ir.actions.act_window)を変更して、モデルが UI 上でどのように表示されるかを変更します。

# List actions for a model (read-only)
odoo_modify_action(model="sale.order")

# Change default sort order
odoo_modify_action(action_id=42, order="date_order desc")

# Change default filter and page size
odoo_modify_action(action_id=42, domain="[['state','=','sale']]", limit=200)

# Add default grouping via context
odoo_modify_action(action_id=42, context="{'group_by': 'partner_id'}")

このツールは変更前と変更後の値を返すため、変更内容を確認できます。

仕組み

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

サーバーは起動時に一度だけ認証を行い、永続的な接続を維持します。すべてのツールが同じ認証済みセッションを使用します。

要件

  • Python 3.11+
  • uv(推奨)、または pip install fastmcp httpx

ライセンス

MIT

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。