Skip to main content
Glama
workadu

Workadu MCP Server

Official
by workadu
README.md
# Workadu MCP Server

MCP (Model Context Protocol) server for [Workadu](https://workadu.com) โ€” enables AI assistants to interact with your Workadu data through natural language.

## What is this?

This server exposes Workadu's API as **MCP tools**, allowing AI assistants like Claude, Cursor, and others to:

- ๐Ÿ“ฆ **Manage Orders/Bookings** โ€” list, create, update, cancel orders
- ๐Ÿ‘ฅ **Manage Customers** โ€” search, create, update customer records
- ๐Ÿ›Ž **Manage Services** โ€” CRUD operations on services/products
- ๐Ÿงพ **Manage Invoices** โ€” create, publish, add lines, manage withholdings
- ๐Ÿ’ฐ **Manage Payments** โ€” list and create payments
- ๐Ÿ“ฆ **Manage Assets** โ€” CRUD operations on assets (DCL module)
- ๐Ÿšš **Manage Asset Movements** โ€” create, close, cancel dispatch notes

## Prerequisites

- **Node.js** >= 18.0.0
- A **Workadu account** with API access enabled
- Your **Workadu API key** (from CompanyUser settings)

## Installation

```bash
# Clone the repository
git clone https://github.com/workadu/mcp-server.git
cd mcp-server

# Install dependencies
npm install

# Build
npm run build
```

## Configuration

The server requires two environment variables:

| Variable | Description | Example |
|----------|-------------|---------|
| `WORKADU_API_URL` | Your Workadu instance URL | `https://your-app.workadu.com` |
| `WORKADU_API_KEY` | Your API key | `abc123...` |

Copy `.env.example` to `.env` and fill in your values:

```bash
cp .env.example .env
```

## Usage

### With Claude Desktop

Add to your Claude Desktop config (`~/Library/Application Support/Claude/claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "workadu": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-server/dist/index.js"],
      "env": {
        "WORKADU_API_URL": "https://your-app.workadu.com",
        "WORKADU_API_KEY": "your-api-key-here"
      }
    }
  }
}
```

### With Cursor

Add to your Cursor MCP settings (`.cursor/mcp.json`):

```json
{
  "mcpServers": {
    "workadu": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-server/dist/index.js"],
      "env": {
        "WORKADU_API_URL": "https://your-app.workadu.com",
        "WORKADU_API_KEY": "your-api-key-here"
      }
    }
  }
}
```

### Testing with MCP Inspector

```bash
npm run inspect
```

This opens the MCP Inspector UI where you can test all tools interactively.

### Direct execution

```bash
WORKADU_API_URL=https://your-app.workadu.com \
WORKADU_API_KEY=your-api-key \
npm start
```

## Available Tools

### Orders/Bookings
| Tool | Description |
|------|-------------|
| `list_orders` | List orders/bookings with filters (date, status, customer) |
| `get_order` | Get order details by ID |
| `create_order` | Create a new booking/order |
| `update_order` | Update an existing order |
| `delete_order` | Cancel/delete an order |
| `email_order` | Send order confirmation email |

### Customers
| Tool | Description |
|------|-------------|
| `list_customers` | List customers (paginated, searchable) |
| `get_customer` | Get customer details by ID |
| `create_customer` | Create a new customer |
| `update_customer` | Update an existing customer |

### Services
| Tool | Description |
|------|-------------|
| `list_services` | List services/products |
| `get_service` | Get service details by ID |
| `create_service` | Create a new service |
| `update_service` | Update an existing service |
| `delete_service` | Delete a service |

### Invoices
| Tool | Description |
|------|-------------|
| `list_invoices` | List invoices with filters |
| `get_invoice` | Get invoice details by ID |
| `create_invoice` | Create a new invoice |
| `create_invoice_with_lines` | Create invoice with line items |
| `add_invoice_line` | Add a line to existing invoice |
| `update_invoice` | Update an existing invoice |
| `publish_invoice` | Publish/finalize a draft invoice |
| `list_series` | List invoice series |
| `list_withholdings` | List withholdings for an invoice |
| `create_withholding` | Add withholding to an invoice |

### Payments
| Tool | Description |
|------|-------------|
| `list_payments` | List payments |
| `create_payment` | Create a new payment |

### Assets (DCL)
| Tool | Description |
|------|-------------|
| `list_assets` | List assets |
| `get_asset` | Get asset details by ID |
| `create_asset` | Create a new asset |
| `update_asset` | Update an existing asset |
| `delete_asset` | Delete an asset |

### Asset Movements (DCL)
| Tool | Description |
|------|-------------|
| `list_asset_movements` | List asset movements |
| `get_asset_movement` | Get movement details by ID |
| `create_asset_movement` | Create a new movement |
| `close_asset_movement` | Close/finalize a movement |
| `cancel_asset_movement` | Cancel a movement |
| `resend_asset_movement` | Resend movement notification |

## Development

```bash
# Watch mode (auto-recompile on changes)
npm run dev

# Type checking
npm run lint

# Build
npm run build
```

## Architecture

```
src/
โ”œโ”€โ”€ index.ts              # Entry point โ€” MCP Server init
โ”œโ”€โ”€ config.ts             # Environment config
โ”œโ”€โ”€ client/
โ”‚   โ””โ”€โ”€ workadu-client.ts # HTTP client for Workadu Dingo API
โ”œโ”€โ”€ tools/
โ”‚   โ”œโ”€โ”€ index.ts          # Tool registry
โ”‚   โ”œโ”€โ”€ orders.ts         # Order/booking tools
โ”‚   โ”œโ”€โ”€ customers.ts      # Customer tools
โ”‚   โ”œโ”€โ”€ services.ts       # Service tools
โ”‚   โ”œโ”€โ”€ invoices.ts       # Invoice tools
โ”‚   โ”œโ”€โ”€ payments.ts       # Payment tools
โ”‚   โ”œโ”€โ”€ assets.ts         # Asset tools
โ”‚   โ””โ”€โ”€ asset-movements.ts # Asset movement tools
โ””โ”€โ”€ types/
    โ””โ”€โ”€ workadu.ts        # TypeScript type definitions
```

## Authentication

The server authenticates with Workadu using the existing **API key** mechanism:
- Sends `Authorization: Basic base64(api_key:)` header
- Sends Dingo version header: `Accept: application/vnd.rengine.v2+json`
- All API calls are automatically scoped to the company associated with the API key

## License

UNLICENSED โ€” Proprietary Workadu software

TDQS

A3.7/5.0

Scored across 38 tools

Disambiguation5/5

Each tool targets a distinct resource or action, with no overlapping functionality. Even similar tools like create_invoice and create_invoice_with_lines are for different use cases (step-by-step vs. one-shot).

Naming Consistency5/5

All tools follow a consistent verb_noun pattern in lowercase with underscores (e.g., create_asset, list_invoices, update_customer). No mixing of styles.

Tool Count4/5

38 tools is slightly above average, but the breadth of functionality (assets, customers, invoices, orders, payments, services) justifies the count. Each tool serves a clear purpose without redundancy.

Completeness4/5

CRUD operations are covered for most resources (assets, customers, services, orders, invoices). Minor gaps: no delete_customer or update/delete_payment, but invoice and order workflows are thorough.

Maintenance

ActivityInactive
ResponsivenessNo issues