Token导航 LogoToken导航TokenDH.com
Odoo Indexer MCP logo
AI代理stdio官方级别未说明来源级核验

Odoo Indexer MCP

MCP Server

一个轻量级的MCP服务器,用于索引Odoo代码元素,帮助开发者快速查找模型、字段、函数、视图等组件及其文件位置。

工具数

7

提示词数

0

GitHub Stars

0

资源数

0
代码索引PythonClaudeClaude DesktopClaude

安装说明

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

作者 / 组织

letzdoo

提供方

letzdoo

最后核验

2026/5/17 20:23

运行时

Python

快速接入

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

命令预览

uv run python cli.py --index

详细介绍

Odoo 索引 MCP

一个轻量级的MCP(模型上下文协议)服务器,用于索引Odoo代码元素。其设计旨在帮助编码人员快速查找模型、字段、函数、视图以及其他Odoo组件,并提供它们的确切文件位置。

特点/特性

  • 快速索引使用Python的AST解析和lxml处理XML
  • 增量更新仅对更改过的文件重新索引(使用MD5哈希跟踪)
  • 全面覆盖索引模型、字段、方法、视图、菜单、操作、访问权限、规则、计划任务、报告模板、控制器路由等
  • 多个参考文献追踪所有出现情况(定义、继承、覆盖等)
  • 轻便的纯SQLite,无向量数据库,无嵌入(或无向量嵌入)
  • 与MCP兼容与Claude Desktop及其他MCP客户端兼容

什么是被索引的

核心要素

  • 模型名称、类型(常规/瞬时/抽象)、继承
  • 字段名称、类型、属性(必填、只读、计算、相关联等)
  • 函数/方法名称、装饰器(@api.depends, @api.onchange 等)
  • 观点类型(表单/树形结构/看板/搜索)、模型、继承
  • 菜单层级、操作、安全组
  • 行动类型(act_window/server/report)、模型、域
  • 访问权限通过安全组管理模型权限
  • 记录规则基于域的访问规则
  • 控制器路由带有认证类型的HTTP/JSON路由
  • 计划中的操作带有间隔时间的计划任务(Cron jobs)
  • 报告模板QWeb 模板
  • 模块元数据依赖项、版本、描述

多个参考文献

每个元素可以有多个文件:行号引用:

  • 定义它最初被定义的地方
  • 继承模型得以扩展的地方
  • 以(权力)否决在方法/字段被重写的地方
  • 参考;引用它被引用的地方
  • 修改;变更使用XPath修改视图

安装

先决条件

  • Python 3.10及以上版本
  • UV包管理器

设置

# Clone or navigate to the project
cd odoo-index-mcp

# Create .env file
cp .env.example .env

# Edit .env and set your ODOO_PATH
nano .env

# Install dependencies with uv
uv sync

使用

命令行界面工具(CLI Tool)

# Full indexing
uv run python cli.py --index

# Incremental indexing (skip unchanged files)
uv run python cli.py --index --incremental

# Index specific modules
uv run python cli.py --index --modules sale,account,stock

# Clear database and re-index
uv run python cli.py --clear --index

# Show statistics
uv run python cli.py --stats

# Search from CLI
uv run python cli.py --search "sale.order" --type model
uv run python cli.py --search "partner_id" --type field --module sale

# Search XML IDs
uv run python cli.py --search-xml-id "action_view_%"
uv run python cli.py --search-xml-id "action_view_sale_order" --module sale

MCP服务器

# Start MCP server
uv run odoo-index-mcp

Claude 桌面集成

添加到您的Claude桌面配置中(~/Library/Application Support/Claude/claude_desktop_config.json (在 macOS 上):

{
  "mcpServers": {
    "odoo-index": {
      "command": "uv",
      "args": ["run", "odoo-index-mcp"],
      "cwd": "/path/to/odoo-index-mcp",
      "env": {
        "ODOO_PATH": "/path/to/odoo"
      }
    }
  }
}

MCP 工具

服务器提供了7种MCP工具:

1. search_odoo_index

支持通配符的元素名称搜索。

参数:

  • query (str): 搜索词(支持SQL LIKE语法,使用%作为通配符)
  • item_type (str, 可选):按类型过滤
  • module (字符串,可选):按模块过滤
  • parent_name (str,可选):按父级过滤(针对字段/方法)
  • limit (int, default=50): 最大结果数

示例:

search_odoo_index(query="sale.order", item_type="model")
search_odoo_index(query="partner%", item_type="field", module="sale")

2. get_item_details

获取特定元素的完整详细信息,包括相关项目。

参数:

  • item_type (字符串): 项目类型
  • name (str): 项目名称
  • parent_name (字符串, 可选): 父类(对于字段/方法而言)
  • module (str,可选):用于消除歧义的模块

示例:

get_item_details(item_type="model", name="sale.order")
get_item_details(item_type="field", name="partner_id", parent_name="sale.order")

3. list_modules

列出所有已索引的模块及其条目数。

参数:

  • pattern (str, 可选): 按名称模式过滤

示例:

list_modules()
list_modules(pattern="sale")

4. get_module_stats

获取模块的详细统计数据。

参数:

  • module (字符串): 模块名称

示例:

get_module_stats(module="sale")

5. find_references

在代码库中查找所有对该元素的引用。

参数:

  • item_type (str): 项目类型
  • name (字符串): 项目名称
  • reference_type (字符串,可选):按类型过滤(定义/继承/等)

示例:

find_references(item_type="model", name="sale.order")
find_references(item_type="model", name="sale.order", reference_type="inheritance")

6. search_by_attribute

按元素属性进行高级搜索。

参数:

  • item_type (字符串): 输入要搜索的内容
  • attribute_filters (字典): 属性过滤器
  • module (str, 可选): 按模块过滤
  • limit (int, 默认=50): 最大结果数

示例:

# Find all Many2one fields
search_by_attribute(
    item_type="field",
    attribute_filters={"field_type": "Many2one"}
)

# Find all transient models (wizards)
search_by_attribute(
    item_type="model",
    attribute_filters={"model_type": "transient"}
)

# Find all form views
search_by_attribute(
    item_type="view",
    attribute_filters={"view_type": "form"}
)

7. search_xml_id

按名称模式搜索XML ID。

参数:

  • query (str): 搜索词(支持带有%的SQL LIKE模式)
  • module (字符串,可选):按模块过滤
  • limit (int, 默认值=50):最大结果数

示例:

# Find all action_view XML IDs
search_xml_id(query="action_view_%")

# Find specific action
search_xml_id(query="action_view_sale_order")

# Find form views in sale module
search_xml_id(query="%_form_view", module="sale")

演出

  • 索引速度~500-1000个文件/秒,支持并发处理和异步数据库操作
  • 数据库大小典型的Odoo安装大约需要50-100MB的空间
  • 搜索速度精确匹配\<50毫秒,模式搜索\<200毫秒
  • 内存使用情况索引时小于500MB,服务时小于100MB
  • 数据库使用aiosqlite实现异步连接池以进行高效并发写入

配置

环境变量在 .env

# Required
ODOO_PATH=/path/to/odoo

# Optional (with defaults)
SQLITE_DB_PATH=./odoo_index.db
LOG_LEVEL=INFO
MAX_CONCURRENT_MODULES=4
MAX_CONCURRENT_FILES=8

项目结构

odoo-index-mcp/
├── pyproject.toml              # uv project config
├── .env.example                # Environment template
├── .python-version             # Python version
├── README.md                   # This file
├── cli.py                      # CLI tool
├── odoo_index_mcp/
│   ├── __init__.py
│   ├── config.py               # Configuration
│   ├── database.py             # SQLite operations
│   ├── indexer.py              # Main indexing logic
│   ├── server.py               # FastMCP server
│   ├── tools.py                # MCP tool implementations
│   └── parsers/
│       ├── __init__.py
│       ├── python_parser.py    # AST parsing for Python
│       ├── xml_parser.py       # XML parsing for views/data
│       ├── csv_parser.py       # CSV parsing for access rights
│       └── manifest_parser.py  # Manifest file parsing

数据库模式

该索引使用了一个标准化的SQLite架构,包含3个主要表:

  1. 索引项核心项目数据(类型、名称、模块、属性JSON)
  2. 项目引用文件位置(与项目为多对一关系)
  3. 文件元数据用于增量索引的文件哈希值

所有查询都使用了适当的索引以实现快速查找。

发展

# Install development dependencies
uv sync

# Run tests (TODO: add tests)
uv run pytest

# Format code
uv run black .

# Type checking
uv run mypy .

许可证

麻省理工学院(MIT)

贡献;做出贡献

欢迎投稿!请:

  1. 为仓库创建分支(或“克隆仓库”)
  2. 创建一个特性分支
  3. 为新功能添加测试
  4. 提交拉取请求

支持

对于问题或疑问:

  • 在GitHub上打开一个议题(或问题)
  • 查看 ODOO_CODE_INDEXER.md 中的文档

路线图

未来的增强功能(v1中未包含):

  • \[ \] 调用图分析
  • \[ \] 在方法体中进行全文搜索
  • \[ \] 依赖关系图可视化
  • \[ \] 监视模式(更改时自动重新索引)
  • \[ \] 用于浏览的网页用户界面
  • \[ \] 导出为其他格式

目录标签

目录标签

代码索引PythonClaude本地部署Odoo开发MCP协议SQLite数据库AST解析

支持客户端

Claude DesktopClaude

接入字段

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

stdio

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

none

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

7

资源数量(resourceCount,资源数)

0

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

0

权限和风险

stdionone部署方式未说明

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

安装前确认

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

来源信息

继续浏览同类 MCP