Skip to main content
Glama
modellers

ConsignCloud MCP Server

by modellers
README.md
# ConsignCloud MCP Server

A Model Context Protocol (MCP) server for the ConsignCloud API, enabling AI assistants to manage inventory, sales, accounts, and more in your consignment/retail business.

> **šŸš€ Quick Start:** New to this project? See [QUICK_START.md](./QUICK_START.md) to get running in 5 minutes!

## šŸ“š Documentation

- **[QUICK_START.md](./QUICK_START.md)** - Get up and running in 5 minutes
- **[TESTING.md](./TESTING.md)** - Test with MCP Inspector
- **[CLAUDE_DESKTOP_SETUP.md](./CLAUDE_DESKTOP_SETUP.md)** - Integrate with Claude Desktop
- **[CONSIGNCLOUD_API_SUMMARY.md](./CONSIGNCLOUD_API_SUMMARY.md)** - Complete API reference
- **[PROJECT_SUMMARY.md](./PROJECT_SUMMARY.md)** - Technical overview

## Features

This MCP server provides tools for:

### Inventory Management
- List, create, update, and delete items
- Filter items by price, category, account, status, location
- Get inventory statistics
- Bulk edit items
- Update item statuses

### Sales Management
- List and view sales
- Void and refund sales
- Filter sales by date, customer, location, status
- Get sales trends and analytics

### Account Management
- Manage vendor/consignor accounts
- View account balances and statistics
- Track purchases and items per account

### Additional Features
- Manage item categories
- Manage store locations
- Create and manage batches of items
- Search and suggestions across entities

## Installation

1. Clone this repository:
```bash
git clone <repository-url>
cd mcp-consigncloud
```

2. Install dependencies:
```bash
npm install
```

3. Create a `.env` file with your ConsignCloud API credentials:
```bash
cp .env.example .env
```

4. Edit `.env` and add your API key:
```env
CONSIGNCLOUD_API_KEY=your_api_key_here
CONSIGNCLOUD_API_BASE_URL=https://api.consigncloud.com/api/v1
```

## Getting Your API Key

1. Log in to your ConsignCloud account
2. Navigate to **Settings → Apps**
3. Enable the **API & Webhooks** app
4. Click **Add API Key**
5. Copy the generated API key to your `.env` file

## Usage

The server supports two modes:

### 1. STDIO Mode (for Claude Desktop)

This is the default mode for integration with Claude Desktop and other MCP clients.

**Development:**
```bash
npm run dev
```

**Production:**
```bash
npm run build
npm start
```

### 2. HTTP/SSE Mode (for testing with MCP Inspector)

This mode runs an HTTP server with Server-Sent Events for easy testing.

**Development:**
```bash
npm run dev:http
```

**Production:**
```bash
npm run build
npm run start:http
```

**With custom configuration (CLI flags override environment variables):**
```bash
node dist/http-server.js --api-key YOUR_KEY --port 3001 --host localhost
```

**With absolute path:**
```bash
/opt/homebrew/bin/node /absolute/path/to/dist/http-server.js --api-key YOUR_KEY
```

The server will run on `http://localhost:3000` (configurable via `.env` or CLI flags).

### Testing with MCP Inspector

See [TESTING.md](./TESTING.md) for detailed instructions on testing with MCP Inspector.

Quick start:
```bash
# Option 1: HTTP/SSE mode
# Terminal 1: Start the HTTP server
npm run start:http

# Terminal 2: Launch MCP Inspector
npx @modelcontextprotocol/inspector http://localhost:3000/sse

# Option 2: stdio mode (uses .env file)
npx @modelcontextprotocol/inspector node /absolute/path/to/dist/index.js

# Option 3: stdio mode with environment variable
CONSIGNCLOUD_API_KEY=your_key npx @modelcontextprotocol/inspector node dist/index.js
```

### Using 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`

**Recommended: Using .env file**
```json
{
  "mcpServers": {
    "consigncloud": {
      "command": "node",
      "args": ["/Users/administrators/Documents/Workspace/github/mcp-consigncloud/dist/index.js"]
    }
  }
}
```

**Alternative: Inline environment variables**
```json
{
  "mcpServers": {
    "consigncloud": {
      "command": "node",
      "args": ["/Users/administrators/Documents/Workspace/github/mcp-consigncloud/dist/index.js"],
      "env": {
        "CONSIGNCLOUD_API_KEY": "your_api_key_here"
      }
    }
  }
}
```

See [CLAUDE_DESKTOP_SETUP.md](./CLAUDE_DESKTOP_SETUP.md) for detailed setup instructions.

## Available Tools

### Inventory Tools

- `list_items` - List inventory items with filters
- `get_item` - Get specific item details
- `create_item` - Create new inventory item
- `update_item` - Update existing item
- `delete_item` - Delete (soft delete) an item
- `get_item_stats` - Get inventory statistics

### Sales Tools

- `list_sales` - List sales with filters
- `get_sale` - Get specific sale details
- `void_sale` - Void a sale
- `get_sales_trends` - Get sales analytics

### Account Tools

- `list_accounts` - List vendor/consignor accounts
- `get_account` - Get specific account details
- `create_account` - Create new account
- `update_account` - Update existing account
- `get_account_stats` - Get account statistics

### Category & Location Tools

- `list_categories` - List item categories
- `create_category` - Create new category
- `list_locations` - List store locations

### Batch Tools

- `list_batches` - List item batches
- `create_batch` - Create new batch
- `update_batch_status` - Change batch status

### Utility Tools

- `search_suggest` - Search across entities

## Example Prompts

Once configured with Claude Desktop, you can use prompts like:

- "List all inventory items under $50"
- "Show me sales from last week"
- "Create a new vendor account for John Doe"
- "What are the top selling items?"
- "Show me the current balance for account ABC123"
- "Create a new batch for vendor XYZ"

## API Documentation

For detailed API documentation, see [CONSIGNCLOUD_API_SUMMARY.md](./CONSIGNCLOUD_API_SUMMARY.md)

## Currency Format

All monetary amounts are in the smallest denomination (cents for USD):
- $10.00 = 1000 cents
- $0.50 = 50 cents

## Rate Limiting

The ConsignCloud API uses a leaky bucket algorithm:
- Bucket capacity: 100 requests
- Leak rate: 10 requests/second
- Exceeding limit returns 429 status

## Development

### Project Structure

```
mcp-consigncloud/
ā”œā”€ā”€ src/
│   ā”œā”€ā”€ index.ts        # MCP server implementation
│   ā”œā”€ā”€ client.ts       # ConsignCloud API client
│   └── types.ts        # TypeScript type definitions
ā”œā”€ā”€ dist/               # Compiled JavaScript (generated)
ā”œā”€ā”€ .env.example        # Environment variable template
ā”œā”€ā”€ package.json
ā”œā”€ā”€ tsconfig.json
└── README.md
```

### Building

```bash
npm run build
```

### Watch Mode

```bash
npm run watch
```

## Troubleshooting

### API Key Issues

If you get authentication errors:
1. Verify your API key is correct in `.env`
2. Check that the API key hasn't been revoked in ConsignCloud
3. Ensure the API & Webhooks app is enabled in your ConsignCloud settings

### Connection Issues

If the server won't start:
1. Check your `.env` file exists and contains valid values
2. Verify network connectivity to `api.consigncloud.com`
3. The HTTP server validates API connection on startup and shows clear error messages

### HTTP/SSE Server Features

The HTTP server includes:
- āœ… **Startup validation** - Tests API connection before accepting requests
- āœ… **CLI arguments** - Override env vars with `--api-key`, `--port`, `--host`
- āœ… **Detailed errors** - Comprehensive error messages with HTTP status codes
- āœ… **Session management** - Proper SSE session handling
- āœ… **Health endpoint** - `/health` for monitoring
- āœ… **Masked logging** - API keys are partially hidden in logs

## License

ISC

## Support

For ConsignCloud API issues, contact: team@consigncloud.com
For MCP server issues, please open a GitHub issue.

TDQS

B3.2/5.0

Scored across 26 tools

Disambiguation4/5

Most tools have distinct purposes targeting specific resources and actions, such as create_item vs. update_item or calculate_account_metrics vs. get_account_stats. However, there is some overlap between calculate_inventory_value and get_item_stats, which both provide inventory statistics but with different focuses, potentially causing minor confusion.

Naming Consistency5/5

Tool names consistently follow a verb_noun pattern throughout, such as create_account, list_items, update_item, and calculate_sales_totals. There are no deviations in naming conventions, making the set predictable and readable for agents.

Tool Count3/5

With 26 tools, the count is borderline high for a consignment management system, as it may feel heavy and could lead to complexity in tool selection. While it covers many operations, a more streamlined set might improve usability without sacrificing functionality.

Completeness5/5

The tool surface provides comprehensive CRUD and lifecycle coverage for the consignment domain, including accounts, items, batches, categories, sales, and locations. It supports creation, retrieval, updating, deletion, listing, calculation, and analytics, with no obvious gaps that would hinder agent workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues