Skip to main content
Glama
monthop-gmail

cf-odoo-mcp-server

cf-odoo-mcp-server

MCP сервер для Odoo ERP, работающий на Cloudflare Workers.

Использует stateless HTTP transport — не нужны Durable Objects, не нужен контейнер, не нужен постоянно запущенный процесс. Спокойно живёт в free tier Workers.

Портирован из odoo-mcp-claude, который даёт те же 10 инструментов, но работает как Python-процесс через XML-RPC.

В Odoo 19 есть API key двух типов — проверьте, какой нужен

Odoo 19 выдаёт API key с двумя scope, и они не взаимозаменяемы.

Тип ключа

Взаимодействует с

Что даёт

mcp

собственным /mcp Odoo

Встроенный MCP-сервер, 5 инструментов только для чтения — включить scope на запись нельзя

rpc

/jsonrpc

Полный доступ к ORM — этот проект использует его

Разделение scope строгое в обе стороны: ключ типа rpc при обращении к /mcp получит 401, а ключ типа mcp не сможет аутентифицироваться через JSON-RPC.

Поэтому вам вполне может не понадобиться этот проект. Если ваш агент работает только на чтение, встроенный MCP-сервер Odoo не требует деплоя, поиска хостинга или выноса учётных данных Odoo куда-либо — просто укажите клиенту https://<odoo-ของคุณ>/mcp с ключом типа mcp, и готово. Более того, он отклоняет технические модели — это ограждение, которого у данного проекта нет.

Задачи, требующие записи данных, должны использовать ключ типа rpc — именно ради этого проект существует. В том числе для подключения нескольких экземпляров Odoo через один endpoint и наличия лимита по умолчанию при чтении. Оба варианта могут работать параллельно.

NOTES.md содержит полное сравнение, включая то, где схема встроенного MCP-сервера заставляет агента спотыкаться.

Почему JSON-RPC, а не XML-RPC

xmlrpc.client в Python требует raw socket, которого нет в runtime Workers. Но Odoo предоставляет тот же execute_kw через JSON-RPC на /jsonrpc — это обычный HTTP, который напрямую работает с fetch, без каких-либо переделок.

Требования

Odoo должен быть доступен из интернета по HTTPS — Worker не может заходить в LAN. Если Odoo ещё не публичный, поставьте перед ним Cloudflare Tunnel.

Инструменты

Инструмент

Метод Odoo

odoo_list_servers

— (показывает настроенные серверы)

odoo_search_read

search_read

odoo_search_count

search_count

odoo_read

read

odoo_create

create, затем чтение записанных полей

odoo_write

write, затем чтение записанных полей

odoo_delete

unlink

odoo_execute

любой метод

odoo_fields_get

fields_get

odoo_version

common.version

Настройки

Переменная

Назначение

MCP_AUTH_TOKEN

Обязательно. Bearer token, который должен присылать вызывающий.

ODOO_SERVERS

JSON, поддерживает один или несколько серверов. Если задано, имеет приоритет над переменными ниже.

ODOO_URL ODOO_DB ODOO_USERNAME ODOO_PASSWORD

Резервный вариант для одного сервера.

ALLOWED_ORIGIN_HOSTNAMES

Необязательно. Список hostname через запятую, которым разрешено браузеру с Origin вызывать /mcp, или *. Если не задано, принимаются только localhost и собственный hostname workers.dev этого Worker — серверные клиенты не отправляют Origin, поэтому их это не затрагивает.

Лучше использовать API key Odoo вместо пароля учтётной записи и давать этой учётной записи ровно те права, которые нужны инструментам. 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 — никогда не коммитьте пароли.

Деплой

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_PASSWORD

Секреты хранятся в зашифрованном виде и не появляются в wrangler.jsonc.

Подключение клиента

.mcp.json в этой папке — это файл Claude Code, а не Worker. Он просто сообщает клиенту, с каким endpoint работать и с каким токеном. Файл ссылается на значения из environment, поэтому в нём нет секретов, и его можно коммитить в git.

{
  "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 сам — нужно экспортировать переменные в окружение перед запуском.

cp .env.example .env    # แล้วกรอก MCP_AUTH_TOKEN
set -a; . ./.env; set +a
claude

Если забыть экспортировать, переменные не подставятся, claude mcp list предупредит, что их не видно, а Worker ответит 401 — падение видимое, а не молчаливое.

ODOO_MCP_URL позволяет направлять на другой Worker, например staging или production, без изменения .mcp.json.

Другие клиенты, которые не читают .mcp.json, должны сами настроить endpoint и заголовок Authorization: Bearer <token> по той же схеме.

GET /health не требует авторизации и возвращает {"status":"ok"}.

Безопасность

Этот endpoint публичный, поэтому каждый запрос к /mcp должен содержать bearer token, и сравнение выполняется за константное время. Если MCP_AUTH_TOKEN не задан, Worker вернёт 500, а не откроет доступ.

Один общий токен подходит для личного или внутреннего сервера. Если нужно различать отдельных пользователей, ставьте перед ним Workers OAuth Provider.

Заметки из реальной эксплуатации

NOTES.md фиксирует, что реально проверено на живом Odoo и что важно учитывать, когда инструменты вызывает ИИ-агент — особенно то, как Odoo молча отбрасывает значения, записанные в readonly fields.

Лицензия

MIT

-
license - not tested
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

View all MCP Connectors

Latest Blog Posts

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