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 がエージェントをつまずかせる点も含む
なぜ 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 installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
An MCP server that let you interact with Cycloid.io Internal Development Portal and Platform
ERP français avec serveur MCP natif : plus de 1 800 actions métier auto-générées via OpenAPI.
A paid remote MCP for hosted MCP server, built to return verdicts, receipts, usage logs, and audit-r
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/monthop-gmail/cf-odoo-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server