odoo-mcp について
odoo-mcpは、MCPクライアント経由で業務データを参照・操作したいチーム向けの、Odoo 18用stdio MCPサーバーです。入力検証付きの業務ツールに加え、情報参照リソースとアクセス制御を備えています。
主な機能
- 01レコードの検索・読み取り・作成・更新
- 02CRM・販売・会計・プロジェクト操作
- 03モデルスキーマとレコード要約の公開
- 04Pydanticによるツール引数の検証
- 05モデル制限と機密フィールドの保護
活用シーン
- 01顧客、注文、未払い請求書の検索
- 02販売注文、タスク、サポートチケットの作成
- 03Odooのフィールドやレコード情報の確認
MCP 対応
stdioでMCPクライアントに接続し、Odoo操作ツールとモデル、フィールド、レコード情報を参照するリソースを公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx odoo-18-mcp-serverODOO_URLURL of your Odoo instance (e.g., https://yourcompany.odoo.com)ODOO_DBName of your Odoo databaseODOO_USERNAMEOdoo username for authenticationODOO_PASSWORDシークレットOdoo password for authenticationODOO_MCP_DEFAULT_LIMITDefault limit for search results (default: 50)ODOO_MCP_MAX_LIMITMaximum limit for search results (default: 80)ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
OdooClaw MCP
stdio 経由で Odoo 18 を利用する、スタンドアロンの MCP(Model Context Protocol)サーバーです。
MCP 名: io.github.nicolasramos/odooclaw-mcp
PyPI パッケージ: odooclaw-mcp
公式 CLI: odooclaw-mcp
下位互換性のある別名もインストールされます。
odoo-mcpodoo-mcp-serverodoo-18-mcp-server
クイックスタート
1) インストール
pip install odooclaw-mcp
ソースからインストールする場合:
git clone https://github.com/nicolasramos/odooclaw-mcp.git
cd odooclaw-mcp
pip install -e .
2) 環境を設定する
cp .env.example .env
必須:
ODOO_URL=https://yourcompany.odoo.com
ODOO_DB=your_database
ODOO_USERNAME=your_username
ODOO_PASSWORD=your_password
任意:
ODOO_MCP_DEFAULT_LIMIT=50
ODOO_MCP_MAX_LIMIT=80
LOG_LEVEL=INFO
3) 検証して実行する
odooclaw-mcp --check-config
odooclaw-mcp
別の方法:
python -m odoo_mcp
MCP クライアントの設定(stdio)
{
"mcpServers": {
"odoo": {
"command": "odooclaw-mcp",
"env": {
"ODOO_URL": "https://yourcompany.odoo.com",
"ODOO_DB": "your_database",
"ODOO_USERNAME": "your_username",
"ODOO_PASSWORD": "your_password",
"ODOO_MCP_DEFAULT_LIMIT": "50",
"ODOO_MCP_MAX_LIMIT": "80"
}
}
}
}
ツール呼び出しのペイロード形式
MCP プロトコル経由でツールを呼び出す場合、引数は最上位の payload オブジェクトでラップする必要があります。
有効な形式:
{
"name": "odoo_search",
"arguments": {
"payload": {
"model": "res.partner",
"domain": [["customer_rank", ">", 0]],
"limit": 3
}
}
}
payload が省略されている場合、Field required: payload に相当するエラーで検証に失敗します。
対応範囲
- Odoo の操作に対応する 129 個の MCP ツール(CRUD、業務アクション、移行ワークフロー)
- すべてのツールペイロードに対する Pydantic 検証
- Odoo 18 互換性ヘルパー(customer_rank / supplier_rank / payment_state)
- セキュリティガード(モデルの許可リスト、拒否対象フィールド、アクションガード、unlink のブロック)
- 構造化ログと監査アクション
利用可能なツール
サーバーは現在、129 個の MCP ツールを公開しています。
注:以下のカテゴリ別テーブルでは、一般的または特に有用なツールを紹介しています。インストール済みバージョンのツールカタログ全体を確認するには、MCP の
list_toolsを使用してください。
基本的なレコード操作
| ツール | 用途 |
|---|---|
odoo_search | Odoo のドメイン構文を使って、許可されたモデルのレコードを検索します。 |
odoo_read | 指定したレコード ID から選択したフィールドを読み取ります。 |
odoo_search_read | 効率的な取得のため、検索と読み取りを組み合わせます。 |
odoo_create | 許可されたモデルに新しいレコードを作成します。 |
odoo_write | 許可されたモデルの既存レコードを更新します。 |
odoo_invoke_action | action_* や button_* などの Odoo モデルメソッドを呼び出します。 |
odoo_get_record_summary | レコードの簡潔で分かりやすい概要を返します。 |
パートナー、販売、CRM
| ツール | 用途 |
|---|---|
odoo_find_partner | 名前、VAT、またはメールアドレスで顧客や仕入先を検索します。 |
odoo_get_partner_summary | 業務に役立つ情報を含む、パートナーの概要を取得します。 |
odoo_find_sale_order | 名前、パートナー、または状態で販売オーダーを検索します。 |
odoo_get_sale_order_summary | 明細を含む販売オーダーの概要を取得します。 |
odoo_create_sale_order | 商品明細を含む見積書/販売オーダーを作成します。 |
odoo_confirm_sale_order | 見積書を販売オーダーとして確定します。 |
odoo_create_lead | CRM のリード/商談を作成します。 |
会計、購買、支払い
| ツール | 用途 |
|---|---|
odoo_create_purchase_order | パートナー情報と明細データから購買オーダーを作成します。 |
odoo_create_vendor_invoice | 仕入先請求書を作成します。 |
odoo_find_pending_invoices | Odoo 18 の仕様に基づき、支払い待ちの仕訳済み請求書または仕入先請求書を検索します。 |
odoo_get_invoice_summary | 請求書または仕入先請求書の詳細な概要を取得します。 |
odoo_register_payment | 特定の請求書に対する支払いを登録します。 |
プロジェクト、活動、チャター
| ツール | 用途 |
|---|---|
odoo_find_task | 名前、プロジェクト、またはステージでプロジェクトタスクを検索します。 |
odoo_create_task | 新しいプロジェクトタスクを作成します。 |
odoo_update_task | タスクのステージ、担当者、または期限を更新します。 |
odoo_create_activity | レコードに活動を予定します。 |
odoo_list_pending_activities | 必要に応じてモデルまたは担当者で絞り込み、未完了の活動を一覧表示します。 |
odoo_mark_activity_done | 活動を完了としてマークします。 |
odoo_post_chatter_message | レコードにチャターメッセージを投稿します。 |
odoo_create_activity_summary | フォローアップ用の要約形式の活動を作成します。 |
odoo_close_activity_with_reason | 活動を終了し、その理由を記録します。 |
odoo_log_timesheet | プロジェクトまたはタスクのタイムシート項目を記録します。 |
サポート、契約、在庫、インスタンスの機能
| ツール | 用途 |
|---|---|
odoo_get_capabilities | 接続中のインスタンスで利用可能なモジュールと機能を報告します。 |
odoo_create_helpdesk_ticket | ヘルプデスクチケットを直接作成します。 |
odoo_create_helpdesk_ticket_from_partner | パートナーに紐付けたヘルプデスクチケットを作成します。 |
odoo_draft_ticket_email | チケットのコンテキストからサポートメールの下書きを作成します。 |
odoo_create_contract_line | 契約に明細行を追加します。 |
odoo_replace_contract_line | 既存の契約明細行を新しい明細行に置き換えます。 |
odoo_close_contract_line | 理由と終了日を指定して契約明細行を終了します。 |
odoo_get_product_stock | 製品の在庫数量を確認します。 |
odoo_create_calendar_event | 参加者を指定して会議または予定を作成します。 |
内省
| ツール | 用途 |
|---|---|
odoo_get_model_schema | res.partner や account.move などのモデルのフィールドとスキーマを確認します。 |
利用可能なリソース
サーバーは、探索とコンテキスト提供のために5 つの MCP リソースも公開しています。
| リソース | 用途 |
|---|---|
odoo://context/odoo18-fields-reference | customer_rank、supplier_rank、payment_state など、よくあるモデルやドメインの落とし穴に関する Odoo 18 のフィールドリファレンスです。 |
odoo://models | セキュリティポリシーで現在許可されているモデルの JSON リストです。 |
odoo://model/{model_name}/schema | 特定の Odoo モデルの技術スキーマです。 |
odoo://record/{model}/{id}/summary | 特定のレコードの JSON サマリーです。 |
odoo://record/{model}/{id}/chatter_summary | 特定のレコードのチャター履歴のサマリーです。 |
ガードレールとランタイムの動作
- 標準の Odoo JSON-RPC エンドポイントを使用し、OdooClaw の委譲には依存しません。
- ツールのペイロードは、実行前に Pydantic で検証されます。
- モデルへのアクセスは、サーバー設定で定義された許可リストによって制限されます。
- 機密性の高い書き込みフィールドは禁止リストに登録され、
unlinkはブロックされます。 - 検索形式のツールには、デフォルトと最大の上限(
ODOO_MCP_DEFAULT_LIMIT、ODOO_MCP_MAX_LIMIT)が適用されます。 sender_idは監査およびコンテキストのメタデータとして扱われ、実行は認証済みの Odoo セッションユーザーとして行われます。- 一部のツールを使用するには、対応する Odoo アプリ/モジュール(CRM、Helpdesk、Projects、Contracts、Inventory など)のインストールが必要です。
セキュリティモデル
サーバーは標準の Odoo JSON-RPC エンドポイントを使用し、 設定された Odoo セッションユーザーとして操作を実行します。
本番環境では、最小限の権限を付与した専用の Odoo アカウントを使用してください。
本番環境に関する注意事項
- これは
stdioMCP サーバーであり、HTTP API サービスではありません。 - Docker/Compose のサポートは、主にパッケージ化や管理されたランタイム環境向けです。
- 通常の使用では、MCP クライアントがサーバープロセスを直接起動します。
- Odoo の認証情報は環境変数またはシークレットマネージャーに保管してください。
既知の制限事項
- MCP プロセスごとに Odoo の認証情報コンテキストは 1 つです。
- 現在、認証フローでは
ODOO_DBが必須です。 - 一部のツールには特定の Odoo アプリ/モジュール(CRM、Helpdesk、Project など)が必要です。
- Odoo 18 のフィールドの意味に合わせて設計されています。
開発
pip install -e .[dev]
ruff check src tests
black --check src tests
mypy src --ignore-missing-imports
pytest tests -v
python -m build
twine check dist/*
ドキュメント
ライセンス
MIT - LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。