@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