Skip to main content
Glama
eeshapatel12

E-commerce MCP Server

by eeshapatel12
README.md
# E-commerce MCP Server

A FastMCP server for managing products, customers, and orders with full CRUD operations and data analysis capabilities.

## Installation

```bash
# Create and activate virtual environment
python3 -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install dependencies
pip install fastmcp sqlalchemy aiosqlite
```

## Running the Server

```bash
# Using fastmcp CLI
fastmcp run ecommerce_server.py

# Or directly with Python
python ecommerce_server.py
```

## Configuring with Claude Desktop

Add this to your Claude Desktop configuration file:

**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
**Windows**: `%APPDATA%\Claude\claude_desktop_config.json`

```json
{
  "mcpServers": {
    "ecommerce": {
      "command": "/path/to/venv/bin/python",
      "args": ["/path/to/ecommerce_server.py"],
      "env": {
        "ECOMMERCE_DB_PATH": "/path/to/ecommerce.db"
      }
    }
  }
}
```

## Available Tools (25 total)

### Product Management
| Tool | Description |
|------|-------------|
| `add_product` | Add a new product to inventory |
| `get_product` | Get product by ID or SKU |
| `list_products` | List products with filtering (category, stock level) |
| `update_product` | Update product details |
| `delete_product` | Soft delete (deactivate) a product |
| `update_stock` | Add or subtract stock quantity |
| `search_products` | Search products by name/description |

### Customer Management
| Tool | Description |
|------|-------------|
| `add_customer` | Add a new customer |
| `get_customer` | Get customer by ID or email |
| `list_customers` | List customers with filtering |
| `update_customer` | Update customer details |
| `delete_customer` | Soft delete (deactivate) a customer |
| `search_customers` | Search customers by name/email |

### Order Management
| Tool | Description |
|------|-------------|
| `create_order` | Create a new order for a customer |
| `add_order_item` | Add a product to an order |
| `remove_order_item` | Remove a product from an order |
| `get_order` | Get order by ID or order number |
| `list_orders` | List orders with filtering (customer, status, date range) |
| `update_order_status` | Update order status (pending → confirmed → shipped → delivered) |

### Data Analysis & Reporting
| Tool | Description |
|------|-------------|
| `get_sales_summary` | Revenue, order count, average order value for a period |
| `get_top_products` | Top selling products by quantity and revenue |
| `get_top_customers` | Top customers by spend and order count |
| `get_inventory_report` | Stock levels, out-of-stock items, category breakdown |
| `get_customer_order_history` | Complete order history for a customer |
| `get_profit_analysis` | Profit margins by product (requires cost data) |

## Example Usage

### Adding Products
```
"Add a product: iPhone 15 Pro, SKU: IP15PRO, price $999, cost $750, 50 in stock, category Electronics"
```

### Managing Customers
```
"Add customer John Doe, email john@example.com, phone 555-1234"
"Find all customers in New York"
```

### Creating Orders
```
"Create an order for customer ID 1"
"Add 2 units of product ID 3 to order ID 1"
"Mark order 1 as shipped"
```

### Data Analysis
```
"Show me the sales summary for this month"
"What are the top 5 selling products?"
"Which products are low on stock?"
"Show profit analysis for Q4"
```

## Database

The server uses SQLite by default. The database file location can be configured via the `ECOMMERCE_DB_PATH` environment variable.

### Schema
- **Products**: id, name, description, sku, price, cost, quantity_in_stock, category, is_active
- **Customers**: id, email, first_name, last_name, phone, address, city, state, postal_code, country, is_active
- **Orders**: id, customer_id, order_number, status, total_amount, shipping_address, notes
- **OrderItems**: id, order_id, product_id, quantity, unit_price

## Order Statuses
- `pending` - Order created, awaiting confirmation
- `confirmed` - Order confirmed, stock reserved
- `shipped` - Order shipped to customer
- `delivered` - Order delivered
- `cancelled` - Order cancelled, stock restored

Maintenance

ActivityInactive
ResponsivenessNo issues