odoo模型mcp
公开Odoo模型注册表(字段、继承、方法)的MCP服务器 而不需要数据库连接。
将其指向任何Odoo项目目录,即可获得有关以下内容的即时、结构化的答案 模型、字段、方法重写链和继承图——由 奥多自己的 MetaModel 注册表已加载到内存中。
状态: 前阿尔法(0.1.0a1)。与奥多合作16-19。
运作原理
- MCP服务器 (此包)通过stdio接收工具调用。
- 它自动检测Odoo项目结构(Odoo-bin、插件路径、venv)。
- A. 持久工作者子流程 是在项目自己的Python中生成的
venv,加载完整的模型注册表一次(约4秒)。
- 后续查询通过Unix域套接字提供 1-15毫秒.
- 工人在10分钟不活动后自动关闭。
每个项目都有自己的独立工作进程,因此您可以使用多个 Odoo版本同时发布,没有冲突。
安装
# With uv (recommended)
uv tool install odoo-model-mcp
# With pip
pip install odoo-model-mcp使用Claude代码
添加到您的 ~/.claude.json (全球)或项目 .claude/settings.local.json:
{
"mcpServers": {
"odoo-model-registry": {
"type": "stdio",
"command": "odoo-model-mcp",
"args": []
}
}
}如果安装了 uv 不在PATH上:
{
"mcpServers": {
"odoo-model-registry": {
"type": "stdio",
"command": "uv",
"args": ["run", "--project", "/path/to/odoo-model-mcp", "odoo-model-mcp"]
}
}
}工具
所有工具都接受 project_path 指向Odoo项目的根源。 从项目中自动检测插件路径和Odoo源位置 结构(或可以用覆盖 addons_paths).可以排除模块 按名称与 exclude_modules (当模块具有不可解析的Python时很有用 依赖关系)。
detect_project_info
在不加载注册表的情况下检测Odoo项目的结构。退货 odoo_path, addons_paths, python_bin,以及 odoo_version.
search_models
按名称或描述子字符串搜索模型。
search_models(project_path="/path/to/project", query="sale.order")model_info
模型的完整元数据:所有字段(包括类型、计算方法、相关 字段、模块重写)、继承链、扩展模块(来自MRO)、, 以及装饰方法。
model_info(project_path="/path/to/project", model_name="sale.order")field_info
单个字段的详细信息:类型、计算方法、依赖项、存储、索引、, 相关、组以及哪些模块定义或覆盖了它。
field_info(project_path="/path/to/project", model_name="sale.order", field_name="amount_total")method_overrides
覆盖MRO中方法的链,包括源文件位置(文件 路径和行号)。
method_overrides(project_path="/path/to/project", model_name="sale.order", method_name="_compute_amounts")model_graph
围绕模型的继承图:哪些模块扩展了它(相同 _name), 混种父母(不同 _name),代表团家长(_inherits),和孩子 继承自它的模型。
model_graph(project_path="/path/to/project", model_name="sale.order")list_models
注册表中每个模型的轻量级列表(名称、描述、, 模块、字段计数、抽象/瞬态标志)。需要目录时使用 但不是按字段细节。
list_models(project_path="/path/to/project")dump_registry
将整个注册表以JSONL格式批量导出到磁盘上的文件中。一个电话 取代了每款车型数千次往返;用于下游 管道(索引器、嵌入器、静态分析)。写入两条记录 类型:
{"type": "model", "data": {...model_info...}}--每个型号一个{"type": "method_overrides", "model": "...", "method": "...", "overrides": [...]}—
每个装饰方法一个,MRO链中的每个覆盖都有文件/行
dump_registry(project_path="/path/to/project", output_path="/tmp/registry.jsonl")项目自动检测
服务器自动检测项目结构:
- 臭气源:查找
odoo-bin或odoo/Python包 - 插件路径:解析
odoo.conf/.odoorc,或扫描目录
包含模块(带有 __manifest__.py)
- Python venv:检查
.venv/,venv/,env/ - Odoo版本:阅读自
.env(ODOO_VERSION=)或odoo/release.py
建筑
Claude Code
|
| stdio (MCP protocol)
v
odoo-model-mcp server (lightweight Python process)
|
| Unix domain socket (JSON lines)
v
Worker process (project's own venv)
- Loads Odoo registry via MetaModel._build_model()
- Resolves full inheritance (MRO, __bases__, _build_model_attributes)
- Serves queries from in-memory registry发展
git clone https://github.com/bemade/odoo-model-mcp.git
cd odoo-model-mcp
uv sync
uv run pytest许可证
仅限LGPL-3.0
