odoo-lint
Lint and fix Odoo addons: pylint-odoo and OCA checks, translation files and upgrades.
Install
Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).
odoo-linterclaude mcp add odoo-lint -- uvx odoo-linter==0.1.0a17 mcp
{
"mcpServers": {
"odoo-lint": {
"command": "uvx",
"args": [
"odoo-linter==0.1.0a17",
"mcp"
]
}
}
}
Documentation
From the project's README on GitHub, refreshed weekly. Links open on GitHub.
odoo-lint
Blazing fast Rust-native linter for Odoo modules. The command is called odl.
It checks Python files, manifests, XML and CSV data files and translation
(.po) files, with the checks of OCA's pylint-odoo, oca-checks-odoo-module
and oca-checks-po: same names, same messages, same results on their own
test suites. It also warns about files that do not belong in a module, such
as packages or database dumps committed by accident.
Linting all of OCA/sale-workflow 18.0, as OCA's pre-commit hook runs pylint-odoo. See benchmarks.
- ⚡ 250x faster than pylint with pylint-odoo, and still 30x faster on a single core
- ⚖️ Drop-in for pylint-odoo and OCA's pre-commit checks: same codes,
names and messages, 95/95 checks matching on their own test suites (Python,
manifests, XML,
.po), and# pylint: disable=comments keep working - 🔧 Automatic fixes, safe and unsafe as in Ruff, for Python, manifests,
XML and
.pofiles (odl check --fix,--diffto preview) - ⬆️ Upgrade checks: leftovers of older Odoo versions, such as Bootstrap 4 classes that do nothing since Odoo 15.0, with fixes
- 🌍 Translation checks that predict Odoo's loader: why Odoo logs "malformed po file", and why a translation does not show up
- 📦 Installable with pip, uv or pipx: one binary in prebuilt wheels for Linux, macOS and Windows, without Python dependencies
- 🛠️ Configured in
pyproject.toml, including company-specific author rules - 📋 Output for CI: GitHub annotations, GitLab Code Quality, SARIF and JSON
- ✍️ In your editor: a language server (
odl server) with quick fixes, and extensions for VS Code and Zed - 🤖 For AI coding agents: an MCP server, and plugins for Claude Code, DeepSeek Harness and OpenCode that lint every file the agent edits
- 🪝 Git hooks: pre-commit and hk
Installation
uv tool install odoo-linter # or: pipx install odoo-linter
cargo install odoo-lint # from crates.io
The PyPI package is called odoo-linter, because odoo-lint is too similar
to an existing PyPI project. On crates.io it is odoo-lint.
Quick start
odl check path/to/addons # lint a directory
odl rule # list all rules
odl rule C8101 # explain a rule
odl check --fix # apply the safe fixes (--diff to preview)
Rules ported from pylint-odoo keep its codes, names and messages, and
# pylint: disable= comments keep working. Company-specific rules are
configured in your pyproject.toml:
[tool.odoo-lint]
target-version = "17.0"
[tool.odoo-lint.rules.manifest-required-author.mapping]
"acme_*" = "Acme Corp"
For AI coding agents there is an MCP server (odl mcp) and a post-edit hook,
packaged as plugins for Claude Code (/plugin marketplace add bosd/odoo-lint),
DeepSeek Harness and OpenCode.
See the documentation for all commands, configuration options and rules.
Development
uv sync --all-groups # builds odl into .venv via maturin
uv run nox # pre-commit, fmt, clippy, cargo tests, CLI tests, docs
See the development guide.
License
MIT
Frequently asked questions
What is odoo-lint?
Lint and fix Odoo addons: pylint-odoo and OCA checks, translation files and upgrades.
How do I install odoo-lint?
It runs on your machine. In Claude Code: claude mcp add odoo-lint -- uvx odoo-linter==0.1.0a17 mcp. For other clients, paste the JSON configuration from this page into their MCP settings.
Does odoo-lint need an API key?
Its registry entry lists no required key or secret. Some features may still need an account with the service it connects to.
Is odoo-lint open source?
Yes. Its code is on GitHub under the MIT license.
Who maintains odoo-lint?
It is published by bosd. AI.tn lists it but does not maintain or endorse it.
From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.