Zum Hauptinhalt springen

MCP-Server

Mit dem MCP-Server von Timesheet steuern Sie Ihre Zeiterfassung per natürlicher Sprache aus KI-Assistenten und Editoren. Starten und stoppen Sie Timer, erfassen Sie vergangene Arbeit, rufen Sie Berichte und Exporte ab, beantragen Sie Abwesenheiten und verwalten Sie Projekte, indem Sie in ChatGPT, Claude, Claude Code, Cursor, VS Code und anderen Tools chatten, die das Model Context Protocol unterstützen.

Pro-Plan

Der MCP-Server erfordert einen Pro-Plan oder höher, der API-Zugang enthält. Den vollständigen Vergleich finden Sie auf der Seite Pläne.

Das Video ist auf Englisch. Beim Abspielen wird es von YouTube geladen.

Was ist MCP​

Das Model Context Protocol (MCP) ist ein offener Standard, mit dem sich KI-Assistenten mit externen Tools verbinden können. Der MCP-Server von Timesheet stellt dem Assistenten Ihr Konto bereit. Wenn Sie also sagen „Starte den Timer für mein Website-Projekt", ruft der Assistent Timesheet auf, startet ihn und bestätigt das Ergebnis.

Der Server unterstützt die aktuelle Version des Protokolls (2026-07-28) und die früheren Versionen, sodass er mit neuen und älteren Clients funktioniert.

Zwei Wege zur Verbindung​

Gehosteter ServerLokaler Server
Adressehttps://mcp.timesheet.ioLäuft auf Ihrem Computer mit npx @timesheet/mcp
AnmeldungIhr Timesheet-Konto (OAuth 2.1) oder ein API-SchlüsselEin API-Schlüssel
Verwenden mitClaude, ChatGPT und Clients, die sich mit einer URL verbinden, etwa Claude Code, Cursor und VS CodeClaude Desktop, Claude Code, Cursor, VS Code und anderen MCP-Clients
VoraussetzungenNur Ihr Pro-PlanNode.js 20 oder höher

Beide stellen dem Assistenten dieselben Tools bereit. Derselbe API-Schlüssel funktioniert für den gehosteten Server, den lokalen Server und die Timesheet-API.

ChatGPT verbinden​

ChatGPT verbindet sich mit dem gehosteten Server. Sie benötigen daher weder einen API-Schlüssel noch Node.js.

  1. Aktivieren Sie in ChatGPT den Entwicklermodus (Developer mode). Er befindet sich in den ChatGPT-Einstellungen, und OpenAI verschiebt ihn gelegentlich. Den aktuellen Ort finden Sie in der Anleitung von OpenAI.
  2. Fügen Sie eine neue Verbindung hinzu und geben Sie https://mcp.timesheet.io als Server-URL ein.
  3. Wenn ChatGPT Sie dazu auffordert, melden Sie sich mit Ihrem Timesheet-Konto an und erlauben Sie den Zugriff.
  4. Starten Sie einen neuen Chat und fragen Sie „Wie ist mein Timer-Status?", um die Verbindung zu bestätigen.

Ob Sie den Entwicklermodus aktivieren können, hängt von Ihrem ChatGPT-Plan und den Einstellungen Ihres Workspace ab.

Claude verbinden​

Claude meldet sich mit Ihrem Timesheet-Konto an. Sie benötigen daher weder einen API-Schlüssel noch Node.js.

Claude im Web und in der Desktop-App​

  1. Öffnen Sie in Claude Anpassen > Konnektoren und fügen Sie einen benutzerdefinierten Connector hinzu.
  2. Geben Sie https://mcp.timesheet.io als Server-URL ein.
  3. Verbinden Sie den Connector, melden Sie sich mit Ihrem Timesheet-Konto an und wählen Sie Zugriff erlauben.
  4. Starten Sie einen neuen Chat und fragen Sie „Wie ist mein Timer-Status?", um die Verbindung zu bestätigen.

In einem Team- oder Enterprise-Plan fügt zuerst ein Owner den Connector in den Organisationseinstellungen hinzu. Mitglieder verbinden sich dann mit ihrem eigenen Timesheet-Konto.

Claude Code​

  1. Fügen Sie den Server hinzu:

    claude mcp add --transport http --scope user timesheet https://mcp.timesheet.io
  2. Führen Sie in Claude Code /mcp aus, wählen Sie timesheet und melden Sie sich mit Ihrem Timesheet-Konto an.

--scope user stellt den Server in allen Ihren Projekten bereit. Um sich stattdessen mit einem API-Schlüssel zu verbinden, folgen Sie dem Abschnitt „Gehosteten Server mit API-Schlüssel verwenden".

API-Schlüssel erstellen​

Claude und ChatGPT melden sich mit Ihrem Timesheet-Konto an. Andere Clients und der lokale Server verbinden sich mit einem API-Schlüssel. Ein Schlüssel funktioniert für den MCP-Server und die Timesheet-API.

  1. Öffnen Sie die Web-App und gehen Sie zu Integrationen > API-Schlüssel (siehe API-Schlüssel).
  2. Wählen Sie Neuer API-Schlüssel, vergeben Sie einen Namen und legen Sie fest, wann er abläuft.
  3. Kopieren Sie den Schlüssel und bewahren Sie ihn an einem sicheren Ort auf.
Bewahren Sie Ihren Schlüssel sicher auf

Ihr API-Schlüssel gewährt vollen Zugriff auf Ihr Konto. Geben Sie ihn niemals weiter und checken Sie ihn nicht in die Versionsverwaltung ein. Falls er jemals offengelegt wird, löschen Sie ihn und erstellen Sie einen neuen.

Gehosteten Server mit API-Schlüssel verwenden​

Clients, die sich mit einer URL verbinden, können den gehosteten Server mit Ihrem API-Schlüssel verwenden. Sie benötigen dann kein Node.js. Der Client sendet den Schlüssel im Authorization-Header.

Claude Code​

claude mcp add --transport http --scope user timesheet https://mcp.timesheet.io --header "Authorization: Bearer your-api-token-here"

Cursor​

Fügen Sie Folgendes zu ~/.cursor/mcp.json hinzu:

{
"mcpServers": {
"timesheet": {
"url": "https://mcp.timesheet.io",
"headers": {
"Authorization": "Bearer your-api-token-here"
}
}
}
}

VS Code​

Fügen Sie Folgendes zu Ihrer Benutzer-mcp.json (MCP: Open User Configuration) oder zu .vscode/mcp.json hinzu:

{
"inputs": [
{
"type": "promptString",
"id": "timesheet-api-token",
"description": "Timesheet API key",
"password": true
}
],
"servers": {
"timesheet": {
"type": "http",
"url": "https://mcp.timesheet.io",
"headers": {
"Authorization": "Bearer ${input:timesheet-api-token}"
}
}
}
}

Lokalen Server installieren​

Fügen Sie den Timesheet-Server zur MCP-Konfiguration Ihres Clients hinzu und verwenden Sie dabei den soeben erstellten API-Schlüssel. Starten Sie den Client neu, nachdem Sie die Konfiguration geändert haben.

Claude Code​

Führen Sie diesen Befehl in Ihrem Terminal aus:

claude mcp add timesheet --scope user -e TIMESHEET_API_TOKEN=your-api-token-here -- npx -y @timesheet/mcp

Mit --scope user steht der Server in all Ihren Projekten zur Verfügung. Führen Sie claude mcp list aus, um zu prüfen, ob er verbunden ist.

Claude Desktop​

Bearbeiten Sie die Konfigurationsdatei:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"timesheet": {
"command": "npx",
"args": ["-y", "@timesheet/mcp"],
"env": {
"TIMESHEET_API_TOKEN": "your-api-token-here"
}
}
}
}

Starten Sie Claude Desktop neu und fragen Sie dann „Wie ist mein Timer-Status?", um die Verbindung zu bestätigen.

Cursor​

Fügen Sie den Server zu ~/.cursor/mcp.json hinzu, um ihn in allen Projekten zu verwenden, oder zu .cursor/mcp.json in einem Projekt, um ihn nur dort zu verwenden:

{
"mcpServers": {
"timesheet": {
"command": "npx",
"args": ["-y", "@timesheet/mcp"],
"env": {
"TIMESHEET_API_TOKEN": "your-api-token-here"
}
}
}
}

VS Code​

Führen Sie MCP: Open User Configuration über die Befehlspalette aus, um den Server in allen Arbeitsbereichen zu verwenden, oder erstellen Sie .vscode/mcp.json in einem Projekt. Fügen Sie hinzu:

{
"inputs": [
{
"type": "promptString",
"id": "timesheet-api-token",
"description": "Timesheet API key",
"password": true
}
],
"servers": {
"timesheet": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@timesheet/mcp"],
"env": {
"TIMESHEET_API_TOKEN": "${input:timesheet-api-token}"
}
}
}
}

VS Code fragt beim ersten Start des Servers nach Ihrem API-Schlüssel und speichert ihn sicher, sodass der Schlüssel nicht in der Datei steht.

Andere Clients​

Die meisten MCP-Clients benötigen dieselben drei Angaben:

  • Befehl: npx
  • Argumente: -y @timesheet/mcp
  • Umgebungsvariable: TIMESHEET_API_TOKEN mit Ihrem API-Schlüssel

Globale Installation (optional)​

Für einen schnelleren Start installieren Sie das Paket einmalig und verweisen Sie den Befehl darauf:

npm install -g @timesheet/mcp
{
"mcpServers": {
"timesheet": {
"command": "timesheet-mcp",
"env": {
"TIMESHEET_API_TOKEN": "your-api-token-here"
}
}
}
}

Beispiel-Prompts​

Sobald die Verbindung besteht, sprechen Sie mit Ihrem Assistenten in natürlicher Sprache. Der genaue Wortlaut spielt keine Rolle, der Assistent interpretiert Ihre Absicht.

  • Timer: „Starte den Timer für das Website-Projekt", „Pausiere meinen Timer, ich mache Mittagspause", „Stoppe den Timer", „Wie ist mein Timer-Status?"
  • Aufgaben: „Füge eine Notiz hinzu: Login-Fehler behoben", „Füge eine Auslage von 45 $ für das Mittagessen mit dem Kunden hinzu", „Markiere die aktuelle Aufgabe als verrechenbar".
  • Projekte: „Zeige meine aktiven Projekte", „Erstelle ein Projekt namens Website-Redesign", „Archiviere das alte Website-Projekt".
  • Verlauf: „Woran habe ich gestern gearbeitet?", „Zeige die Zeiteinträge dieser Woche", „Erfasse 2 Stunden auf dem API-Projekt für Montag".
  • Berichte: „Wie viele verrechenbare Stunden habe ich im September erfasst?", „Exportiere den letzten Monat als Excel-Datei", „Sende den Stundenzettel für Acme vom September als PDF an billing@acme.com".
  • Abwesenheiten und Team: „Trage mich nächsten Freitag als abwesend ein", „Zeige meine offenen Abwesenheitsanträge", „Wer in meinem Team erfasst gerade Zeit?"

Interaktive Karten​

In Clients, die MCP Apps unterstützen, etwa ChatGPT und Claude, erscheinen manche Ergebnisse als interaktive Karten statt als reiner Text:

  • Timer: der laufende Timer mit einer Live-Uhr und Schaltflächen zum Pausieren, Fortsetzen oder Stoppen.
  • Zeiteinträge: der hinzugefügte oder geänderte Eintrag mit Projekt, Zeitraum und Dauer.
  • Statistiken: Ihre gesamten und verrechenbaren Stunden mit einem Balken pro Projekt. Wählen Sie Erweitern, um die Diagramme zu sehen.
  • Exporte: eine Bestätigung, wenn ein Bericht gesendet wurde, oder die Schaltfläche Herunterladen, wenn ein Export bereit ist.
  • Abwesenheiten: der Antrag und sein Status. Einen offenen Antrag können Sie direkt in der Karte mit Antrag stornieren stornieren.

Clients ohne Unterstützung für MCP Apps, etwa Claude Code, zeigen dieselben Informationen als Text.

Verfügbare Tools​

Der Server stellt mehr als 100 Tools bereit. Der Assistent wählt die passenden für Ihre Anfrage aus, Sie müssen sie also nicht benennen.

Timer​

ToolBeschreibung
timer_startStartet einen Timer für ein Projekt, mit optionaler rückdatierter Startzeit
timer_stopStoppt den laufenden Timer und schließt die Aufgabe ab
timer_pausePausiert den Timer für eine Pause
timer_resumeSetzt den Timer nach einer Pause fort
timer_statusPrüft den aktuellen Timer-Status
timer_updateAktualisiert den laufenden Timer (Beschreibung, Standort, Verrechenbarkeitsstatus, Tags)

Aufgabenerweiterungen​

ToolBeschreibung
task_add_noteFügt der laufenden Aufgabe eine Notiz hinzu
task_add_expenseErfasst eine Auslage für die laufende Aufgabe
task_add_pauseFügt der laufenden Aufgabe eine manuelle Pause hinzu

Projekte​

ToolBeschreibung
project_listListet Projekte auf, mit optionalen Filtern (Status, Team, Suche)
project_createErstellt ein Projekt
project_updateAktualisiert ein Projekt oder archiviert es
project_deleteLöscht ein Projekt dauerhaft
project_getRuft die Details eines Projekts ab

Aufgaben​

ToolBeschreibung
task_listListet Zeiteinträge auf, mit Datums- und Projektfiltern
task_createErstellt einen manuellen Zeiteintrag für vergangene Arbeit
task_updateÄndert die Details, Zeiten oder den Abrechnungsstatus einer Aufgabe
task_deleteLöscht einen Zeiteintrag
task_getRuft die Details einer Aufgabe ab

Berichte und Exporte​

ToolBeschreibung
statistics_getSummen, Aufschlüsselung nach Projekten und Tagesstunden für einen Zeitraum von bis zu einem Jahr
export_generateExportiert Zeiteinträge als Excel, CSV oder PDF und liefert einen Download-Link
export_sendErstellt einen Export und sendet ihn an eine E-Mail-Adresse
export_report_types, export_fieldsListet die verfügbaren Berichtsarten und Spalten auf
export_from_template, export_template_list, export_template_get, export_template_create, export_template_update, export_template_deleteSpeichert Exporteinstellungen als Vorlagen und verwendet sie erneut
report_task_pdf, report_expense_pdf, report_note_pdfPDF für eine einzelne Aufgabe, Auslage oder Notiz (die passenden _get-Tools liefern die Daten)
report_document_get, report_document_pdf, report_document_xmlRechnungs- oder Dokumentdaten, PDF oder E-Rechnungs-XML (ZUGFeRD, XRechnung, ebInterface)

Abwesenheiten und Verträge​

ToolBeschreibung
absence_list, absence_getListet Abwesenheiten auf, mit Filtern für Person, Art, Status und Datum
absence_create, absence_update, absence_cancel, absence_deleteBeantragt, ändert, storniert oder löscht eine Abwesenheit
absence_approve, absence_rejectGenehmigt oder lehnt eine offene Abwesenheit ab
absence_type_list, absence_type_get, absence_type_create, absence_type_update, absence_type_deleteVerwaltet Abwesenheitsarten wie Urlaub oder Krankenstand
contract_list, contract_get, contract_create, contract_update, contract_deleteVerwaltet Arbeitsverträge
contract_activate, contract_suspend, contract_reactivate, contract_terminateÄndert den Status eines Vertrags

To-dos, Notizen, Auslagen und Pausen​

ToolBeschreibung
todo_list, todo_get, todo_create, todo_update, todo_close, todo_reopen, todo_deleteVerwaltet To-dos und schließt sie oder öffnet sie erneut
note_list, note_get, note_create, note_update, note_delete, note_file_urlVerwaltet Notizen und lädt ihre Anhänge herunter
expense_list, expense_get, expense_create, expense_update, expense_delete, expense_refund, expense_file_urlVerwaltet Auslagen, markiert sie als erstattet und lädt Belege herunter
pause_list, pause_get, pause_create, pause_update, pause_deleteVerwaltet Pausen in Aufgaben

Teams und Organisationen​

ToolBeschreibung
team_listListet Teams auf
team_member_list, team_member_get, team_member_add, team_member_update, team_member_removeVerwaltet Teammitglieder und Einladungen
team_member_statusZeigt, welche Teammitglieder gerade Zeit erfassen
project_member_list, project_member_get, project_member_add, project_member_update, project_member_removeVerwaltet Projektmitglieder
organization_list, organization_get, organization_create, organization_update, organization_deleteVerwaltet Organisationen
organization_member_list, organization_member_get, organization_member_add, organization_member_update, organization_member_removeVerwaltet Organisationsmitglieder und Einladungen

Tags, Raten und Ihr Konto​

ToolBeschreibung
tag_list, tag_get, tag_create, tag_update, tag_deleteVerwaltet Tags
rate_list, rate_get, rate_create, rate_update, rate_deleteVerwaltet Raten
profile_get, profile_updateZeigt und aktualisiert Ihr Profil
settings_get, settings_updateZeigt und aktualisiert Ihre Einstellungen
auth_configureKonfiguriert die API-Authentifizierung anstelle der Umgebungsvariable (nur lokaler Server)

Fehlerbehebung​

Nichts reagiert oder Sie erhalten einen Authentifizierungsfehler. Prüfen Sie, ob TIMESHEET_API_TOKEN korrekt gesetzt ist, ohne zusätzliche Leerzeichen oder Anführungszeichen, und ob der Schlüssel noch unter Integrationen > API-Schlüssel vorhanden ist. Erstellen Sie bei Bedarf einen neuen Schlüssel und starten Sie den Client anschließend neu.

Der Befehl wird nicht gefunden. Vergewissern Sie sich, dass Node.js 20 oder höher installiert ist (node --version). Wenn npx das Paket nicht findet, installieren Sie es global mit npm install -g @timesheet/mcp und verwenden Sie timesheet-mcp als Befehl.

ChatGPT kann die Verbindung nicht hinzufügen. Prüfen Sie, ob der Entwicklermodus aktiviert ist und die URL genau https://mcp.timesheet.io lautet. Ihr Timesheet-Konto benötigt einen Pro-Plan, damit die Tools funktionieren.

Ein Timer startet nicht. Stellen Sie sicher, dass der Projektname zu einem vorhandenen Projekt passt und dass Sie Zugriff darauf haben. Fragen Sie „Wie ist mein Timer-Status?", um die Verbindung isoliert zu testen.

Sicherheit​

Der lokale Server läuft auf Ihrem Computer mit Ihrem persönlichen API-Schlüssel und kommuniziert direkt mit der Timesheet-API, sodass die App nicht geöffnet sein muss. Der gehostete Server macht dasselbe mit Ihrem API-Schlüssel oder Ihrer Timesheet-Anmeldung.

In beiden Fällen handelt der Assistent mit den Berechtigungen Ihres Kontos: Er sieht und ändert nur, was Sie auch in der Web-App sehen und ändern können. Ihr Abonnement oder Ihre Abrechnung kann er nicht ändern. Viele Clients fragen vor jedem Tool-Aufruf nach Ihrer Bestätigung. Prüfen Sie daher, was der Assistent vorhat, besonders bevor er etwas löscht.

Um einen API-Schlüssel zu widerrufen, löschen Sie ihn unter Integrationen > API-Schlüssel. Damit trennen Sie jeden Client und jede Integration, die den Schlüssel verwendet, ob lokal oder gehostet. Entfernen Sie anschließend den Server aus der Konfiguration Ihres Clients. Um ChatGPT zu trennen, entfernen Sie die Verbindung in Ihren ChatGPT-Einstellungen.

Siehe auch​