cf-odoo-mcp-server
cf-odoo-mcp-server
MCP server — Cloudflare Workers 上で動作する Odoo ERP 用
ステートレス HTTP トランスポートを使用 — Durable Objects もコンテナも不要 常駐プロセスも不要で、Workers の free tier に収まる
odoo-mcp-claude からの移植 これは同じ 10 個のツールを提供するが、Python プロセスとして実行され XML-RPC で通信する
Odoo 19 には API key が 2 種類ある — どちらを使うべきか先に確認
Odoo 19 では API key を 2 つのスコープで発行でき、互換性がない
key の種類 | 通信先 | 得られるもの |
| Odoo 自身の | 内蔵 MCP server の 5 ツール 読み取り専用 — 書き込みスコープは開放不可 |
|
| ORM へのフルアクセス このプロジェクトはこちらを使用 |
スコープの分離は双方向で厳格: rpc 種の key で /mcp を叩くと 401 が返る
一方 mcp 種の key は JSON-RPC で認証できない
そのため、エージェントが読み取り専用ならこのプロジェクトは不要かもしれない
Odoo 内蔵の MCP server はデプロイ不要、ホスティング不要、Odoo のパスワードを他所に置く必要もない — client を https://<あなたのodoo>/mcp に mcp 種の key とともに向けるだけで完了する
さらに technical model も拒否してくれる。これはこのプロジェクトにはない guardrail だ
書き込みが必要な作業には rpc 種の key が必要で、それがこのプロジェクトが存在する理由 —
単一エンドポイントで複数の Odoo に接続するケースや、読み取り時のデフォルト上限も含む
両者は並行して運用できる
NOTES.md に完全な比較がある 内蔵 MCP server の schema がエージェントをつまずかせる点も含む
Related MCP server: Odoo 18 MCP Server
なぜ XML-RPC ではなく JSON-RPC なのか
Python の xmlrpc.client は raw socket を必要とするが、Workers の runtime にはそれがない
しかし Odoo は同じ execute_kw を /jsonrpc で JSON-RPC として公開しており、これは普通の HTTP なので
fetch で直接使える — 変換は不要
要件
Odoo は HTTPS でインターネットからアクセス可能である必要がある — Worker は LAN には到達できない Odoo がまだ公開されていない場合は Cloudflare Tunnel を前に置く
Tools
Tool | Odoo のメソッド |
| — (設定済みサーバーを表示) |
|
|
|
|
|
|
|
|
|
|
|
|
| 任意のメソッド |
|
|
|
|
設定
変数 | 用途 |
| 必須 呼び出し側が添付する必要がある bearer token |
| JSON で 1 つまたは複数のサーバーをサポート。設定すると下記の変数を上書きする |
| 単一サーバー用の代替オプション |
| 任意。ブラウザの |
アカウントのパスワードではなく API key を使用し、そのアカウントにはツールが実際に必要とする権限のみ付与する —
odoo_delete と odoo_write はそのアカウントがアクセスできるすべてにアクセスできる
ODOO_SERVERS は次のような形式
{
"default_server": "prod",
"servers": {
"prod": { "url": "https://odoo.example.com", "db": "mydb", "username": "bot@example.com", "password": "api-key" }
}
}ローカル開発
npm install
cp .dev.vars.example .dev.vars # แล้วกรอกค่าให้ครบ
npm run dev.dev.vars は gitignore 済み — パスワードを commit しては絶対にいけない
Deploy
npx wrangler login
npx wrangler deploy
npx wrangler secret put MCP_AUTH_TOKEN # openssl rand -hex 32
npx wrangler secret put ODOO_URL
npx wrangler secret put ODOO_DB
npx wrangler secret put ODOO_USERNAME
npx wrangler secret put ODOO_PASSWORDsecret は保存時に暗号化され、wrangler.jsonc には表示されない
client への接続
このフォルダの .mcp.json は Claude Code 用のファイルであり、Worker 用ではない — 単に
client にどの endpoint にどの token で通信するかを伝えるだけだ。このファイルは environment から値を参照するため
秘密情報は含まれておらず、git に commit できる
{
"mcpServers": {
"odoo": {
"type": "streamable-http",
"url": "${ODOO_MCP_URL:-https://cf-odoo-mcp-server.<subdomain>.workers.dev/mcp}",
"headers": { "Authorization": "Bearer ${MCP_AUTH_TOKEN}" }
}
}
}Claude Code は .env を自動ロードしない — 呼び出す前に environment に export する必要がある
cp .env.example .env # แล้วกรอก MCP_AUTH_TOKEN
set -a; . ./.env; set +a
claudeexport を忘れると変数が置換されず、claude mcp list が変数が見つからないと警告し
Worker は 401 を返す — 静かに失敗するのではなく、気づける形で失敗する
ODOO_MCP_URL は staging と production など、Worker ごとに別々のものを指すためにある —
.mcp.json を編集する必要はない
.mcp.json を読まない他の client は、同じ形式で endpoint と Authorization: Bearer <token> ヘッダーを自分で設定する
GET /health は認証不要で {"status":"ok"} を返す
セキュリティ
この endpoint は public であり、/mcp に入るすべてのリクエストには bearer token の添付が必要
比較は constant time で行われる。MCP_AUTH_TOKEN が設定されていない場合、Worker は 500 を返す
開け放しにする代わりに
単一の共有 token は、個人用サーバーや社内利用に適している。ユーザーごとに識別する必要がある場合は Workers OAuth Provider を 前段に置く
実運用でのメモ
NOTES.md には、実際の Odoo でテストした内容と、AI エージェントに これらのツールを操作させる際の重要な注意点が記録されている — 特に Odoo が readonly field に書き込んだ値を 静かに破棄する点について
License
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
Manage CloudPepper servers, Odoo instances, backups, and deployments over MCP.
Connect AI to Odoo ERP 14-20: search, create, update and manage records in natural language.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables interaction with Odoo ERP systems for product, customer, order, invoice, and payment management using MCP tools.7MIT
- AlicenseNot gradedqualityDmaintenanceEnables interaction with Odoo 18 (JSON-RPC API) via MCP, supporting model exploration, CRUD operations, and secure API key authentication.Apache 2.0
- FlicenseNot gradedqualityDmaintenanceFull-featured MCP connector for Odoo ERP via XML-RPC, enabling natural language interaction with CRM, sales, inventory, and other Odoo modules.-
- AlicenseNot gradedqualityDmaintenanceEnables interaction with Odoo ERP systems, providing tools and resources to access models, records, and methods via stdio or HTTP streamable transport.MIT