{
  "markdown": "# OdooClaw MCP\n\nStandalone MCP (Model Context Protocol) server for Odoo 18 over `stdio`.\n\n**MCP name:** `io.github.nicolasramos/odooclaw-mcp`  \n**PyPI package:** `odooclaw-mcp`  \n**Official CLI:** `odooclaw-mcp`\n\nBackward-compatible aliases are also installed:\n\n- `odoo-mcp`\n- `odoo-mcp-server`\n- `odoo-18-mcp-server`\n\n## Quick Start\n\n### 1) Install\n\n```bash\npip install odooclaw-mcp\n```\n\nFrom source:\n\n```bash\ngit clone https://github.com/nicolasramos/odooclaw-mcp.git\ncd odooclaw-mcp\npip install -e .\n```\n\n### 2) Configure environment\n\n```bash\ncp .env.example .env\n```\n\nRequired:\n\n```env\nODOO_URL=https://yourcompany.odoo.com\nODOO_DB=your_database\nODOO_USERNAME=your_username\nODOO_PASSWORD=your_password\n```\n\nOptional:\n\n```env\nODOO_MCP_DEFAULT_LIMIT=50\nODOO_MCP_MAX_LIMIT=80\nLOG_LEVEL=INFO\n```\n\n### 3) Validate and run\n\n```bash\nodooclaw-mcp --check-config\nodooclaw-mcp\n```\n\nAlternative:\n\n```bash\npython -m odoo_mcp\n```\n\n## MCP Client Configuration (stdio)\n\n```json\n{\n  \"mcpServers\": {\n    \"odoo\": {\n      \"command\": \"odooclaw-mcp\",\n      \"env\": {\n        \"ODOO_URL\": \"https://yourcompany.odoo.com\",\n        \"ODOO_DB\": \"your_database\",\n        \"ODOO_USERNAME\": \"your_username\",\n        \"ODOO_PASSWORD\": \"your_password\",\n        \"ODOO_MCP_DEFAULT_LIMIT\": \"50\",\n        \"ODOO_MCP_MAX_LIMIT\": \"80\"\n      }\n    }\n  }\n}\n```\n\n### Tool call payload contract\n\nWhen calling tools through the MCP protocol, arguments must be wrapped in a\ntop-level `payload` object.\n\nValid shape:\n\n```json\n{\n  \"name\": \"odoo_search\",\n  \"arguments\": {\n    \"payload\": {\n      \"model\": \"res.partner\",\n      \"domain\": [[\"customer_rank\", \">\", 0]],\n      \"limit\": 3\n    }\n  }\n}\n```\n\nIf `payload` is omitted, validation fails with an error equivalent to\n`Field required: payload`.\n\n## Scope\n\n- 85 MCP tools for Odoo operations (CRUD + business actions + migration workflows)\n- Pydantic validation for all tool payloads\n- Odoo 18 compatibility helpers (customer_rank / supplier_rank / payment_state)\n- Security guards (model allowlist, denylisted fields, action guard, unlink blocked)\n- Structured logging and audit actions\n\n## Available Tools\n\nThe server currently exposes **85 MCP tools**.\n\n> Note: the grouped tables below focus on common/high-value tools. Use MCP\n> `list_tools` to inspect the full live tool catalog for your installed version.\n\n### Core record operations\n\n| Tool | Purpose |\n|---|---|\n| `odoo_search` | Search records in an allowed model using Odoo domain syntax. |\n| `odoo_read` | Read selected fields from specific record IDs. |\n| `odoo_search_read` | Combined search + read for efficient retrieval. |\n| `odoo_create` | Create a new record in an allowed model. |\n| `odoo_write` | Update existing records in an allowed model. |\n| `odoo_invoke_action` | Invoke an Odoo model method such as `action_*` or `button_*`. |\n| `odoo_get_record_summary` | Return a compact, human-friendly summary for a record. |\n\n### Partners, sales, and CRM\n\n| Tool | Purpose |\n|---|---|\n| `odoo_find_partner` | Find a customer or vendor by name, VAT, or email. |\n| `odoo_get_partner_summary` | Get a partner overview with useful business context. |\n| `odoo_find_sale_order` | Search sale orders by name, partner, or state. |\n| `odoo_get_sale_order_summary` | Retrieve a sale order summary including lines. |\n| `odoo_create_sale_order` | Create a quotation / sale order with product lines. |\n| `odoo_confirm_sale_order` | Confirm a quotation into a sale order. |\n| `odoo_create_lead` | Create a CRM lead / opportunity. |\n\n### Accounting, purchasing, and payments\n\n| Tool | Purpose |\n|---|---|\n| `odoo_create_purchase_order` | Create a purchase order from partner and line data. |\n| `odoo_create_vendor_invoice` | Create a vendor bill. |\n| `odoo_find_pending_invoices` | Find posted invoices or bills pending payment using Odoo 18 semantics. |\n| `odoo_get_invoice_summary` | Get a detailed summary of an invoice or bill. |\n| `odoo_register_payment` | Register a payment for a specific invoice. |\n\n### Projects, activities, and chatter\n\n| Tool | Purpose |\n|---|---|\n| `odoo_find_task` | Search project tasks by name, project, or stage. |\n| `odoo_create_task` | Create a new project task. |\n| `odoo_update_task` | Update task stage, assignee, or deadline. |\n| `odoo_create_activity` | Schedule an activity on a record. |\n| `odoo_list_pending_activities` | List pending activities, optionally filtered by model or assignee. |\n| `odoo_mark_activity_done` | Mark an activity as completed. |\n| `odoo_post_chatter_message` | Post a chatter message on a record. |\n| `odoo_create_activity_summary` | Create a summary-style activity for follow-up. |\n| `odoo_close_activity_with_reason` | Close an activity and record the reason. |\n| `odoo_log_timesheet` | Log a timesheet entry for a project or task. |\n\n### Support, contracts, stock, and instance capabilities\n\n| Tool | Purpose |\n|---|---|\n| `odoo_get_capabilities` | Report which modules and capabilities are available in the connected instance. |\n| `odoo_create_helpdesk_ticket` | Create a helpdesk ticket directly. |\n| `odoo_create_helpdesk_ticket_from_partner` | Create a helpdesk ticket linked to a partner. |\n| `odoo_draft_ticket_email` | Prepare a draft support email from a ticket context. |\n| `odoo_create_contract_line` | Add a line to a contract. |\n| `odoo_replace_contract_line` | Replace an existing contract line with a new one. |\n| `odoo_close_contract_line` | Close a contract line with a reason and close date. |\n| `odoo_get_product_stock` | Inspect stock quantities for a product. |\n| `odoo_create_calendar_event` | Create a meeting or appointment with attendees. |\n\n### Introspection\n\n| Tool | Purpose |\n|---|---|\n| `odoo_get_model_schema` | Inspect the fields and schema of a model such as `res.partner` or `account.move`. |\n\n## Available Resources\n\nThe server also exposes **5 MCP resources** for discovery and context:\n\n| Resource | Purpose |\n|---|---|\n| `odoo://context/odoo18-fields-reference` | Odoo 18 field reference for common model/domain pitfalls such as `customer_rank`, `supplier_rank`, and `payment_state`. |\n| `odoo://models` | JSON list of models currently allowed by the security policy. |\n| `odoo://model/{model_name}/schema` | Technical schema for a specific Odoo model. |\n| `odoo://record/{model}/{id}/summary` | JSON summary of a specific record. |\n| `odoo://record/{model}/{id}/chatter_summary` | Summary of the chatter history for a specific record. |\n\n## Guardrails and Runtime Behavior\n\n- Uses standard Odoo JSON-RPC endpoints; it does not depend on OdooClaw delegation.\n- Tool payloads are validated with Pydantic before execution.\n- Model access is restricted by an allowlist defined in the server configuration.\n- Sensitive write fields are denylisted and `unlink` is blocked.\n- Search-style tools use default and maximum limits (`ODOO_MCP_DEFAULT_LIMIT`, `ODOO_MCP_MAX_LIMIT`).\n- `sender_id` is treated as audit/context metadata; execution runs as the authenticated Odoo session user.\n- Some tools require the corresponding Odoo apps/modules to be installed (CRM, Helpdesk, Projects, Contracts, Inventory, etc.).\n\n## Security Model\n\nThe server uses standard Odoo JSON-RPC endpoints and executes operations as the\nconfigured Odoo session user.\n\nFor production, use a dedicated least-privilege Odoo account.\n\n## Production Notes\n\n- This is a `stdio` MCP server, not an HTTP API service.\n- Docker/Compose support is mainly for packaging or controlled runtime scenarios.\n- In normal usage, your MCP client launches the server process directly.\n- Keep Odoo credentials in environment variables or a secrets manager.\n\n## Known Limitations\n\n- One Odoo credential context per MCP process.\n- `ODOO_DB` is currently required by the authentication flow.\n- Some tools require specific Odoo apps/modules (CRM, Helpdesk, Project, etc.).\n- Designed for Odoo 18 field semantics.\n\n## Development\n\n```bash\npip install -e .[dev]\nruff check src tests\nblack --check src tests\nmypy src --ignore-missing-imports\npytest tests -v\npython -m build\ntwine check dist/*\n```\n\n## Docs\n\n- [Architecture](docs/ARCHITECTURE.md)\n- [Deployment](docs/DEPLOYMENT.md)\n- [QA Runbook](docs/QA_RUNBOOK.md)\n\n## License\n\nMIT - see [LICENSE](LICENSE).\n",
  "bytes": 8158,
  "sha": "e607ebeb31e610adda45c6f39bd3634d54f0cf49489543c659cde3ec2c3c4f87",
  "repo_slug": "nicolasramos/odoo-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_nicolasramos_odoo_mcp_fa910590/readme"
}