Skip to main content
Glama
README.md
# ecom-ops-mcp

One MCP server that bridges **Shopify**, **Odoo**, and **Asana** for e-commerce operations, plus Excel export, so an AI agent (Claude, etc.) can run fulfillment ops across all three without you copy-pasting between tabs.

Official MCP servers exist for each tool individually. This one adds the piece none of them have: a **cross-system workflow tool** (`fulfill_shopify_order`) that pulls a Shopify order, creates the matching Odoo sale order, and opens the Asana fulfillment task, in one call.

## Why

Small e-commerce ops teams run Shopify (storefront), Odoo (accounting/inventory), and Asana (task tracking) as three disconnected systems. Every order means manually re-typing the same data three times. This MCP server lets an AI agent do that handoff correctly, every time.

## Tools

| Tool | Description |
|---|---|
| `shopify_get_orders` | List Shopify orders |
| `shopify_get_order` | Get one Shopify order |
| `shopify_get_inventory` | Get Shopify inventory levels |
| `odoo_search_read` | Generic search_read against any Odoo model |
| `odoo_get_stock_level` | Look up stock for a product |
| `odoo_create_sale_order` | Create an Odoo sale order |
| `asana_create_task` | Create an Asana task |
| `asana_get_tasks` | List tasks in an Asana project |
| `asana_update_task_status` | Complete/reopen an Asana task |
| `export_report_to_excel` | Export any tabular result to `.xlsx` |
| **`fulfill_shopify_order`** | **The hub flow:** Shopify order → Odoo sale order → Asana task, one call |

## Setup

```bash
npm install
cp .env.example .env   # fill in your credentials
npm run build
```

## Use with Claude Code / Claude Desktop

Add to your MCP config:

```json
{
  "mcpServers": {
    "ecom-ops": {
      "command": "node",
      "args": ["/absolute/path/to/ecom-ops-mcp/dist/index.js"],
      "env": {
        "SHOPIFY_STORE_DOMAIN": "your-store.myshopify.com",
        "SHOPIFY_ACCESS_TOKEN": "shpat_xxx",
        "ODOO_URL": "https://your-instance.odoo.com",
        "ODOO_DB": "your-db",
        "ODOO_USERNAME": "you@example.com",
        "ODOO_API_KEY": "your-key",
        "ASANA_ACCESS_TOKEN": "your-pat"
      }
    }
  }
}
```

## Development

```bash
npm run dev    # run with tsx, no build step
```

## Status

Early / actively developed. Credentials required per-service; each client module works independently if you only need one integration (e.g. just Odoo + Asana).

## License

MIT

TDQS

B3.1/5.0

Scored across 11 tools

Disambiguation4/5

Most tools are clearly separated by system prefix and resource, but odoo_search_read is a generic fallback that overlaps with odoo_get_stock_levelanding fulfill_shopify_order duplicates the multi-tool workflow, creating some selection ambiguity for agents.

Naming Consistency3/5

Naming follows a mostly verb_noun pattern with system prefixes, but conventions differ: shopify_get_orders vs odoo_search_read, export_report_to_excel lacks a system prefix, and fulfill_shopify_order inverts the prefix order. This mixed style is readable but not fully consistent.

Tool Count5/5

Eleven tools cover three external systems plus reporting and a composite workflow without feeling bloated. Each tool has a clear niche, and the count aligns well with the server's multi-system e-commerce operations scope.

Completeness4/5

The core order-to-fulfillment lifecycle is covered: fetch Shopify orders, create Odoo sale orders, manage Asana tasks, and export data. Minor gaps exist—no Shopify order updates, no single Asana task detail, and no Odoo sale order modification—but the generic odoo_search_read and composite fulfill tool mitigate most dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues