Odoo MCP Gateway
Security-first MCP gateway for Odoo 17/18/19 — YAML-driven security, 27 tools
Connector by parth-unjiya · GitHub account verified by the MCP Registry
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/parth-unjiya-odoo-mcp-gateway
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.
- Tools
- 19 read · 11 write · 1 delete · 2 not yet classified
- Secrets
- None asked for
- Install scripts
- Not scanned yet
- Runs as
- Python package
Tools by what they do 33
Read from the source code; the running server may list different tools.
Read 19 · Look things up without changing anything.
get_create_requirementsget_defaultsget_model_fieldsget_my_attendanceget_my_leavesget_my_profileget_my_quotationsget_my_tasksget_my_ticketsget_onchangeget_order_detailsget_project_summary
Show 7 more tools
get_recordget_record_actionsget_sales_summarylist_modelsread_groupsearch_countsearch_read
Write 11 · Create, change, send or run things.
bulk_createbulk_updateconfirm_ordercreate_recordcreate_ticketexecute_methodloginrequest_leaveupdate_recordupdate_task_stageupdate_ticket_stage
Delete 1 · Delete, drop, revoke or wipe things.
delete_record
Not yet classified 2 · We could not tell from the name and description.
check_incheck_out
Tools (33)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
bulk_createCreate many records of *model* in batches. Each chunk of up to ``chunk_size`` records is ONE Odoo ``execute_kw('create', [chunk])`` call = ONE database transaction. Within a chunk the create is all-or-nothing. Across chunks atomicity is NOT guaranteed — if chunk 2 fails, chunk 1 stays committed. To get >chunk_size-record atomicity, raise ``chunk_size`` and let Odoo reject if its body limit is hit. Args: model: Target Odoo model. records: List of ``{field: value}`` dicts. Each dict goes through the same restrictions / RBAC / field validation pipeline as ``create_record…
bulk_updateApply *values* to every record in *record_ids*. Wraps ``execute_kw(model, 'write', [ids, values])``. Each chunk of up to ``chunk_size`` IDs is ONE Odoo call. The write itself is atomic per chunk; across chunks it is NOT atomic. The ``values`` dict is validated ONCE (it applies to every record), so this is much cheaper than calling ``update_record`` in a loop. Args: model: Target Odoo model. record_ids: IDs to update. Deduped automatically. values: ``{field: value}`` applied to every record. chunk_size: Maximum IDs per Odoo call. Default 200. dry_run: If True, validate wi…
check_inRecord attendance check-in for the current user. Finds the employee linked to the current user and creates an attendance record with check_in set to now.
check_outRecord attendance check-out for the current user. Finds the open attendance record and sets check_out to now.
confirm_orderConfirm a quotation, turning it into a sale order. Args: order_id: The sale order ID to confirm (must be in draft/sent state)
create_recordCreate a new record in an Odoo model. Args: model: Target Odoo model name values: Field values for the new record dry_run: If True, validate without creating. Returns what would be sent. ctx: MCP Context auto-injected by FastMCP. Used for elicitation (ADR-008) when required fields are missing — the server asks the client to supply them rather than erroring out. Optional; if the client doesn't expose elicitation we fall back to the standard missing-field error.
create_ticketCreate a new helpdesk ticket. Args: name: Ticket subject/title description: Detailed description team_id: Helpdesk team ID (optional) priority: Priority level (0=Low, 1=Medium, 2=High, 3=Urgent)
delete_recordDelete a record from an Odoo model. Args: model: Target Odoo model name record_id: ID of the record to delete dry_run: If True, validate without deleting. Returns what would happen.
execute_methodExecute a method on an Odoo model. Args: model: Target Odoo model name method: Method name to execute record_ids: Optional list of record IDs to operate on args: Additional positional arguments for the method kwargs: Additional keyword arguments for the method dry_run: If True, validate without executing. Returns what would be called.
get_create_requirementsGet everything needed to create a record of any Odoo model. Returns required fields (from live schema), recommended fields, relation hints (which related records to look up first), and creation notes from the workflow engine. This is the first tool to call before create_record.
get_defaultsGet default values for fields on an Odoo model. Returns default values that Odoo would pre-fill when creating a new record. Useful for understanding what values are auto-populated before calling create_record.
get_model_fieldsGet field definitions for an Odoo model. ``field_filter`` accepts THREE shapes: * ``None`` or empty string → no filter; every accessible field is returned. * Single string without commas (e.g. ``"email"``) → substring match against both the field name and its label (legacy behaviour preserved for back-compat). * Comma-separated string (e.g. ``"name,phone,email"``) OR a ``list[str]`` of names → EXACT field-name match. Each token is stripped + lowercased. Tokens that don't exist on the model are silently dropped — the response contains the subset that does exist; no error is rais…
get_my_attendanceGet attendance records for the current user. Args: limit: Max records to return (default 10) month: Filter by month (YYYY-MM format, optional)
get_my_leavesGet leave requests for the current user. Args: state: Filter by state (draft, confirm, validate, refuse) limit: Max records (default 20)
get_my_profileGet the current user's employee profile.
Show 18 more tools
get_my_quotationsGet quotations/orders where the current user is the salesperson. Args: state: Filter by state (draft, sent, sale, done, cancel) limit: Max records (default 20)
get_my_tasksGet tasks assigned to the current user. Args: state: Filter by task state (e.g. 01_in_progress, 1_done) project_id: Filter by project ID limit: Max records (default 20)
get_my_ticketsGet helpdesk tickets assigned to the current user. Args: state: Filter by stage name (optional) priority: Filter by priority (0=Low, 1=Medium, 2=High, 3=Urgent) limit: Max records (default 20)
get_onchangeSimulate an onchange event on an Odoo model. Returns the values that would change when a field is modified in the UI. Useful for previewing side effects before calling create_record or update_record. Args: model: The Odoo model name values: Current field values (partial record) changed_field: The field that was just changed fields: Fields to check for onchange effects. Defaults to keys of values.
get_order_detailsGet full order details with lines, totals, and partner info. Args: order_id: The sale order ID
get_project_summaryGet project stats: task counts by stage, overdue, recent activity. Args: project_id: The project ID to summarize
get_recordRead a single record by ID from any Odoo model.
get_record_actionsGet the current state and available next actions for a record. Returns the current state label and a list of valid transitions (filtered by security restrictions), each with method name, label, description, and target state. This is the tool to call after reading a record to know what workflow actions are available.
get_sales_summaryGet aggregated sales stats for the current user. Returns counts by state, totals by month, and top customers. Args: period: Filter period (YYYY-MM format, optional). If omitted, returns all-time stats.
list_modelsList available Odoo models. Optionally filter by keyword. On large databases (e.g. custom-module-heavy deployments with 500+ models) the full payload can exceed the MCP response cap. This tool now offers three independent knobs to keep the payload small: * ``compact`` (default ``False``) — when ``True`` each entry is just ``{"model": "<name>"}`` (no description, is_custom, or access_level metadata). Drops payload size by ~80%. * ``limit`` / ``offset`` — caller-driven pagination. When ``limit`` is set, only that many entries are returned starting at ``offset``. The response carries ``…
loginAuthenticate with Odoo. Methods: 'api_key', 'password', or 'session'.
read_groupRead grouped/aggregated data from an Odoo model.
request_leaveSubmit a leave request. Args: leave_type_id: Leave type ID (e.g. annual leave, sick leave) date_from: Start date (YYYY-MM-DD) date_to: End date (YYYY-MM-DD) reason: Optional description
search_countCount records matching a domain in an Odoo model.
search_readSearch and read records from any Odoo model.
update_recordUpdate an existing record in an Odoo model. Args: model: Target Odoo model name record_id: ID of the record to update values: Field values to update dry_run: If True, validate without updating. Returns what would be sent.
update_task_stageMove a task to a different stage. Args: task_id: The task ID to update stage_id: The target stage ID
update_ticket_stageMove a helpdesk ticket to a different stage. Args: ticket_id: The ticket ID to update stage_id: The target stage ID
Signals
- Stars
- 4
- Forks
- 2
- Open issues
- 0
- Weekly downloads
- 49
- Last commit
- May 21, 2026 (5 months ago)
- Last release
- Mar 17, 2026 (7 months ago)
- Last package publish
- May 21, 2026 (5 months ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
io.github.parth-unjiya/odoo-mcp-gateway- Version
- 0.1.1
- Auth
- No auth
- Packages
- pypi odoo-mcp-gateway
- License
- MIT
- Repository
- github.com/parth-unjiya/odoo-mcp-gateway
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
Cite this page
Odoo MCP Gateway. Agent Mart. https://agentmart.dev/connectors/parth-unjiya-odoo-mcp-gateway (last updated 2026-10-24)