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.
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.
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 Server | Lokaler Server | |
|---|---|---|
| Adresse | https://mcp.timesheet.io | Läuft auf Ihrem Computer mit npx @timesheet/mcp |
| Anmeldung | Ihr Timesheet-Konto (OAuth 2.1) oder ein API-Schlüssel | Ein API-Schlüssel |
| Verwenden mit | Claude, ChatGPT und Clients, die sich mit einer URL verbinden, etwa Claude Code, Cursor und VS Code | Claude Desktop, Claude Code, Cursor, VS Code und anderen MCP-Clients |
| Voraussetzungen | Nur Ihr Pro-Plan | Node.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.
- 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.
- Fügen Sie eine neue Verbindung hinzu und geben Sie
https://mcp.timesheet.ioals Server-URL ein. - Wenn ChatGPT Sie dazu auffordert, melden Sie sich mit Ihrem Timesheet-Konto an und erlauben Sie den Zugriff.
- 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
- Öffnen Sie in Claude Anpassen > Konnektoren und fügen Sie einen benutzerdefinierten Connector hinzu.
- Geben Sie
https://mcp.timesheet.ioals Server-URL ein. - Verbinden Sie den Connector, melden Sie sich mit Ihrem Timesheet-Konto an und wählen Sie Zugriff erlauben.
- 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
-
Fügen Sie den Server hinzu:
claude mcp add --transport http --scope user timesheet https://mcp.timesheet.io -
Führen Sie in Claude Code
/mcpaus, 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.
- Öffnen Sie die Web-App und gehen Sie zu Integrationen > API-Schlüssel (siehe API-Schlüssel).
- Wählen Sie Neuer API-Schlüssel, vergeben Sie einen Namen und legen Sie fest, wann er abläuft.
- Kopieren Sie den Schlüssel und bewahren Sie ihn an einem sicheren Ort 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_TOKENmit 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
| Tool | Beschreibung |
|---|---|
timer_start | Startet einen Timer für ein Projekt, mit optionaler rückdatierter Startzeit |
timer_stop | Stoppt den laufenden Timer und schließt die Aufgabe ab |
timer_pause | Pausiert den Timer für eine Pause |
timer_resume | Setzt den Timer nach einer Pause fort |
timer_status | Prüft den aktuellen Timer-Status |
timer_update | Aktualisiert den laufenden Timer (Beschreibung, Standort, Verrechenbarkeitsstatus, Tags) |
Aufgabenerweiterungen
| Tool | Beschreibung |
|---|---|
task_add_note | Fügt der laufenden Aufgabe eine Notiz hinzu |
task_add_expense | Erfasst eine Auslage für die laufende Aufgabe |
task_add_pause | Fügt der laufenden Aufgabe eine manuelle Pause hinzu |
Projekte
| Tool | Beschreibung |
|---|---|
project_list | Listet Projekte auf, mit optionalen Filtern (Status, Team, Suche) |
project_create | Erstellt ein Projekt |
project_update | Aktualisiert ein Projekt oder archiviert es |
project_delete | Löscht ein Projekt dauerhaft |
project_get | Ruft die Details eines Projekts ab |
Aufgaben
| Tool | Beschreibung |
|---|---|
task_list | Listet Zeiteinträge auf, mit Datums- und Projektfiltern |
task_create | Erstellt einen manuellen Zeiteintrag für vergangene Arbeit |
task_update | Ändert die Details, Zeiten oder den Abrechnungsstatus einer Aufgabe |
task_delete | Löscht einen Zeiteintrag |
task_get | Ruft die Details einer Aufgabe ab |
Berichte und Exporte
| Tool | Beschreibung |
|---|---|
statistics_get | Summen, Aufschlüsselung nach Projekten und Tagesstunden für einen Zeitraum von bis zu einem Jahr |
export_generate | Exportiert Zeiteinträge als Excel, CSV oder PDF und liefert einen Download-Link |
export_send | Erstellt einen Export und sendet ihn an eine E-Mail-Adresse |
export_report_types, export_fields | Listet die verfügbaren Berichtsarten und Spalten auf |
export_from_template, export_template_list, export_template_get, export_template_create, export_template_update, export_template_delete | Speichert Exporteinstellungen als Vorlagen und verwendet sie erneut |
report_task_pdf, report_expense_pdf, report_note_pdf | PDF für eine einzelne Aufgabe, Auslage oder Notiz (die passenden _get-Tools liefern die Daten) |
report_document_get, report_document_pdf, report_document_xml | Rechnungs- oder Dokumentdaten, PDF oder E-Rechnungs-XML (ZUGFeRD, XRechnung, ebInterface) |
Abwesenheiten und Verträge
| Tool | Beschreibung |
|---|---|
absence_list, absence_get | Listet Abwesenheiten auf, mit Filtern für Person, Art, Status und Datum |
absence_create, absence_update, absence_cancel, absence_delete | Beantragt, ändert, storniert oder löscht eine Abwesenheit |
absence_approve, absence_reject | Genehmigt oder lehnt eine offene Abwesenheit ab |
absence_type_list, absence_type_get, absence_type_create, absence_type_update, absence_type_delete | Verwaltet Abwesenheitsarten wie Urlaub oder Krankenstand |
contract_list, contract_get, contract_create, contract_update, contract_delete | Verwaltet Arbeitsverträge |
contract_activate, contract_suspend, contract_reactivate, contract_terminate | Ändert den Status eines Vertrags |
To-dos, Notizen, Auslagen und Pausen
| Tool | Beschreibung |
|---|---|
todo_list, todo_get, todo_create, todo_update, todo_close, todo_reopen, todo_delete | Verwaltet To-dos und schließt sie oder öffnet sie erneut |
note_list, note_get, note_create, note_update, note_delete, note_file_url | Verwaltet Notizen und lädt ihre Anhänge herunter |
expense_list, expense_get, expense_create, expense_update, expense_delete, expense_refund, expense_file_url | Verwaltet Auslagen, markiert sie als erstattet und lädt Belege herunter |
pause_list, pause_get, pause_create, pause_update, pause_delete | Verwaltet Pausen in Aufgaben |
Teams und Organisationen
| Tool | Beschreibung |
|---|---|
team_list | Listet Teams auf |
team_member_list, team_member_get, team_member_add, team_member_update, team_member_remove | Verwaltet Teammitglieder und Einladungen |
team_member_status | Zeigt, welche Teammitglieder gerade Zeit erfassen |
project_member_list, project_member_get, project_member_add, project_member_update, project_member_remove | Verwaltet Projektmitglieder |
organization_list, organization_get, organization_create, organization_update, organization_delete | Verwaltet Organisationen |
organization_member_list, organization_member_get, organization_member_add, organization_member_update, organization_member_remove | Verwaltet Organisationsmitglieder und Einladungen |
Tags, Raten und Ihr Konto
| Tool | Beschreibung |
|---|---|
tag_list, tag_get, tag_create, tag_update, tag_delete | Verwaltet Tags |
rate_list, rate_get, rate_create, rate_update, rate_delete | Verwaltet Raten |
profile_get, profile_update | Zeigt und aktualisiert Ihr Profil |
settings_get, settings_update | Zeigt und aktualisiert Ihre Einstellungen |
auth_configure | Konfiguriert 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
- mcp.timesheet.io: Übersicht zur Einrichtung mit interaktiver Demo.
- Integrationen: API-Schlüssel, Webhooks und der Integrations-Marktplatz.
- npm: @timesheet/mcp und Issues auf GitHub.
- Model Context Protocol: der offene Standard hinter dieser Integration.