Skip to main content
Glama

Odoo MCP Unified Server

by golfamigo

Odoo MCP Unified Server šŸš€

Unified Odoo Model Context Protocol (MCP) Server with dual transport support (stdio + SSE), enhanced business tools, and type-safe configuration management.

✨ Features

šŸ”Œ Dual Transport Support

  • stdio: For Claude Desktop integration

  • SSE: For web deployment (Zeabur, Railway, etc.) - No Supergateway needed!

šŸ› ļø Complete Tool Set (17+ Tools)

Core Tools (3)

  • execute_method - Execute any Odoo method (most powerful)

  • search_employee - Search for employees

  • search_holidays - Search for holidays/time-off

Sales Tools (3)

  • search_sales_orders - Search sales orders

  • create_sales_order - Create new sales order

  • analyze_sales_performance - Analyze sales performance with trends

Purchase Tools (3)

  • search_purchase_orders - Search purchase orders

  • create_purchase_order - Create new purchase order

  • analyze_supplier_performance - Analyze supplier on-time delivery

Inventory Tools (2)

  • get_stock_levels - Get current stock levels

  • predict_stock_needs - Predict future stock needs

Accounting Tools (2)

  • get_financial_summary - Get financial overview

  • analyze_receivables - Analyze accounts receivable

šŸ“¦ Resources (4)

  • odoo://models - List all available models

  • odoo://model/{model_name} - Get model information

  • odoo://record/{model_name}/{record_id} - Get specific record

  • odoo://search/{model_name}/{domain} - Search records

āš™ļø Configuration Management

  • Type-safe configuration with Pydantic

  • Support for environment variables and JSON config

  • Validation on startup

šŸš€ Quick Start

For Claude Desktop (stdio mode)

  1. Install

cd E:\gitHub\odoo-mcp-unified python -m venv venv venv\Scripts\activate pip install -r requirements.txt pip install -e .
  1. Configure - Add to Claude Desktop config (%APPDATA%\Claude\claude_desktop_config.json):

{ "mcpServers": { "odoo-unified": { "command": "E:\\gitHub\\odoo-mcp-unified\\venv\\Scripts\\python.exe", "args": ["E:\\gitHub\\odoo-mcp-unified\\run_server.py"], "env": { "ODOO_URL": "https://alpha-goods-corporation.odoo.com", "ODOO_DB": "alpha-goods-corporation", "ODOO_USERNAME": "your-username", "ODOO_PASSWORD": "your-password", "MCP_TRANSPORT": "stdio" } } } }
  1. Restart Claude Desktop

For Zeabur Deployment (SSE mode)

  1. Connect GitHub repo to Zeabur

  2. Set environment variables:

ODOO_URL=https://your-company.odoo.com ODOO_DB=your-database ODOO_USERNAME=your-username ODOO_PASSWORD=your-password MCP_TRANSPORT=sse PORT=8000
  1. Deploy - Zeabur will automatically:

    • Build using Dockerfile

    • Expose SSE endpoint at /sse

    • No Supergateway needed!

šŸ“‹ Environment Variables

Required

  • ODOO_URL - Odoo instance URL

  • ODOO_DB - Database name

  • ODOO_USERNAME - Username

  • ODOO_PASSWORD - Password

Optional

  • MCP_TRANSPORT - Transport mode: stdio or sse (default: stdio)

  • ODOO_TIMEOUT - Request timeout in seconds (default: 60)

  • ODOO_VERIFY_SSL - Verify SSL certificates (default: false)

  • PORT - Server port for SSE mode (default: 8000)

  • HOST - Server host for SSE mode (default: 0.0.0.0)

  • LOG_LEVEL - Logging level (default: INFO)

šŸ“– Usage Examples

Execute Any Odoo Method

# Get product.product records execute_method( model="product.product", method="search_read", args=[], kwargs={"fields": ["name", "list_price"], "limit": 10} )

Analyze Sales Performance

analyze_sales_performance( params={ "start_date": "2024-01-01", "end_date": "2024-12-31", "group_by": "month" } )

Check Supplier Performance

analyze_supplier_performance( params={ "supplier_id": 123, "start_date": "2024-01-01", "end_date": "2024-12-31" } )

šŸ—ļø Project Structure

odoo-mcp-unified/ ā”œā”€ā”€ src/odoo_mcp/ │ ā”œā”€ā”€ __init__.py │ ā”œā”€ā”€ __main__.py │ ā”œā”€ā”€ server.py # Main MCP server │ ā”œā”€ā”€ config.py # šŸ†• Configuration management │ ā”œā”€ā”€ odoo_client.py # Odoo XML-RPC client │ ā”œā”€ā”€ extensions.py # Extension registration │ ā”œā”€ā”€ models.py # Pydantic models │ ā”œā”€ā”€ prompts.py # MCP prompts │ ā”œā”€ā”€ resources.py # MCP resources │ ā”œā”€ā”€ tools_sales.py # Sales tools │ ā”œā”€ā”€ tools_purchase.py # Purchase tools │ ā”œā”€ā”€ tools_inventory.py # Inventory tools │ └── tools_accounting.py # Accounting tools ā”œā”€ā”€ run_server.py # šŸ†• Unified server runner (stdio + SSE) ā”œā”€ā”€ requirements.txt # Fixed FastMCP version ā”œā”€ā”€ pyproject.toml ā”œā”€ā”€ Dockerfile # šŸ†• Zeabur-ready └── README.md

šŸ”§ Development

Run Tests

pytest tests/

Run Server Locally (stdio)

export ODOO_URL=https://your-company.odoo.com export ODOO_DB=your-database export ODOO_USERNAME=your-username export ODOO_PASSWORD=your-password python run_server.py

Run Server Locally (SSE)

export MCP_TRANSPORT=sse export PORT=8000 python run_server.py # Access: http://localhost:8000/sse

šŸ› Troubleshooting

āœ… Using Latest Stable Versions

This project uses the latest stable versions of FastMCP (>=0.7.0) and MCP (>=1.0.0):

  • Modern FastMCP API without deprecated parameters

  • Enhanced performance and stability

  • Latest features and improvements

SSL Certificate Error

If you see SSL errors:

export ODOO_VERIFY_SSL=false

Connection Timeout

Increase timeout:

export ODOO_TIMEOUT=120

šŸ“¦ What's New in v2.0

šŸ†• Compared to odoo-mcp-improved

  • āœ… SSE Transport support (Zeabur deployment without Supergateway)

  • āœ… Unified config.py module (type-safe configuration)

  • āœ… Dual transport mode in single codebase

  • āœ… Enhanced documentation

šŸ†• Compared to mcp-odoo

  • āœ… All basic features (execute_method, resources)

  • āœ… 12+ additional business tools

  • āœ… Extension system

  • āœ… SSE support

  • āœ… Better error handling

šŸ“„ License

MIT License

šŸ¤ Contributing

Contributions welcome! Please open an issue or PR.

šŸ”— Links


Made with ā¤ļø for Alpha Goods Corporation

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/golfamigo/odooMcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server