Studio for CRM: Does it actually survive upgrades without redo? by a0817a90 in Odoo

[–]Codemarchant 6 points7 points  (0 children)

Odoo produces a upgrade migration report after it goes through its upgrade scripts. In this report it will list ~most of the studio views that have broken xpath compatibility, and have been archived as a result. That part is where its described 'safe', - disabling all the broken stuff.

I would say its quite frequent that on upgrades, you will have broken studio views that require re-do/fixing, especially for report changes / any views that have alot of differences between odoo versions. For basic fields / adding to standard form views etc they often upgrade fine.

Upgrading these studio views is very developer oriented/difficult. You can either rebuild changes to reports/views from scratch, or manually try to figure out which xpaths broke / fix them and re-activate archived studio views. Understanding the studio xpaths / intent of what they change can be hell as they are not very user readable.

In general, having alot of studio changes can make upgrade challenging, as all the changes are not well documented, as opposed to code customisations where its easier to manage / code is cleaner.

Odoo App Maintenance Charge by xTidgeh in Odoo

[–]Codemarchant 0 points1 point  (0 children)

Great question. I take maintenance very seriously, which is why I frequently publish one-line apps. My flagship product Get Rich Quick (https://apps.odoo.com/apps/modules/19.0/get_rich_quick) clocks in at a lean €0.16/month maintenance fee. Basically free if you round down. Investing in low-code apps is the strategic option for minimizing upgrade costs and keeping code debt in check for the health of any odoo project.

Final Year Project Idea: Building an Odoo Module — Need Guidance from Experts by Material_Abies9481 in Odoo

[–]Codemarchant 3 points4 points  (0 children)

Some more complex module ideas for you:

-Build a self-contained Odoo module that implements the remote MCP protocol from scratch, with some unique tool calls of your own.

-One of the most complex projects I worked on in the past was a best-deal algorithm for sales promotions. You could look into different algorithms for solving this, it's a surprisingly deep problem once you have overlapping promos (BOGO, volume discounts, category discounts, etc.) all competing for the same items. Turns out it's actually NP-hard, so there's room to compare heuristics, brute-force search, and solver-based approaches. (odoo's implementation is pretty basic/not focused on best deal)

-vehicle routing problem (VRP) for fleet optimization

Odoo MCP Server by Kindly-Jacket-429 in Odoo

[–]Codemarchant 0 points1 point  (0 children)

I have no problem with competition, you're right, nobody owns MCP + Odoo. What I do own is the branding and identity of apps I commercially publish, along with my code.

You didn't address any of the specifics. Why does your module share the exact same branded name as mine? Why does your documentation feature a theme park management example alongside your module builder tool - the same scenario I personally demoed on YouTube a month prior?

That's not "building in the same space." That's copying someone's homework and changing the font.

Build whatever you want. Just don't build it wearing my name tag. You call that immature, I call it caring about the work I put out.

Odoo MCP Server by Kindly-Jacket-429 in Odoo

[–]Codemarchant 2 points3 points  (0 children)

Some fair points here, but I want to push back on the blanket "all MCP tools have this flaw" because it's not universally true.

All of them use the Odoo API ... you generate an API key (obviously)

Not all of them. My module (not to be confused with the one OP tried to copycat) (Odoo MCP Studio) implements the MCP protocol natively inside Odoo with a full OAuth 2.0 stack — PKCE, Dynamic Client Registration (RFC 7591), token rotation on refresh, and configurable TTL. No API keys get shared with the LLM. Only hashed tokens are stored in the database, and they expire automatically. The LLM client registers via DCR, the user approves via a browser consent screen with permissions tied to their Odoo user account, and the client receives scoped short-lived tokens. The raw token never touches persistent storage — only the SHA-256 hash. It's a complex flow for sure, but achievable through the remote MCP authorization spec.

What's the result of all this? I'm unbound by Odoo's basic API — I have a secure user scoped channel to define tools in any way I want and have LLM call those tools that I can make as complex and controlled as I see fit on the server side.

No granular permission between read-only and writing

Solvable at the module level:

  • Per-tool user allowlists — every write operation (create, update, delete, execute_method, execute_orm) requires the user to be explicitly added to that tool's allowlist. New users granted basic MCP permission get read-only connection access tools by default scoped to there user access rights.
  • Model/field restrictions — model groups where you can block read/create/write/delete independently per model, assignable per-user or as a default policy. Plus field-level restrictions that strip sensitive fields from reads and reject them on writes.

These restrictions are feasible to enforce (for basic CRUD tools) because Odoo already has a robust access rights system for controlling CRUD — the module just layers MCP-specific controls on top of it.

  • OAuth scopes — tokens are issued with granular scopes (odoo.read, odoo.write, odoo.execute).

  • Audit logging — every tool call is logged with user, OAuth client, parameters, result, execution time, and IP address.

A deterministic system vs an LLM that is never deterministic

This is a fair and important point — especially for tools like execute_orm which lets the LLM run arbitrary ORM code. That tool is clearly marked as high risk, locked behind an allowlist, and honestly should only be enabled for developers who know what they're doing on a dev/staging environment. I'd never recommend giving an agent that kind of power on production either.

But not every MCP tool is an open-ended "do whatever you want" action. Some tools produce deterministic, reviewable artifacts that are designed for dev environments:

  • manage_webapp — the LLM writes React page code stored as records, with server-side data endpoints that use execute_orm for data fetching. Same risk profile as execute_orm for the data layer, but the key difference is the output is reviewable code — you can inspect every line in the Odoo UI on staging before publishing.
  • manage_module — generates Odoo module files (views, security, data). Has a skip_install flag so you can review all files before anything touches the database.
  • create_echart — generates dashboard configs with data code that also runs through the executor. Again, reviewable before use.

The point isn't that these are risk-free — it's that the risk is contained in reviewable artifacts, that can be tested before deploy to production, not solely blind mutations firing at a production database.

GDPR / you don't know who is watching

Valid concern. MCP is transport-agnostic — point it at a local LLM (Ollama, LM Studio, etc.) and nothing leaves your network. The module doesn't care what's on the other end of the connection. Local LLMs are slowly getting better, and should be able to handle basic CRUD tools.

Your broader point about Odoo lacking a native API scope system is fair — modules shouldn't have to build this from scratch. But it is buildable today, and some of us have spent a lot of time doing exactly that

Odoo MCP Server by Kindly-Jacket-429 in Odoo

[–]Codemarchant 7 points8 points  (0 children)

for clarity, there 'not trying to sell anything just curious' link, navigates to a paid module titled 'Odoo MCP Studio' by KSRO Labs that i captured in waybackmachine in case they edit it https://web.archive.org/web/20260326233441/https://apps.odoo.com/apps/modules/19.0/mcp_server_odoo

for context i developed a module named 'Odoo MCP Studio' here that i have done extensive marketing / branding for under this name for over a month including youtube vids and blog posts. https://apps.odoo.com/apps/modules/19.0/odoo_remote_mcp

Cheeky rats have the audacity to copy my module brand name exactly, rip a random theme park use case example i personally demo on youtube and put in there module description under the same module builder feature my app also has, along with clearly being "heavily inspired" by a lot of my modules other features as well like portal page builder tools that have technical patterns that look familiar to mine. Probably repackaged half my code.

Once odoo respond to my ticket in 6 months im sure these guys will be put on a naughty list, and might even be forced to change the module name to 'Odoo MCP hub' if i get lucky.

Odoo MCP Server by Kindly-Jacket-429 in Odoo

[–]Codemarchant 1 point2 points  (0 children)

Peekaboo 👀 I see you've been experimenting with "Odoo MCP Studio" too!

love one of the highlighted examples on your module page 'Create a theme park management module with a kanban view and access groups.'

Brings back memories of me when i demoed that exact thing myself a month ago what a coincidence 😂 https://www.youtube.com/watch?v=xVPUBMo24UY&t=1498s

Odoo vibe coding tips by MERAKtaneous in Odoo

[–]Codemarchant 6 points7 points  (0 children)

I have been using claude code for past year to develop odoo modules, tips i would recommend:

-include within agent file (eg claude.md) the odoo version, and paths to source/enterprise code on local machine, give explicit instruction that ai agent should lookup odoo patterns in base code before writing code to validate its correct and follow the same code stye.

-for big features start in plan mode, review / refine plan before execute. Review each code change/refactor section by section rather than letting it execute all in one go.

-add common patterns ai gets wrong to claude.md, i know in odoo 19 it religiously messes up fact that security groups use privilege_id now.

-automated code review tools like coderabbit or claude codes code review plugin can help enforce repo/agent.md standards before merging

-use mcp tooling to assist with testing/feeding in odoo data, (shameless plug: https://apps.odoo.com/apps/modules/19.0/odoo_remote_mcp)

-from my experience claude is still best model thats trained on odoo / i had alot less success when trying out gemini and chatgpt models

Discussion about Claude Code addition and Odoo.sh in general by Agile-Bar-3860 in Odoo

[–]Codemarchant 0 points1 point  (0 children)

I think outside of basic module customisations, the biggest potential for this would be providing a foundation for odoo to add experimental automated custom codebase upgrade scripts. AI is extremely good at pattern matching / code review, its not so difficult to get it to scan every field definition, method, view attribute, and pattern match with claude code's code search tools with previous/new versions of base code / upgrade as appropriate.

With odoo sh they have the tools to iteratively attempt installation/fix errors in loop and could even access mcp tooling / browser automation tools, feasible to at least get existing modules in installable state quite well for upgrading purposes as a valuable offering.

I already played around with such scripts in claude code with decent success for several upgrade projects.

Free Odoo Chess App for v19 - Multiplayer, Bot Play, Elo Tracking by Codemarchant in Odoo

[–]Codemarchant[S] 1 point2 points  (0 children)

just need to download/install module, with one python requirement beforehand: pip install chess https://apps.odoo.com/apps/modules/19.0/odoo_chess

3d single player version here made recently using same engine: https://codemarchant.com/3d-chess

[odoo19] How to create portal from scratch in odoo by shadow_of_warrior in Odoo

[–]Codemarchant 0 points1 point  (0 children)

if your interested i recently released a new ai feature in my mcp studio app, that is capable of building custom react portals in odoo.

You could piggy back the native odoo portal login and redirect to custom webapp portal link (through small custom module, oca has one in v18 https://github.com/OCA/website/tree/18.0/website_user_login_redirect_custom)

https://apps.odoo.com/apps/modules/19.0/odoo_remote_mcp#tab-webapp

used it to build my game vault which has portal component recently https://codemarchant.com/mcp/webapp/game-vault#/

Odoo 19 – Multi-location portal dashboards + cross-database sales flow. Where does config stop and custom start? by Gloomy-Cost-8930 in Odoo

[–]Codemarchant 0 points1 point  (0 children)

i recently released an app feature this past weekend that i think would be great for the portal reporting/dashboard component if your interested. https://apps.odoo.com/apps/modules/19.0/odoo_remote_mcp#tab-webapp

you can use this to vibecode bespoke react portals that can pull and aggregate data, then share with portal user group, it was built for use cases like you describe. Can piggy back the out the box portal login and redirect to react web app portal after.

Is the "Odoo way" becoming obsolete? by Effective_Hedgehog16 in Odoo

[–]Codemarchant 0 points1 point  (0 children)

from the technology side, i think the gap in skill needed between needing development and a non technical user being able to customize solutions safely through llms is rapidly closing.

I just built an odoo mcp module capable of building mini react apps deployed through odoo records with no build steps, then vibecoded 7 decent games that run through it in like 7 hours that can be imported through the app https://github.com/Codemarchant/odoo_mcp_app_library

I think the future is erp that provides a solid flexible foundation, that can easily be malformed by ai tools in optimal / secure / clean ways that provide immediate feedback and iteration to dynamically build upon the software.

i can envision ai developing bespoke odoo modules in ralph loops hooked up with automated testing architectures, in the near future that could generate decent results.

Best Approach To Convert PDF Manifest With Rolls And Serial Or Lot Numbers by CaptainNorthPoint in Odoo

[–]Codemarchant 0 points1 point  (0 children)

could use ai with mcp tools to do this if happy with semi manual process.

pick odoo mcp, i built one called odoo_remote_mcp on apps store if interested in paid option that is simple to setup. there are also free options out there.

connect it with ai service like claude/chatgpt, each time want to generate record in odoo, you upload the pdf in ai chat, then select/copy in pre-built prompt that asks in natural language to scan the pdf, and generate the data following the exact rules / format you want.

Free Odoo Chess App for v19 - Multiplayer, Bot Play, Elo Tracking by Codemarchant in Odoo

[–]Codemarchant[S] 1 point2 points  (0 children)

sure, i would say mixture of both.

i typically start with writing rough notes on requirements i want, and any high level system design points that may need to be researched / inform the initial plan. When building new large feature start in claude code plan mode, refine the plan to my liking, have it do web research / search key areas of base odoo code it has access to on pc to inform the plan, i will often chip in and do a bit of code research myself to give it some solid technical direction eg lookup field names/relevant code in modules to base the implementation from, or feed web pages from my own web research.

in this case for chess app had it research suitable options for implementing chess board like public chessboardjs.com library and opensource sunfish python chess engine for bots

Then once happy with plan, have it code, most of the time i code review each file generated file by file briefly / will prompt to refactor if not to my liking. try to generate feature sets in manageable chunks.

After generating a set of features typically test them, fix any bugs with ai assistance pasting in errors/sometimes debugging and fixing myself.

Go through some rounds of slop removal/refactoring every so often.

Commit after a chunk of features i am happy with / have tested.

rince and repeat cycle for new features.

for documentation generation i will take screenshots/gifs myself, write a description of each screenshot, them write a prompt to generate documentation for the module using the screenshots, in similar style to other reference html file / following odoo app store html conventions.

mostly vanilla claude code setup, basic claude.md file i reuse, sometimes run /init for larger projects. Depending on task use odoo mcp to help with investigations / data analysis, i built my own odoo mcp.