Skip to main content
Glama
accountsalmar

Inventory Analysis MCP Server

README.md
# Inventory Analysis MCP Server

An MCP (Model Context Protocol) server that connects to Odoo ERP to provide comprehensive inventory analysis, forecasting, and reporting capabilities.

## Features

### 1. Stock Levels & Reorder Points
- Current stock levels with status classification (out of stock, critical, low, normal, overstock)
- Reorder alerts based on stock levels and reorder rules
- Days of stock calculations
- Stock summary statistics

### 2. Demand Forecasting
- Multiple forecasting methods:
  - Moving Average
  - Exponential Smoothing
  - Linear Regression
  - Holt-Winters (for seasonal data)
  - Auto-selection (best method based on data)
- Trend detection (increasing, decreasing, stable)
- Seasonality detection
- Confidence intervals for predictions
- Accuracy metrics (MAE, RMSE, MAPE)

### 3. ABC/XYZ Analysis
- **ABC Classification** (by annual consumption value):
  - A: High value items (~20% of items, ~80% of value)
  - B: Medium value items (~30% of items, ~15% of value)
  - C: Low value items (~50% of items, ~5% of value)
- **XYZ Classification** (by demand variability):
  - X: Stable demand (CV < 0.5)
  - Y: Variable demand (0.5 <= CV < 1.0)
  - Z: Highly unpredictable demand (CV >= 1.0)
- Combined matrix with management recommendations

### 4. Turnover & Aging Reports
- **Turnover Analysis**:
  - Turnover ratio calculation
  - Days of inventory
  - Classification: fast-moving, normal, slow-moving, dead stock
- **Aging Analysis**:
  - Inventory age buckets (0-30, 31-60, 61-90, 91-180, 181-365, >365 days)
  - Obsolescence risk assessment
  - Slow-moving and high-risk item identification

## Installation

### Prerequisites
- Python 3.10 or higher
- Access to an Odoo instance (v14+)

### Setup

1. Clone or download this repository

2. Install dependencies:
   ```bash
   cd inventory_mcp_server
   pip install -e .
   ```

   Or using requirements.txt:
   ```bash
   pip install -r requirements.txt
   ```

3. Configure Odoo connection:
   ```bash
   cp .env.example .env
   # Edit .env with your Odoo credentials
   ```

## Configuration

### Environment Variables

| Variable | Description | Default |
|----------|-------------|---------|
| `ODOO_URL` | Odoo server URL | `https://duracubeonline.com.au` |
| `ODOO_DB` | Database name | `live` |
| `ODOO_USERNAME` | Username/email | `accounting@qagroup.com.au` |
| `ODOO_API_KEY` | API key for authentication | (required) |

### Claude Desktop Configuration

Add to your `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "inventory-analysis": {
      "command": "python",
      "args": ["-m", "src.server"],
      "cwd": "C:/Users/jatin/ODOO/Claude/inventory_mcp_server",
      "env": {
        "ODOO_URL": "https://duracubeonline.com.au",
        "ODOO_DB": "live",
        "ODOO_USERNAME": "accounting@qagroup.com.au",
        "ODOO_API_KEY": "your_api_key_here"
      }
    }
  }
}
```

Or using `uv`:

```json
{
  "mcpServers": {
    "inventory-analysis": {
      "command": "uv",
      "args": ["run", "--directory", "C:/Users/jatin/ODOO/Claude/inventory_mcp_server", "python", "-m", "src.server"],
      "env": {
        "ODOO_URL": "https://duracubeonline.com.au",
        "ODOO_DB": "live",
        "ODOO_USERNAME": "accounting@qagroup.com.au",
        "ODOO_API_KEY": "your_api_key_here"
      }
    }
  }
}
```

## Available Tools

### Stock Level Tools
| Tool | Description |
|------|-------------|
| `get_stock_levels` | Get current stock levels with status classification |
| `get_reorder_alerts` | Get products needing reorder |
| `get_stock_summary` | Get summary statistics |

### Forecasting Tools
| Tool | Description |
|------|-------------|
| `forecast_demand` | Generate demand forecasts |
| `get_forecast_summary` | Get forecast summary statistics |

### ABC/XYZ Tools
| Tool | Description |
|------|-------------|
| `analyze_abc_xyz` | Perform ABC/XYZ classification |
| `get_abc_xyz_summary` | Get classification summary |

### Turnover & Aging Tools
| Tool | Description |
|------|-------------|
| `analyze_turnover` | Analyze inventory turnover |
| `analyze_aging` | Analyze inventory aging |
| `get_turnover_summary` | Get turnover summary |
| `get_aging_summary` | Get aging summary |
| `get_slow_moving_items` | Get slow-moving/dead stock |
| `get_high_risk_aging_items` | Get high obsolescence risk items |

## Usage Examples

### Get Stock Alerts
```
"Show me products that need reordering"
```

### Forecast Demand
```
"Forecast demand for the next 30 days for product ID 42"
```

### ABC/XYZ Analysis
```
"Perform ABC/XYZ analysis on my inventory"
```

### Identify Problem Stock
```
"Show me slow-moving inventory worth more than $1000"
```

## Odoo Requirements

The server requires the following Odoo modules:
- `stock` (Inventory)
- `product` (Products)

Optional for full functionality:
- `purchase` (for reorder rules)
- `sale` (for sales history)

### Required Odoo User Permissions
- Read access to:
  - `product.product`
  - `product.category`
  - `stock.quant`
  - `stock.move`
  - `stock.location`
  - `stock.warehouse.orderpoint`

## Development

### Running Tests
```bash
pytest tests/
```

### Code Formatting
```bash
black src/
ruff check src/
```

### Type Checking
```bash
mypy src/
```

## License

MIT License