@dversum/mcp-server
Official Model Context Protocol (MCP) server for the dVersum business management API. Lets AI assistants like Claude Desktop, Cursor, and Windsurf interact with your dVersum workspace — managing clients, projects, tasks, invoices, time tracking, and more.
Quick Start
Claude Desktop
Add this to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"dversum": {
"command": "npx",
"args": ["-y", "@dversum/mcp-server"],
"env": {
"DVERSUM_API_URL": "https://api.dversum.com/api/v1",
"DVERSUM_API_TOKEN": "your-jwt-token"
}
}
}
}
Cursor / Windsurf
Add to your MCP settings:
{
"mcpServers": {
"dversum": {
"command": "npx",
"args": ["-y", "@dversum/mcp-server"],
"env": {
"DVERSUM_API_URL": "https://api.dversum.com/api/v1",
"DVERSUM_API_TOKEN": "your-jwt-token"
}
}
}
}
Docker (Production)
Quick start
cd mcp-server
# Create .env file
echo "DVERSUM_API_URL=https://api.dversum.com/api/v1" > .env
echo "DVERSUM_API_TOKEN=your-jwt-token" >> .env
# Run
docker compose up -d
The server starts on port 3100 with a health check at /health and the MCP endpoint at /mcp.
Build & run manually
docker build -t dversum-mcp .
docker run -d \
-p 3100:3100 \
-e DVERSUM_API_URL=https://api.dversum.com/api/v1 \
-e DVERSUM_API_TOKEN=your-jwt-token \
--name dversum-mcp \
--restart unless-stopped \
dversum-mcp
Connect remote MCP to Claude Desktop
Once the Docker container is running, point Claude Desktop to the remote endpoint:
{
"mcpServers": {
"dversum": {
"url": "http://your-server:3100/mcp"
}
}
}
Environment Variables
| Variable | Required | Description | |----------|----------|-------------| | DVERSUM_API_URL | Yes | Base URL of your dVersum API (e.g. https://api.dversum.com/api/v1) | | DVERSUM_API_TOKEN | Yes | Your JWT authentication token | | MCP_TRANSPORT | No | stdio (default) or http (for Docker/remote) | | MCP_PORT | No | HTTP port when using http transport (default: 3100) |
Available Tools (152)
Clients (5)
| Tool | Description | |------|-------------| | list_clients | List all clients with pagination | | get_client | Get client details | | create_client | Create a new client | | update_client | Update client details | | delete_client | Delete a client |
Contacts (5)
| Tool | Description | |------|-------------| | list_contacts | List all contacts | | get_contact | Get contact details | | create_contact | Create a new contact | | update_contact | Update contact details | | delete_contact | Delete a contact |
Projects (12)
| Tool | Description | |------|-------------| | list_projects | List all projects | | get_project | Get project details | | create_project | Create a new project | | update_project | Update project details | | delete_project | Delete a project | | get_project_board | Get full kanban board (columns + tasks) | | list_project_members | List project members | | add_project_member | Add a member to a project | | remove_project_member | Remove a member from a project | | get_project_time_stats | Get project time statistics | | get_gantt_data | Get Gantt chart data with dependencies | | create_column | Create a kanban column |
Tasks (16)
| Tool | Description | |------|-------------| | get_task | Get task details (assignees, subtasks, tags) | | create_task | Create a task in a project column | | update_task | Update task properties | | delete_task | Delete a task | | move_task | Move task to a different column | | assign_task | Add an assignee to a task | | remove_assignee | Remove an assignee from a task | | list_task_comments | List comments on a task | | create_comment | Add a comment to a task | | create_subtask | Create a subtask (checklist item) | | toggle_task_done | Toggle task completion | | add_tag_to_task | Add a tag to a task | | remove_tag_from_task | Remove a tag from a task | | archive_task | Archive a task | | restore_task | Restore an archived task | | move_task_to_project | Move task to a different project |
Time Tracking (8)
| Tool | Description | |------|-------------| | list_time_entries | List time entries (filter by date, project) | | create_time_entry | Log a completed time entry | | update_time_entry | Update a time entry | | delete_time_entry | Delete a time entry | | start_timer | Start a running timer | | stop_timer | Stop a running timer | | get_running_timer | Get the currently running timer | | get_time_stats | Get time tracking statistics |
Calendar (5)
| Tool | Description | |------|-------------| | list_events | List calendar events in a date range | | get_event | Get event details | | create_event | Create a calendar event | | update_event | Update an event | | delete_event | Delete an event |
Invoices (14)
| Tool | Description | |------|-------------| | list_invoices | List invoices (filter by status, client, type) | | get_invoice | Get invoice with line items and totals | | create_invoice | Create a draft invoice | | update_invoice | Update a draft invoice | | delete_invoice | Delete a draft invoice | | update_invoice_status | Change invoice status | | send_invoice_email | Send invoice via email | | create_invoice_from_time | Create invoice from tracked time | | add_invoice_line_item | Add a line item | | update_invoice_line_item | Update a line item | | delete_invoice_line_item | Delete a line item | | record_payment | Record a payment on an invoice | | create_credit_note | Create a credit note (Gutschrift) | | create_cancellation | Create a cancellation invoice (Stornorechnung) |
Quotes (12)
| Tool | Description | |------|-------------| | list_quotes | List quotes/proposals | | get_quote | Get quote with line items | | create_quote | Create a draft quote | | update_quote | Update a quote | | delete_quote | Delete a quote | | update_quote_status | Update quote status | | send_quote_email | Send quote via email | | duplicate_quote | Duplicate a quote | | convert_quote_to_invoice | Convert accepted quote to invoice | | add_quote_line_item | Add a line item | | update_quote_line_item | Update a line item | | delete_quote_line_item | Delete a line item |
Recurring Invoices (8)
| Tool | Description | |------|-------------| | list_recurring_invoices | List recurring invoice templates | | get_recurring_invoice | Get recurring invoice details | | create_recurring_invoice | Create a recurring invoice | | update_recurring_invoice | Update a recurring invoice | | delete_recurring_invoice | Delete a recurring invoice | | pause_recurring_invoice | Pause auto-generation | | resume_recurring_invoice | Resume auto-generation | | generate_recurring_invoice_now | Generate an invoice now |
Payment Reminders (6)
| Tool | Description | |------|-------------| | list_reminders | List payment reminders (Mahnungen) | | get_reminder | Get reminder details | | get_reminder_suggestion | Get suggested reminder for overdue invoice | | create_reminder | Create a payment reminder | | send_reminder_email | Send reminder via email | | delete_reminder | Delete a reminder |
Finance (11)
| Tool | Description | |------|-------------| | get_finance_overview | Monthly revenue vs expenses | | get_vat_summary | USt-Voranmeldung (KZ 81/86/66/83) | | list_received_invoices | List incoming invoices | | get_received_invoice | Get received invoice details | | approve_received_invoice | Approve a received invoice | | list_suppliers | List all suppliers | | get_supplier | Get supplier details | | create_supplier | Create a supplier | | update_supplier | Update supplier details | | delete_supplier | Delete a supplier | | get_datev_export | Preview DATEV export data |
Team Planning (5)
| Tool | Description | |------|-------------| | list_absences | List team absences | | create_absence | Create an absence entry | | update_absence | Update an absence | | delete_absence | Delete an absence | | get_vacation_stats | Get vacation quota/usage stats |
Pages (7)
| Tool | Description | |------|-------------| | list_pages | List all pages | | get_page | Get page with content | | create_page | Create a new page | | update_page | Update page metadata | | update_page_content | Update page content | | delete_page | Delete a page and children | | get_page_tree | Get page tree hierarchy |
Whiteboards (6)
| Tool | Description | |------|-------------| | list_whiteboards | List all whiteboards | | get_whiteboard | Get whiteboard with content | | create_whiteboard | Create a whiteboard | | update_whiteboard | Update whiteboard metadata | | delete_whiteboard | Delete a whiteboard | | duplicate_whiteboard | Duplicate a whiteboard |
File Storage (12)
| Tool | Description | |------|-------------| | list_files | List files in a folder | | get_file | Get file details | | delete_file | Delete a file | | get_file_download_url | Get presigned download URL | | list_folders | List folders | | create_folder | Create a new folder | | update_folder | Update folder name/color | | delete_folder | Delete a folder and contents | | get_folder_tree | Get full folder hierarchy | | create_share_link | Create a WeTransfer-style share link | | list_share_links | List active share links | | revoke_share_link | Revoke a share link |
Tags (4)
| Tool | Description | |------|-------------| | list_tags | List all tags | | create_tag | Create a tag | | update_tag | Update a tag | | delete_tag | Delete a tag |
Areas (4)
| Tool | Description | |------|-------------| | list_areas | List project areas/groups | | create_area | Create a project area | | update_area | Update an area | | delete_area | Delete an area |
Notifications (4)
| Tool | Description | |------|-------------| | list_notifications | List recent notifications | | get_unread_count | Get unread notification count | | mark_notification_read | Mark a notification as read | | mark_all_notifications_read | Mark all as read |
Organization (8)
| Tool | Description | |------|-------------| | get_organization | Get organization details | | update_organization | Update organization settings | | list_members | List team members | | invite_member | Invite a new member via email | | update_member_role | Change a member's role | | remove_member | Remove a member | | global_search | Search across all entities | | get_activity_feed | Get recent activity feed |
Development
# Clone the repo
git clone https://github.com/dversum/dversum.git
cd dversum/mcp-server
# Install dependencies
npm install
# Build
npm run build
# Run locally
DVERSUM_API_URL=http://localhost:8080/api/v1 \
DVERSUM_API_TOKEN=your-jwt-token \
node dist/bin/dversum-mcp.js
License
MIT











