io.github.singleflo/odoo-assistant
Odoo Assistant MCP Server
Виртуальный сотрудник Odoo через Model Context Protocol (MCP). Этот сервер предоставляет LLM бизнес-логику, записи и рабочие процессы Odoo, позволяя безопасно запрашивать, создавать, обновлять и выполнять действия с данными Odoo.
Быстрый старт
1. Установка
Запустите сервер напрямую:
uvx odoo-assistantИли установите его в своё окружение:
uv pip install odoo-assistantУстановка из исходного кода для разработки также возможна:
uv pip install git+https://github.com/singleflo/odoo-assistant-mcp2. Настройка переменных окружения
Требуются две переменные; всё остальное определяется автоматически или имеет значение по умолчанию:
ODOO_BASE_URL: Базовый URL вашего экземпляра Odoo (например,https://mycompany.odoo.com).ODOO_API_KEY: API-ключ Odoo (Odoo 14+, создаётся в Настройки > Пользователи > API-ключи > Новый). Пароль от учётной записи не принимается: ключ привязан к пользователю, имеет ограниченную область действия и может быть отозван отдельно.
Дополнительная настройка:
ODOO_DB: Имя базы данных. Определяется автоматически, если экземпляр обслуживает только одну базу; обязательно, если их несколько — в сообщении об ошибке будут перечислены все.ODOO_USER: Логин. Определяется по ключу ценой до 59 дополнительных запросов; определение не удастся, если uid владельца ключа равен 60 или выше. Указание логина избавляет от проверки.ODOO_MCP_MAX_LEVEL: Максимальный уровень безопасности, который может выполнять этот сервер, от0до4(по умолчанию:3). С помощью этого параметра вы делаете сервер только для чтения или разрешаете удаление — см. Выбор предельного уровня.ODOO_MCP_PROTECTED_HOSTS: Разделённые запятыми хосты, на которые этот сервер отказывается записывать (по умолчанию пусто — ни один хост не встроен в пакет). Указанный хост всё равно разрешает чтение; для записи требуетсяODOO_ALLOW_PROD_WRITE=yesкак осознанное переопределение.
Related MCP server: mcp-server-odoo
Уровень безопасности
Каждая запись и действие проходят через динамический классификатор безопасности перед тем, как попасть в Odoo. Операции классифицируются по уровням от L0 до L5:
Уровень | Название | Описание | Статус по умолчанию |
L0 |
| Только чтение ( | Разрешено |
L1 |
| Запись и создание одной записи. | Разрешено |
L2 |
| Пакетная запись, затрагивающая несколько записей. | Разрешено |
L3 |
| Изменения состояния рабочего процесса (например, подтверждение заказов, проводка счетов). | Разрешено |
L4 |
| Деструктивные операции (например, | Заблокировано |
L5 |
| Частные методы или неизвестные операции. | Заблокировано |
Выбор предельного уровня
ODOO_MCP_MAX_LEVEL задаёт максимальный уровень, который может выполнять этот сервер. Каждое значение является накопительным — оно разрешает свой уровень и всё, что ниже:
Значение | Что разрешает |
| Только чтение. |
| + запись и создание одной записи. |
| + пакеты более 5 записей. |
| По умолчанию. + подтверждение заказов, проводка счетов, отправка почты. |
| + |
| Принимается, но по сути идентичен |
Стоит знать два поведения перед выбором числа:
5не открывает L5. Оба варианта L5 отклоняются до того, как уровень вообще считывается.L5_PRIVATEотклоняется, потому что Odoo сам отвергает любой метод, начинающийся с_, так что никакой предельный уровень не сможет его разрешить;L5_UNKNOWNотклоняется, потому что метод, не классифицированный никем, по определению имеет непроверенные последствия. Способ разрешить такой метод — добавить его вWRITE_L1/L3/L4вsafety_layer.py— в коде, с проверкой, а не через конфигурацию.Недопустимое значение приводит к ошибке при запуске.
ODOO_MCP_MAX_LEVEL="O"вызывает ошибку, а не откат к значению по умолчанию, потому что значение по умолчанию допускает запись: опечатка не должна дать вам сервер для записи, который вы считали только для чтения.
Предельный уровень задаётся вне канала связи, человеком, и считывается из окружения процесса при запуске. Модель, работающая с этим сервером, не может его повысить; когда вызов превышает предельный уровень, в отказе указывается требуемый уровень, чтобы агент мог объяснить, что изменит операция, и оставить решение за вами.
Обратите внимание, что это полномочия данного сервера, а не учётной записи. Агент с доступом к оболочке всегда может обойти MCP-сервер, вызвав Odoo напрямую. Ограничение, которое должно действовать независимо от клиента, относится к правам доступа Odoo пользователя, которому принадлежит API-ключ, — там его обеспечивает сервер Odoo.
Поддержка версий Odoo
Odoo 14.0 — абсолютный минимум поддерживаемой версии, так как этот сервер аутентифицируется только с помощью API-ключей, которых нет в Odoo 13 и более ранних.
Версия Odoo | API-ключи | XML-RPC | Официально поддерживается (авг. 2026) | Уровень поддержки / Примечания |
≤ 13.0 | Нет | Да | Нет | Не поддерживается. Невозможно аутентифицироваться с этим сервером. |
14.0 | Да | Да | Нет | Протокол совместим. Не тестировался на живом экземпляре. |
15.0 | Да | Да | Нет | Протокол совместим. Не тестировался на живом экземпляре. |
16.0 | Да | Да | Нет | Протокол совместим. Не тестировался на живом экземпляре. |
17.0 | Да | Да | Да (до сен. 2026) | Протокол совместим. Не тестировался на живом экземпляре. |
18.0 | Да | Да | Да (до сен. 2027) | Основная цель. Проверен и полностью поддерживается на живом экземпляре. |
19.0 | Да | Да | Да (до сен. 2028) | Протокол совместим. Не тестировался на живом экземпляре. API-ключи требуют описания и срока действия (макс. 3 месяца). |
Путь создания API-ключа
Чтобы создать API-ключ, войдите в свой экземпляр Odoo и перейдите по адресу: Настройки / Мой профиль → Безопасность учётной записи → Новый API-ключ
Примечание о транспорте и устаревании
Клиент автоматически определяет, доступен ли нативный API JSON-2 по адресу /json/2/<model>/<method> (использующий Authorization: bearer <API_KEY>), и в противном случае переключается на XML-RPC. Обратите внимание, что XML-RPC и JSON-RPC объявлены устаревшими в Odoo 19 и запланированы к удалению в Odoo 22.
Источники
Odoo 14.0 External API Documentation (введение в API-ключи)
Odoo 19.0 External API Documentation (JSON-2)
Odoo 19.0 External RPC API Documentation (устаревание XML-RPC)
Odoo Standard & Extended Support Policy (сроки поддержки)
Инструменты и ресурсы
Сервер предоставляет 19 инструментов и 2 типа ресурсов:
Инструменты
search_read: Поиск и чтение записей одним вызовом (Odoosearch_read).read_record: Чтение одной записи по id, всегда с указанными полями.count_records: Подсчёт записей, соответствующих домену (Odoosearch_count).instance_overview: Сводка подключённого экземпляра: версия, компании, объёмы по областям, внутренние модули, аномалии.required_fields: Список того, что Odoo требует передcreateдля модели, значение по умолчанию, которое он применил бы, и как существующие записи фактически его используют.create_record: Создание записи с повторным использованием существующего совпадения, если заданunique_on.write_record: Запись значений полей в одну запись и отчёт о том, что фактически изменилось.run_action: Запуск метода рабочего процесса и отчёт о состоянии, в котором он оставил запись.cancel_record: Отмена записи черезaction_cancelс последующим выполнением возвращаемого мастера.notify_user: Уведомление пользователей в чате записи. По умолчанию внутреннее.create_activity: Планирование действия: единственное уведомление, которое содержит срок.download_docs: Сохранение всех документов записи на диск, включая файлы из чата.generate_pdf: Генерация PDF записи и возврат места сохранения.list_message_targets: Список тех, кому можно отправить сообщение, и где — внутренние пользователи с присутствием (онлайн/отошёл/офлайн) и открытые беседы вызывающего. Спрашивайте это перед отправкой.read_conversation: Чтение беседы Discuss, сначала новые.send_direct_message: Отправка личного сообщения Discuss, которое появляется в системном трее чата пользователя в реальном времени — без электронной почты, достигает его независимо от настройки уведомлений.send_channel_message: Публикация в существующем канале Discuss; отказ, если в комнате есть не-сотрудник.explore_module: Изучение структуры модуля путём опроса живого экземпляра.list_known_modules: Список модулей, которые изучил этот сервер: имя, дата генерации, записи.
Инструменты 10-11 (notify_user, create_activity) уведомляют О записи и попадают в колокольчик Входящие; инструменты 14-17 — это беседы Discuss, которые попадают в системный трей чата. «Отправить сообщение пользователю X» — это второй тип: send_direct_message, а не notify_user.
Ресурсы
odoo://skill: Доступ к инструкциям навыка ассистента Odoo.odoo://ref/*: Доступ к сгенерированной справочной документации по изученным модулям.
Примеры конфигурации хостов
Каждый пример ниже содержит только то, что важно: две обязательные переменные и предельный уровень — единственный параметр, определяющий, может ли этот сервер писать, и указанный в файле, которым владеет человек. База данных и логин определяются автоматически, а 3 — значение по умолчанию для предельного уровня. Обратите внимание на кавычки: значения окружения — строки.
Claude Desktop
Добавьте это в ваш claude_desktop_config.json:
{
"mcpServers": {
"odoo-assistant": {
"command": "uvx",
"args": [
"odoo-assistant"
],
"env": {
"ODOO_BASE_URL": "https://mycompany.odoo.com",
"ODOO_API_KEY": "your-api-key-here",
"ODOO_MCP_MAX_LEVEL": "3"
}
}
}
}Cursor
Добавьте это в ваш .cursor/mcp.json или настройте в интерфейсе настроек Cursor:
{
"mcpServers": {
"odoo-assistant": {
"command": "uvx",
"args": [
"odoo-assistant"
],
"env": {
"ODOO_BASE_URL": "https://mycompany.odoo.com",
"ODOO_API_KEY": "your-api-key-here",
"ODOO_MCP_MAX_LEVEL": "3"
}
}
}
}VS Code Copilot
Добавьте это в ваш settings.json VS Code:
{
"mcp.servers": {
"odoo-assistant": {
"command": "uvx",
"args": [
"odoo-assistant"
],
"env": {
"ODOO_BASE_URL": "https://mycompany.odoo.com",
"ODOO_API_KEY": "your-api-key-here",
"ODOO_MCP_MAX_LEVEL": "3"
}
}
}
}opencode
Добавьте это в opencode.json или .opencode/opencode.json в вашем проекте, или в ~/.config/opencode/opencode.json, чтобы сделать сервер доступным везде:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"odoo-assistant": {
"type": "local",
"enabled": true,
"command": [
"uvx",
"odoo-assistant"
],
"timeout": 120000,
"environment": {
"ODOO_BASE_URL": "https://mycompany.odoo.com",
"ODOO_API_KEY": "your-api-key-here",
"ODOO_MCP_MAX_LEVEL": "3"
}
}
}
}Структура opencode отличается от указанных выше хостов в том, что он отвергает: ключ — mcp (не mcpServers), требуется type, command — это один массив, содержащий программу и её аргументы (отдельного args нет), а блок окружения — environment (не env).
Установите timeout осознанно. По умолчанию он равен 5000 мс, а первый вызов сессии включает аутентификацию плюс, для instance_overview, десятки XML-RPC запросов — что с комфортом превышает пять секунд на реальном экземпляре.
opencode считывает свою конфигурацию один раз при запуске и не перезагружает её «на лету», поэтому после редактирования закройте и перезапустите. Любые изменения, внесённые сюда — включая предельный уровень — вступят в силу только при следующем запуске.
ChatGPT (Пользовательские коннекторы)
Чтобы подключить этот сервер к ChatGPT через Пользовательские коннекторы:
Перейдите в Настройки → Коннекторы → Добавить коннектор.
Введите URL сервера или выберите из Реестра.
Введите учетные данные Odoo при появлении запроса.
Hermes
Добавьте сервер с помощью Hermes CLI:
hermes mcp add odoo-assistant \
--env ODOO_BASE_URL=https://mycompany.odoo.com \
--env ODOO_API_KEY=your-api-key-here \
--env ODOO_MCP_MAX_LEVEL=3 \
--args run odoo-assistantВ примерах опущены необязательные переменные. Установите ODOO_DB, если экземпляр обслуживает несколько баз данных, ODOO_USER, чтобы пропустить проверку uid, и ODOO_MCP_MAX_LEVEL, чтобы изменить максимальный уровень с его значения по умолчанию 3.
Лицензия
Этот проект лицензирован под лицензией MIT. Подробности см. в файле LICENSE.
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 Servers
- AlicenseBqualityDmaintenanceAn MCP server that enables AI assistants to interact with Odoo ERP apps like Inventory, CRM, Sales, and Manufacturing. It allows users to read, create, and manage Odoo records and workflows using natural language commands.25151ISC
- Alicense-qualityDmaintenanceAn extensible MCP server that integrates Odoo with LLMs to enable querying and managing business data like partners, quotations, and sales orders. It supports custom tool registration and multiple transport protocols for both local and remote communication.2MIT
- Alicense-qualityCmaintenanceAn MCP server that connects AI assistants to Odoo ERP instances via the built-in XML-RPC API without requiring any additional addons. It enables users to search, create, update, and manage Odoo records and models through natural language.238MIT
- Alicense-qualityCmaintenanceAn MCP server that enables AI assistants to interact with Odoo ERP, allowing natural language queries, record creation, updates, and deletions.LGPL 3.0
Related MCP Connectors
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
MCP server providing access to the Scorecard API to evaluate and optimize LLM systems.
MCP server for AI dialogue using various LLM models via AceDataCloud
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/singleflo/odoo-assistant-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server