MCP-Tools: Zeiterfassung und Kalender

Zeiten erfassen, Timer starten und stoppen, Einträge korrigieren sowie Google-Calendar-Termine lesen, anlegen und gemeinsame freie Zeitfenster im Team finden.

Voraussetzungen
  • Module Zeiterfassung bzw. Kalender aktiv.
  • Für Kalender-Tools: ein verbundener Google Calendar (für find_team_free_slots zusätzlich Kollegen, die ihre Verfügbarkeit teilen).

list_time_entries

Listet Zeiteinträge der Organisation, neueste Startzeit zuerst; filterbar nach Projekt und Aufgabe. Voraussetzungen: Rolle Viewer oder höher, Schlüssel-Scope „read“ oder höher, Modul „Zeiterfassung“ aktiv.

projectId
Optional · string — Nur Einträge dieses Projekts.
taskId
Optional · string — Nur Einträge zu dieser Aufgabe.
limit
Optional · number — Maximale Anzahl Ergebnisse (Standard 50, höchstens 200).

get_running_timer

Liefert deinen aktuell laufenden Zeiteintrag (ohne Endzeit) in der Organisation oder null, wenn keiner läuft. Voraussetzungen: Rolle Viewer oder höher, Schlüssel-Scope „read“ oder höher, Modul „Zeiterfassung“ aktiv. Dieses Tool hat keine Parameter.

create_time_entry

Erfasst einen Zeiteintrag für dich. Fehlt endTime, startet ein laufender Timer; sonst wird die Dauer in Sekunden aus Start und Ende berechnet. Das Tool prüft nicht, ob bereits ein Timer läuft. Voraussetzungen: Rolle Member oder höher, Schlüssel-Scope „write“ oder höher, Modul „Zeiterfassung“ aktiv.

startTime
Pflicht · string — Beginn als ISO-8601-Zeitpunkt.
endTime
Optional · string — Ende (ISO 8601). Weglassen startet einen laufenden Timer.
description
Optional · string — Beschreibung der Tätigkeit.
projectId
Optional · string — ID des zugeordneten Projekts.
taskId
Optional · string — ID der zugehörigen Aufgabe.

stop_timer

Beendet deinen laufenden Timer und berechnet die Dauer. Gesucht wird dein laufender Eintrag ohne Einschränkung auf die Organisation. Gibt es keinen, kommt der Fehler „No running timer found“. Voraussetzungen: Rolle Member oder höher, Schlüssel-Scope „write“ oder höher, Modul „Zeiterfassung“ aktiv.

endTime
Optional · string — Ende (ISO 8601). Standard: jetzt.

update_time_entry

Ändert einen Zeiteintrag (Beschreibung, Zeiten, Projekt, Aufgabe) und berechnet die Dauer neu. Einträge mit Abrechnungsstatus reserviert oder abgerechnet (reserved/billed) sind gesperrt. Voraussetzungen: Rolle Member oder höher, Schlüssel-Scope „write“ oder höher, Modul „Zeiterfassung“ aktiv.

id
Pflicht · string — ID des Zeiteintrags.
startTime
Optional · string — Neuer Beginn (ISO 8601).
endTime
Optional · string — Neues Ende (ISO 8601).
description
Optional · string — Neue Beschreibung.
projectId
Optional · string — ID des zugeordneten Projekts.
taskId
Optional · string — ID der zugehörigen Aufgabe.

delete_time_entry

Löscht einen Zeiteintrag. Erfordert mindestens die Rolle Admin und einen Schlüssel mit delete-Scope. Reservierte oder abgerechnete Einträge lassen sich nicht löschen. Voraussetzungen: Rolle Admin oder höher, Schlüssel-Scope „delete“ oder höher, Modul „Zeiterfassung“ aktiv.

id
Pflicht · string — ID des Zeiteintrags.

list_calendar_events

Listet anstehende Termine aus dem verbundenen Google Calendar und Outlook-Kalender des aktuellen Nutzers (Google unter events, Outlook unter outlook.events). Ist kein Kalender verbunden, antwortet das Tool mit connected=false und einem Hinweis statt mit einem Fehler. Nur-intern-Termine listet list_meetings. Voraussetzungen: Rolle Viewer oder höher, Schlüssel-Scope „read“ oder höher, Modul „Kalender“ aktiv.

maxResults
Optional · number · Standard: 20 — Maximale Anzahl der Termine (Standard 20, höchstens 50).

create_calendar_event

Legt einen Termin an. Mit calendar wählst du das Ziel: google, outlook oder internal (nur in der App); auto nimmt den verbundenen Google-Kalender, sonst Outlook, sonst intern. Dateien lassen sich als attachments mitgeben und hängen auch am Google-/Outlook-Termin (Google über Drive, Outlook bis 3 MB, sonst Link in der Beschreibung). Ticketnummern und Kontext gehören in die Beschreibung (Notizen). Voraussetzungen: Rolle Member oder höher, Schlüssel-Scope „write“ oder höher, Modul „Kalender“ aktiv.

title
Pflicht · string — Titel des Termins.
startDateTime
Pflicht · string — Beginn als ISO-8601-Zeitpunkt mit UTC-Offset oder Z, z. B. 2026-07-01T10:00:00+02:00.
endDateTime
Pflicht · string — Ende als ISO-8601-Zeitpunkt mit UTC-Offset oder Z, z. B. 2026-07-01T11:00:00+02:00.
description
Optional · string — Optionale Beschreibung des Termins.
addMeet
Optional · boolean · Standard: false — Fügt dem Termin einen Online-Meeting-Link hinzu (Google Meet bzw. Teams).
calendar
Optional · string · auto | google | outlook | internal · Standard: auto — Ziel-Kalender: google, outlook oder internal (nur in der App).
calendarId
Optional · string — Konkrete Google-/Outlook-Kalender-ID. Standard: der in den Kalender-Einstellungen markierte Kalender.
attachments
Optional · array — Bis zu 5 Dateien (je 10 MB) als Objekte mit name sowie text oder contentBase64 (und optional mimeType). Text eignet sich für Zusammenfassungen und Ticketlisten, Base64 nur für kleine Binärdateien.

update_calendar_event

Bearbeitet einen bestehenden Termin im verbundenen Google- oder Outlook-Kalender. Nur übergebene Felder ändern sich. source, eventId und calendarId stammen aus list_calendar_events. Termine, die create_calendar_event mit dem Meetings-Modul angelegt hat, sind App-Meetings und werden mit update_meeting geändert. Voraussetzungen: Rolle Member oder höher, Schlüssel-Scope „write“ oder höher, Modul „Kalender“ aktiv.

source
Pflicht · string — Welcher Kalender: google oder outlook.
eventId
Pflicht · string — Die Event-id aus list_calendar_events.
calendarId
Optional · string — Die calendarId des Events aus list_calendar_events (für Termine außerhalb des Hauptkalenders).
title
Optional · string — Neuer Titel.
startDateTime
Optional · string — Neuer Beginn, ISO 8601 mit UTC-Offset oder Z.
endDateTime
Optional · string — Neues Ende, ISO 8601 mit UTC-Offset oder Z.
description
Optional · string — Ersetzt die Notizen des Termins.
location
Optional · string — Ort.
notifyGuests
Optional · boolean — Nur Google: Update-Mails an Gäste senden (Standard false).

add_event_attachment

Hängt eine Datei nachträglich an einen bestehenden Google- oder Outlook-Termin. Die Datei wird in der Organisation gespeichert (und im Kalender in der Dateiliste des Termins angezeigt) und an den Provider-Termin gehängt (Google über Drive, Outlook bis 3 MB, sonst Hinweis in der Beschreibung). Echte Dateien per create_attachment_upload_url mit source/eventId. App-Meetings nutzen add_meeting_attachment. Voraussetzungen: Rolle Member oder höher, Schlüssel-Scope „write“ oder höher, Modul „Kalender“ aktiv.

source
Pflicht · string — Welcher Kalender: google oder outlook.
eventId
Pflicht · string — Die Event-id aus list_calendar_events.
calendarId
Optional · string — Die calendarId des Events aus list_calendar_events (für Termine außerhalb des Hauptkalenders).
name
Pflicht · string — Dateiname mit Endung.
mimeType
Optional · string — MIME-Typ, z. B. application/pdf.
text
Optional · string — Textinhalt der Datei.
contentBase64
Optional · string — Dateiinhalt als Base64 (nur kleine Dateien).

list_event_attachments

Listet die Dateien, die in der App an einem Google- oder Outlook-Termin hängen. Voraussetzungen: Rolle Viewer oder höher, Schlüssel-Scope „read“ oder höher, Modul „Kalender“ aktiv.

source
Pflicht · string — Welcher Kalender: google oder outlook.
eventId
Pflicht · string — Die Event-id aus list_calendar_events.
calendarId
Optional · string — Die calendarId des Events aus list_calendar_events (für Termine außerhalb des Hauptkalenders).

find_team_free_slots

Sucht die frühesten kommenden freien Zeitfenster, die du mit deinen Teammitgliedern gemeinsam hast – berücksichtigt werden verbundene Google-, Outlook- und iCal-Kalender und nur Mitglieder, die ihre Verfügbarkeit geteilt haben (Opt-in). Liefert slots und consideredTeammates. Erfordert einen Organisationskontext. Voraussetzungen: Rolle Viewer oder höher, Schlüssel-Scope „read“ oder höher, Modul „Kalender“ aktiv.

durationMin
Optional · number · Standard: 30 — Länge des Zeitfensters in Minuten.
days
Optional · number · Standard: 10 — Wie viele Kalendertage im Voraus gesucht wird (höchstens 45).
maxResults
Optional · number · Standard: 5 — Maximale Anzahl der Zeitfenster (höchstens 20).
startHour
Optional · number · Standard: 9 — Beginn der Geschäftszeit in lokaler Zeit (0–23).
endHour
Optional · number · Standard: 18 — Ende der Geschäftszeit in lokaler Zeit (0–23).
teammateUserIds
Optional · string[] — Beschränkt die Suche auf diese Teammitglieder (Supabase-Nutzer-IDs) statt auf alle, die ihre Verfügbarkeit teilen.

Häufige Stolperfallen

  • Zeitangaben mit Offset senden

    Sende Zeitpunkte als ISO 8601 mit UTC-Offset oder Z (z. B. 2026-09-26T09:00:00+02:00). Ohne Offset hängt die Interpretation von der Servereinstellung ab.

  • Timer gelten pro Person

    get_running_timer und stop_timer beziehen sich auf deinen Timer. stop_timer sucht ihn ohne Einschränkung auf die Organisation.

  • Gesperrte Einträge

    Reservierte oder abgerechnete Zeiteinträge lassen sich weder ändern noch löschen. Ein laufender Timer wird beim Anlegen nicht geprüft: create_time_entry startet auch dann einen weiteren, wenn schon einer läuft.

  • Kalender nicht verbunden

    list_calendar_events meldet connected=false, create_calendar_event liefert einen Fehler. Verbinde zuerst den Kalender in der Webapp.

Weiterlesen

Antwort nicht gefunden oder Problem tritt weiter auf?

Zum Support-Bereich

Fachlich geprüft am 2026-09-26