{"name":"io.github.erpipe-org/mcp-odoo","slug":"erpipe-org-mcp-odoo","title":null,"description":"Odoo MCP: gated writes, multi-instance. Free hosted: ERPipe (mcp.erpipe.com)","url":"https://mcp.market/server/erpipe-org-mcp-odoo","rating":null,"grade":"B","score":77,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":38,"stars":415,"forks":189,"downloads_week":null,"last_push_at":"2026-08-25T00:52:42.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"pypi","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/erpipe-org/mcp-odoo","website":"https://erpipe-org.github.io/mcp-odoo/","version":"1.3.0","remotes":[],"packages":[{"registryType":"pypi","identifier":"odoo-mcp","version":"1.3.0","transport":{"type":"stdio"},"environmentVariables":[{"description":"Odoo server URL, e.g. https://mycompany.odoo.com","isRequired":true,"name":"ODOO_URL"},{"description":"Odoo database name","isRequired":true,"name":"ODOO_DB"},{"description":"Odoo login (email)","isRequired":true,"name":"ODOO_USERNAME"},{"description":"Odoo password or API key","isRequired":true,"isSecret":true,"name":"ODOO_PASSWORD"}]}],"tools":[{"name":"accounting_health_across_instances","description":"AR/AP aging fanned out across instances — the partner-network sweep","write_action":false,"price_micros":0,"input_schema":null},{"name":"accounting_health_summary","description":"Open receivable/payable item counts and draft invoice backlog","write_action":false,"price_micros":0,"input_schema":null},{"name":"aggregate_across_instances","description":"Read-only aggregate fanned out across instances with combined grand totals","write_action":false,"price_micros":0,"input_schema":null},{"name":"aggregate_records","description":"Group records server-side and aggregate measures.","write_action":false,"price_micros":0,"input_schema":null},{"name":"analyze_upgrade_log","description":"Parse an Odoo install/update/upgrade log and classify known failure patterns (xpath breaks, missing fields/models/external ids, NOT NULL violations, dependency errors, attrs removal, ORM signature changes) into an actionable worklist. Input-driven — never contacts Odoo. Paste the relevant log slice (up to ~1 MB); findings are deduplicated.","write_action":false,"price_micros":0,"input_schema":null},{"name":"build_domain","description":"Build a validated Odoo domain from structured conditions","write_action":false,"price_micros":0,"input_schema":null},{"name":"business_pack_report","description":"Report expected modules, models, and safe discovery calls for a business pack","write_action":false,"price_micros":0,"input_schema":null},{"name":"cancel_async_task","description":"Cancel a pending or running background task","write_action":true,"price_micros":0,"input_schema":null},{"name":"chatter_post","description":"Post a message on the chatter of a mail.thread-derived record.","write_action":true,"price_micros":0,"input_schema":null},{"name":"data_quality_report","description":"Evidence-first data-quality report for a model (never modifies data).","write_action":false,"price_micros":0,"input_schema":null},{"name":"diagnose_access","description":"Diagnose ACL and record-rule visibility for an Odoo model","write_action":false,"price_micros":0,"input_schema":null},{"name":"diagnose_odoo_call","description":"Diagnose an Odoo model call without executing it","write_action":false,"price_micros":0,"input_schema":null},{"name":"execute_approved_write","description":"Execute a previously previewed and confirmed standard write","write_action":true,"price_micros":0,"input_schema":null},{"name":"execute_method","description":"Execute a custom method on an Odoo model","write_action":true,"price_micros":0,"input_schema":null},{"name":"fit_gap_report","description":"Classify Odoo requirements into fit/gap implementation buckets","write_action":false,"price_micros":0,"input_schema":null},{"name":"generate_json2_payload","description":"Build a JSON-2 request preview without network access","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_async_task","description":"Poll a background task's status and result","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_model_fields","description":"Get field metadata for a specific Odoo model","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_odoo_profile","description":"Read a bounded profile of the connected Odoo environment","write_action":false,"price_micros":0,"input_schema":null},{"name":"health_check","description":"Report this MCP server's non-secret runtime safety posture","write_action":false,"price_micros":0,"input_schema":null},{"name":"index_knowledge","description":"Fetch a bounded slice of records and build a local BM25 knowledge index","write_action":false,"price_micros":0,"input_schema":null},{"name":"inspect_model_relationships","description":"Inspect model relationships and required field metadata","write_action":false,"price_micros":0,"input_schema":null},{"name":"knowledge_stats","description":"Report local knowledge index sizes and document budget","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_async_tasks","description":"List recent background tasks newest-first","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_instances","description":"List configured Odoo instance names without credentials","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_models","description":"List Odoo models with optional name filtering","write_action":false,"price_micros":0,"input_schema":null},{"name":"lookup_model_history","description":"Resolve a possibly outdated model name against a curated rename catalog.","write_action":false,"price_micros":0,"input_schema":null},{"name":"preview_write","description":"Preview create, write, or unlink without executing it","write_action":true,"price_micros":0,"input_schema":null},{"name":"read_attachment","description":"Read one ir.attachment record: metadata always, base64 content when it fits under the cap (ODOO_MCP_MAX_ATTACHMENT_BYTES, default 1 MiB). URL-type attachments return their URL instead of content.","write_action":false,"price_micros":0,"input_schema":null},{"name":"read_record","description":"Read a single Odoo record by model and ID","write_action":false,"price_micros":0,"input_schema":null},{"name":"receivable_payable_aging","description":"Aged receivable/payable report bucketed by days overdue","write_action":false,"price_micros":0,"input_schema":null},{"name":"scan_addons_source","description":"Scan local Odoo addon source without importing addon code","write_action":false,"price_micros":0,"input_schema":null},{"name":"schema_catalog","description":"Build and cache a bounded Odoo model schema catalog","write_action":false,"price_micros":0,"input_schema":null},{"name":"search_across_instances","description":"Read-only search fanned out across configured Odoo instances, merged and attributed","write_action":false,"price_micros":0,"input_schema":null},{"name":"search_employee","description":"Search for employees by name","write_action":false,"price_micros":0,"input_schema":null},{"name":"search_holidays","description":"Search for holidays within a date range","write_action":false,"price_micros":0,"input_schema":null},{"name":"search_knowledge","description":"Relevance-ranked local BM25 search over previously indexed records","write_action":false,"price_micros":0,"input_schema":null},{"name":"search_records","description":"Search and read records with bounded read-only semantics.","write_action":false,"price_micros":0,"input_schema":null},{"name":"submit_async_task","description":"Run an allowlisted long-running read operation in the background","write_action":true,"price_micros":0,"input_schema":null},{"name":"upgrade_risk_report","description":"Report Odoo upgrade and JSON-2 migration risks","write_action":false,"price_micros":0,"input_schema":null},{"name":"validate_write","description":"Validate a standard write payload against optional fields_get metadata","write_action":true,"price_micros":0,"input_schema":null}],"scan":{"score":77,"grade":"B","scanned_at":"2026-09-24T17:26:14.208Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-24T17:26:14.160Z","components":{"code":{"score":25,"max":25,"notes":["37 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":12,"max":15,"notes":["last push 31 days ago"]},"identity":{"score":7,"max":10,"notes":["registry namespace matches repository owner"]}},"findings":[],"inputs":{"packages":[{"registryType":"pypi","identifier":"odoo-mcp","version":"1.3.0","found":true,"license":"MIT","dependencyCount":9,"publishedAt":"2026-07-29T02:54:13.756489Z","repositoryUrl":"https://github.com/erpipe-org/mcp-odoo"}],"repo":{"found":true,"owner":"erpipe-org","repo":"mcp-odoo","archived":false,"pushedAt":"2026-08-25T00:52:42Z","stars":415,"forks":189,"openIssues":7,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/307921792?v=4","ownerCreatedAt":"2026-07-22T08:35:57Z","license":"MIT"},"icon":{"url":null,"source":"none"},"presence":{"stars":415,"forks":189,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-08-25T00:52:42.000Z","score":38}}}},"grade_history":[],"reviews":[]}