Skip to main content
Glama
README.md
# Opendock MCP Server

[![npm version](https://img.shields.io/npm/v/opendock-mcp.svg)](https://www.npmjs.com/package/opendock-mcp)

An [MCP](https://modelcontextprotocol.io/) server that connects AI assistants (Claude, etc.) to the legendary [Opendock](https://www.opendock.com/) [Neutron](https://neutron.opendock.com/docs) API.

## Install

No clone or build needed — just use `npx`:

```bash
npx -y opendock-mcp
```

Or install globally:

```bash
npm install -g opendock-mcp
```

## Tools

**69 tools** across 11 categories:

| Category | Tools |
|----------|-------|
| **General** | `get_version`, `get_profile` |
| **Warehouses** | `list_warehouses`, `get_warehouse`, `get_warehouse_hours`, `create_warehouse`, `update_warehouse`, `delete_warehouse` |
| **Docks** | `list_docks`, `get_dock`, `create_dock`, `update_dock`, `delete_dock`, `sort_docks`, `get_dock_availability` |
| **Load Types** | `list_load_types`, `get_load_type`, `get_load_type_availability`, `create_load_type`, `update_load_type`, `delete_load_type` |
| **Appointments** | `list_appointments`, `search_appointments`, `get_appointment`, `create_appointment`, `update_appointment`, `delete_appointment`, `get_public_appointment`, `undo_appointment_status`, `create_recurring_appointments`, `delete_recurring_appointments`, `add_appointment_tag`, `remove_appointment_tag` |
| **Carriers** | `list_carriers`, `get_carrier`, `create_carrier`, `update_carrier`, `get_booked_carriers` |
| **Companies** | `list_companies`, `get_company`, `create_company` |
| **Orgs** | `get_org`, `update_org`, `update_favorite_carriers` |
| **Audit Log** | `get_audit_log` |
| **Settings Metadata** | `get_settings_metadata`, `get_setting_metadata`, `validate_settings_metadata` |
| **Metrics** | `get_appointment_volume_by_date`, `get_appointment_volume_by_carrier`, `get_appointment_volume_by_load_type`, `get_appointment_volume_by_time_of_day`, `get_appointment_volume_by_day_of_week`, `get_appointment_avg_duration_by_load_type`, `get_appointment_avg_duration_by_status`, `get_appointment_avg_duration_by_dock_and_status`, `get_appointment_count_for_carrier`, `get_appointment_count_by_status_for_carrier`, `get_appointment_count_for_docks`, `get_reserve_count_for_user`, `get_dock_dwell_time`, `get_carrier_status_percentages`, `list_appointment_metrics`, `export_appointment_metrics_excel`, `get_appointment_status_times`, `get_first_available_appointment`, `get_warehouse_insights`, `get_warehouse_capacity_usage`, `export_yard_data_excel` |

## Prerequisites

- Node.js 18+
- An Opendock account with API access

## Authentication

The server supports two authentication methods:

**Option 1: Username/password** (recommended) — the server handles login and token refresh automatically.

```
OPENDOCK_USERNAME=user@example.com
OPENDOCK_PASSWORD=your-password
```

**Option 2: Pre-existing JWT token**

```
OPENDOCK_TOKEN=your-jwt-token
```

Optionally set the API URL:

```
OPENDOCK_API_URL=https://neutron.opendock.com           # production (default)
```

```
OPENDOCK_API_URL=https://neutron.staging.opendock.com    # staging
```

## Usage with Claude Desktop

Add to your `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "opendock": {
      "command": "npx",
      "args": ["-y", "opendock-mcp"],
      "env": {
        "OPENDOCK_USERNAME": "user@example.com",
        "OPENDOCK_PASSWORD": "your-password"
      }
    }
  }
}
```

## Usage with Claude Code

```bash
claude mcp add opendock -- npx -y opendock-mcp
```

Set the required environment variables before launching Claude Code, or pass them in the MCP config.

## Testing

Use the [MCP Inspector](https://github.com/modelcontextprotocol/inspector) to test interactively:

```bash
OPENDOCK_USERNAME=user@example.com OPENDOCK_PASSWORD=your-password \
  npx @modelcontextprotocol/inspector npx -y opendock-mcp
```

## Development

```bash
git clone https://github.com/Pollamin/opendock-mcp.git
cd opendock-mcp
npm install
npm run build
```

## License

MIT

TDQS

C2.7/5.0

Scored across 71 tools

Disambiguation4/5

Most tools have clearly distinct names and descriptions, but the numerous similar analytic tools (e.g., get_appointment_volume_by_*) may cause confusion for an agent selecting the exact metric needed.

Naming Consistency4/5

The naming follows a consistent verb_noun pattern with snake_case, but there are minor deviations like find_and_book_appointment and undo_appointment_status.

Tool Count2/5

With 71 tools, the count is excessive for the domain of dock appointment management. Many tools are analytical metrics that could be consolidated, and the server includes trivial utilities like get_version.

Completeness3/5

Core CRUD is covered for most entities, but notable gaps exist: no delete_carrier, delete_company, or tools for managing organizations beyond update_org.

Maintenance

ActivityInactive
ResponsivenessNo issues