Token导航 LogoToken导航TokenDH.com
Python Odoo MCP logo
运维云端stdio官方级别未说明来源级核验

Python Odoo MCP

MCP Server

一个为Odoo提供HTTP REST API的服务,支持加密API密钥、多租户范围隔离和连接池,适用于n8n、webhooks和自定义集成。

工具数

9

提示词数

0

GitHub Stars

1

资源数

0
多租户PythonClaudeClaude DesktopClaudeCursor

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

christopher-igweze

提供方

christopher-igweze

最后核验

2026/5/17 20:22

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python -m venv venv

详细介绍

Python Odoo MCP服务器

![License: MIT](https://opensource.org/licenses/MIT) ![Python 3.9+](https://www.python.org/downloads/) ![codecov](https://codecov.io/gh/christopher-igweze/python-odoo-mcp) ![Tests](https://github.com/christopher-igweze/python-odoo-mcp/actions) ![Code style: black](https://github.com/psf/black) ![PRs Welcome](http://makeapullrequest.com)

用于Odoo自动化的HTTP REST API,具有加密的API密钥、多对映体范围隔离和连接池。专为n8n、webhooks和自定义集成而构建。

存储库: https://github.com/christopher-igweze/python-odoo-mcp

特性

多用户 -不同的用户,不同的Odoo实例,相同的服务器

基于范围的访问控制 -每个模型的细粒度R/W/D权限

加密的API密钥 -用于安全密钥存储的Fernet加密

连接池 -使用TTL缓存经过身份验证的会话

n8n就绪 -用于自动化工作流的插入式HTTP集成

完成CRUD -搜索、读取、创建、写入、删除任何Odoo模型

错误处理 -清除权限、身份验证和连接错误

异步支持 -完全异步/等待以实现高并发

快速开始

地方发展

# Clone and install
git clone https://github.com/christopher-igweze/python-odoo-mcp.git
cd python-odoo-mcp
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
pip install -r requirements.txt

# Run server
python -m src.server
# Server starts on http://localhost:3000

码头工人

# Build and run
docker-compose up --build

# Server starts on http://localhost:3000

与n8n一起使用

1.生成API密钥

首先,将您的Odoo凭据发布到 /auth/generate 获取加密的API密钥:

curl -X POST http://localhost:3000/auth/generate \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://company.odoo.com",
    "database": "company_db",
    "username": "api_user",
    "password": "secret123",
    "scope": "res.partner:RWD,sale.order:RW,product.product:R,*:R"
  }'

# Response:
# {
#   "api_key": "gAAAAABl...",
#   "expires": null,
#   "user": "api_user"
# }

在n8n中,您可以存储此内容 api_key 在变量中供以后使用。

2.创建HTTP请求节点

在n8n中,使用HTTP请求节点:

  • 方法: 发布
  • 网址: http://localhost:3000/tools/call (或您的Coolify URL)
  • 标题:

- X-API-Key: {{ $variables.api_key }} (使用您存储的API密钥)

  • 主体:
  {
    "name": "search",
    "arguments": {
      "model": "res.partner",
      "limit": 10
    }
  }

3.可用工具

所有工具都适用于任何Odoo模型。权限由范围强制执行。

读取操作 (要求 R 许可):

  • search -使用域搜索记录
  • read -读取特定记录
  • search_read -搜索+阅读
  • search_count -统计匹配记录
  • fields_get -获取模型架构
  • default_get -获取默认值

写入操作 (要求 W 许可):

  • create -创建新记录
  • write -更新记录

删除操作 (要求 D 许可):

  • unlink -删除记录

范围格式

使用作用域字符串控制权限:

# Full access to res.partner
res.partner:RWD

# Can search/read/write sales orders, no delete
sale.order:RW

# Read-only access
product.product:R

# Multiple models
res.partner:RWD,sale.order:RW,account.invoice:R

# Wildcard: read-only to all models
*:R

# Mixed: specific full access + wildcard read-only
res.partner:RWD,sale.order:RWD,*:R

权限:

  • R =读取(搜索、读取、search_Read、search_count、fields_get、default_get)
  • W =写入(创建、写入)
  • D =删除(取消链接)

建筑

请求流:

HTTP Request (X-API-Key header)
    ↓
Authentication & Scope Validation
    ↓
Connection Pool (scope-aware caching)
    ↓
Odoo Client (validates permissions, executes operations)
    ↓
Odoo Instance (XML-RPC)

关键部件:

  • HTTP服务器 -端口3000上的FastAPI REST API
  • 连接池 -使用TTL和作用域隔离缓存经过身份验证的Odoo会话
  • 范围验证器 -强制每个模型的R/W/D权限
  • Odoo客户端 -带有自动连接池的XML-RPC包装器

环境变量

# Encryption key for API key generation (auto-generated if not set)
# Generate one with: python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
ENCRYPTION_KEY=your_base64_fernet_key_here

# Connection pool TTL (default: 60 minutes)
CONNECTION_POOL_TTL_MINUTES=60

# Logging level (DEBUG, INFO, WARNING, ERROR, CRITICAL)
LOG_LEVEL=INFO

# Server host and port (defaults for Docker)
HOST=0.0.0.0
PORT=3000

部署

冷却设置

  1. 将仓库推送到GitHub
  2. 在Coolify中,创建新服务→ 码头工人
  3. 指向存储库
  4. 设置环境变量(如果需要)
  5. 部署
  6. 从Coolify获取公共URL
  7. 在n8n中使用: https://your-mcp-xxx.coolify.io/tools/call

测试与开发

贡献.md 用于:

  • 使用pytest运行测试
  • 测试覆盖率信息(已实现75.37%)
  • 开发工作流程和微提交

错误处理

所有错误返回 {"error": "...", "status": "..."}:

  • auth_failed -凭据标头无效
  • scope_invalid -作用域语法无效
  • connection_failed -无法连接到Odoo
  • permission_denied -操作违反范围
  • tool_not_found -未知工具名称
  • odoo_error -Odoo RPC错误

注:REST API与MCP协议

该项目揭示 通过HTTP REST API的MCP-样式工具,这与官方的MCP协议不同:

  • 此服务器: 带有HTTP端点的REST API(/tools/list, /tools/call)
  • MCP官方协议: Claude Desktop、Cursor和其他AI助手通过stdio或websockets使用

有关AI助手集成,请参阅优秀 ivnvxd/mcp服务器odoo 它使用真正的MCP协议。

这种REST API方法非常适合 n8n、webhooks和自动化平台 其中HTTP更实用。

许可证

MIT许可证-请参阅 许可证 了解详情。

这意味着您可以自由使用、修改和分发此软件,只要您包含许可声明。

支持

问题?检查:

  1. Odoo URL和凭据正确
  2. 用户在Odoo中具有权限(在设置中创建API用户)
  3. 作用域语法有效(见上面的示例)
  4. 服务器日志: docker logs python-odoo-mcp

关于

Python Odoo MCP服务器 是一个可用于生产的REST API,它将Odoo与n8n、Zapier和自定义集成等自动化平台连接起来。在构建时考虑了安全性和可扩展性:

  • 默认加密 -API密钥是Fernet-encrypt的,从不以明文存储
  • 多租户就绪 -使用基于范围的访问控制隔离数据
  • 连接池 -基于TTL的缓存过期可有效利用资源
  • 企业级检测 -142个测试涵盖关键路径,代码覆盖率超过75%
  • 开发者友好 -完整的异步/等待支持,清晰的错误消息,详细的文档

无论您是在n8n中自动化Odoo工作流,构建自定义集成,还是以编程方式管理Odoo数据,该服务器都提供了一个可靠、安全的HTTP API,并具有细粒度的权限控制。

用例

  • n8n自动化 -将Odoo用作n8n工作流中的数据源或操作
  • Webhook集成 -从外部系统触发Odoo操作
  • 定制应用 -构建无需直接XML-RPC即可与Odoo交互的应用程序
  • API聚合 -将Odoo与自动化平台中的其他API相结合
  • 数据同步 -将Odoo数据与其他业务系统同步

技术栈

  • 框架: FastAPI(异步Python web框架)
  • 协议: 带XML-RPC后端的HTTP REST API
  • 缓存: TTL过期的内存连接池
  • 安全: 用于API密钥的Fernet加密,基于范围的访问控制
  • 测试: pytest,代码覆盖率超过75%
  • 部署: Docker、Docker Compose或传统Python服务器

项目状态

  • 版本: 0.1.0(稳定)
  • 许可证: 麻省理工学院(开源,商业友好)
  • 维护: 积极发展
  • 兼容性: Odoo 11.0+与Python 3.9+

有关更多详细信息,请参阅 贡献.md 用于开发设置和 许可证 许可条款。

目录标签

目录标签

多租户PythonClaudeOdoo自动化本地部署RESTAPI加密API连接池

支持客户端

Claude DesktopClaudeCursor

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

api-key

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

9

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdioapi-key部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP