goalslot-mcp
goalslot-mcp
Ein MCP-Server für GoalSlot. Er gibt einem KI-Assistenten Werkzeuge für Ziele, Aufgaben, die wöchentliche Zeitplanvorlage, Zeiterfassung, den gemeinsamen Timer, Berichte, Notizen und das Journal – für dein eigenes GoalSlot-Konto.
Läuft über stdio, sodass jeder MCP-Host ihn starten kann. Enthält vier Skills, die einem Modell beibringen, die Werkzeuge gut zu nutzen.
Installation
Du musst zuerst die goalslot-CLI angemeldet haben, weil dieser Server die Anmeldedaten liest, die die CLI schreibt. Er führt selbst keinen Anmeldevorgang durch.
npm install -g goalslot-cli
goalslot loginFüge dann den MCP-Server zu Claude Code hinzu:
claude mcp add goalslot -- npx -y goalslot-mcpFür Claude Desktop oder jeden Host, der eine JSON-Konfiguration akzeptiert:
{
"mcpServers": {
"goalslot": {
"command": "npx",
"args": ["-y", "goalslot-mcp"]
}
}
}Prüfe, ob es funktioniert:
npx -y goalslot-mcp --list-toolsDieses Paket ist noch nicht auf npm veröffentlicht. Bis dahin installiere es aus dem Quellcode: Klone das Repository,
npm install && npm run build, und weise den Host aufnode /path/to/goalslot-mcp/dist/cli.jsan.
Related MCP server: GoHighLevel MCP Server
So funktioniert die Authentifizierung
Es gibt keinen Anmeldevorgang in diesem Server. stdio ist der Protokollkanal, daher kann ein Server nichts abfragen, und ein Modell um einen Token zu bitten wäre schlechter. Er liest eine Anmeldedatei, die bereits auf dem Rechner existiert.
Auflösungsreihenfolge:
GOALSLOT_ACCESS_TOKENaus der Umgebung, falls gesetzt und nicht leer.$GOALSLOT_CONFIG_DIR/credentials.json.%APPDATA%\goalslot\credentials.jsonunter Windows.$XDG_CONFIG_HOME/goalslot/credentials.json, sonst~/.config/goalslot/credentials.json.
Die Datei wird von goalslot login geschrieben und mit der CLI geteilt. Ihre Struktur:
{
"version": 1,
"apiBaseUrl": "https://api.goalslot.io/api",
"apiUrl": "https://api.goalslot.io/api",
"accessToken": "<jwt>",
"refreshToken": "gsl_rt_...",
"accessTokenExpiresAt": "2026-08-25T12:00:00.000Z",
"refreshTokenExpiresAt": "2026-11-23T00:00:00.000Z",
"tokenId": "<uuid>",
"scopes": ["full"],
"user": { "id": "...", "email": "..." },
"defaultTimezone": "Asia/Karachi",
"weekStartsOn": 1
}apiBaseUrl und apiUrl werden beide gelesen und beide mit demselben Wert geschrieben, sodass sich CLI und dieser Server nicht gegenseitig überschreiben können. Unbekannte Schlüssel überleben eine Neufassung.
CLI-Tokens sind gewöhnliche Bearer-JWTs mit typ: "cli" und einem cid-Anspruch, der die widerrufbare Token-Zeile benennt, und alle normalen API-Routen akzeptieren sie. Access-Tokens leben eine Stunde. Bei einem 401 rotiert dieser Server das Refresh-Token gegen POST /api/auth/cli/token/refresh, schreibt das neue Paar atomar auf die Festplatte bevor er es verwendet, und spielt die ursprüngliche Anfrage einmal erneut ab. Die Rotation ist single-flight: Refresh-Tokens sind nur einmal verwendbar, und das erneute Abspielen eines rotierten Tokens widerruft die gesamte Anmeldedatei, sodass zwei gleichzeitige Rotationen einen dauerhaften Logout bedeuten würden.
Kein Token, kein Header und keine Authorization-Zeile wird jemals in irgendein Log geschrieben, auf keiner Ebene.
Wenn die Anmeldedatei fehlt oder ungültig ist, gibt jedes Werkzeug ein strukturiertes NOT_AUTHENTICATED oder SESSION_EXPIRED zurück, das dem Modell sagt, du sollst goalslot login ausführen. Es wird dich nicht bitten, einen Token einzufügen.
Headless und CI
GOALSLOT_ACCESS_TOKEN überschreibt die Datei vollständig. Kombiniere es mit GOALSLOT_REFRESH_TOKEN, wenn die Rotation funktionieren soll; ohne dieses ist die Rotation deaktiviert und die Sitzung endet, wenn das einstündige Access-Token abläuft. Für etwas Langlebiges setze stattdessen GOALSLOT_CONFIG_DIR und lass den Server die Datei verwalten.
Werkzeuge
Neun Lese-Werkzeuge und neun Schreib-Werkzeuge. Lese-Werkzeuge sind sicher frei aufzurufen und mit readOnlyHint annotiert. Die Beschreibung jedes Schreib-Werkzeugs beginnt mit WRITES. und nichts, was hier exponiert ist, löscht Benutzerdaten.
Lesen
Werkzeug | Was es tut |
| Orientierungsaufruf, ohne Argumente. Benutzer, Planlimits und aktuelle Nutzung, Kategorie-Wert-Strings, Labels, Zeitzone, heutiges Datum, die aktuelle Woche und ein laufender Timer. Jeder Skill ruft dies zuerst auf. |
| Ziele mit Zielstunden, protokollierten Stunden, Fortschritt, Frist und Labels. Optionale Status-, Kategorie- und Label-Filter. |
| Ein Ziel vollständig, optional mit den schriftlichen Reflexionen des Benutzers dazu. |
| Aufgaben gefiltert nach Status, Ziel, Zeitplanblock oder Wochentag, begrenzt, damit ein großer Rückstand den Kontext nicht überflutet. |
| Die wöchentliche Zeitplanvorlage, gruppiert nach Tag und sortiert nach Startzeit, mit geplanten Minuten pro Tag. |
| Einzelne Zeiteinträge über einen Zeitraum oder ein Preset, mit einer Summe. Optionaler Zielfilter und Textsuche. |
| Neun Berichts-Endpunkte hinter einem |
| Findet Notizen per Teilstring im Titel oder Text oder holt eine per ID. Gibt den Baum-Pfad zurück und konvertiert den HTML-Body in Markdown. |
| Journal-Einträge und tägliche Check-ins, zusammengeführt nach Datum: Stimmung, Energie, Fokus, was funktioniert hat, was blockiert hat. |
Schreiben
Werkzeug | Was es tut |
| Erstellt ein Ziel. |
| Aktualisiert ein Ziel einschließlich seines Status. Kann bewusst |
| Erstellt eine Aufgabe, optional verknüpft mit einem Ziel und einem Zeitplanblock. |
| Der gesamte Aufgaben-Lebenszyklus hinter einer |
| Zeichnet bereits verbrachte Zeit auf. Unterstützt |
| Startet den gemeinsamen Server-Timer. Gibt |
| Stoppt den Timer in einen Zeiteintrag oder verwirft ihn. |
| Erstellt, aktualisiert oder löscht einen Block in der Wochenvorlage. Unterstützt |
| Fügt einen Journal-Eintrag und einen täglichen Check-in für ein Datum ein oder aktualisiert sie. Markdown rein, TipTap-HTML raus. |
Bewusst keine Werkzeuge
Löschen von Zielen, Aufgaben und Zeiteinträgen; Löschen des gesamten Zeitplans; Teilen von etwas öffentlich oder mit einer anderen Person; die KI-Coach-Chat-Endpunkte; Abrechnung und Kontoeinstellungen; Vorlagenimporte. Zerstörung mit kaskadierenden Effekten und alles, das persönliche Daten veröffentlicht, gehört dorthin, wo ein Mensch es tippt, nicht dorthin, wo ein Agent es in einer Schleife aufrufen kann. Nutze die GoalSlot-App oder die CLI.
Konventionen, die die Werkzeuge durchsetzen
Dauern sind ganze Minuten, immer benannt
durationMinutes, nie ein nacktesduration. Lesevorgänge geben auchdurationHoursals Float nur zur Anzeige zurück. DastargetHourseines Ziels ist die einzige Ausnahme.Daten sind
YYYY-MM-DDund werden an der Grenze abgelehnt, wenn sie eine Uhrzeit tragen. „Heute“ wird in deiner Zeitzone berechnet, nicht aus einem UTC-ISO-Ausschnitt.Der Zeitplan ist eine sich wiederholende Wochenvorlage, keine datierten Ereignisse. Jede relevante Werkzeugbeschreibung sagt das.
dayOfWeekist Sonntag-zuerst (0 = Sonntag), was nicht der Montag-zuerst-Reihenfolge der Wochenberichte entspricht. Beide sind inline beschriftet und jede Antwort trägt einendayName.Wochen-Buckets werden aus Eintragsdatumsangaben neu berechnet, statt aus der gespeicherten
dayOfWeek-Spalte der API gelesen, die in der Zeitzone des API-Servers abgeleitet wird und um eins danebenliegen kann.
Fehler
Fehler kommen als isError: true mit einem JSON-Objekt zurück:
{
"error": {
"code": "PLAN_LIMIT",
"message": "You've reached your FREE plan limit for goals.",
"httpStatus": 403,
"retryable": false,
"remedy": "The account is at its goal limit. Ask the user to pause a goal with update_goal (status PAUSED), delete one from the CLI, or upgrade. Do not retry.",
"details": { "plan": "FREE", "limitType": "goals" }
}
}remedy ist im Imperativ geschrieben, für das Modell. Codes: NOT_AUTHENTICATED, SESSION_EXPIRED, PLAN_LIMIT, FORBIDDEN, SCHEDULE_CONFLICT, INVALID_INPUT, NOT_FOUND, RATE_LIMITED, UPSTREAM_ERROR, WRITE_BUDGET_EXCEEDED, READ_ONLY_MODE, TIMER_ALREADY_RUNNING, NO_TIMER_RUNNING.
Skills
Vier Skills sind in skills/ enthalten. Sie tragen das Urteilsvermögen, das die Werkzeugbeschreibungen nicht leisten können: in welcher Reihenfolge Dinge aufgerufen werden, was vor dem Schreiben bestätigt werden muss und was man nicht sagen sollte.
Skill | Wann |
| Planung einer Woche, Zeit für ein Ziel blocken, Zeitplan neu ausbalancieren. |
| Aufholen unerfasster Zeit, Korrigieren von Einträgen, den Timer steuern. |
| Wochenende, „Wie war meine Woche“, eine Reflexion schreiben. |
| „Bin ich auf Kurs für X“, Entscheidung zwischen Ziel kürzen und Frist verschieben. |
Installiere sie in Claude Code, indem du die Verzeichnisse in deinen Skills-Ordner kopierst:
# macOS and Linux
cp -r "$(npm root -g)/goalslot-mcp/skills/"* ~/.claude/skills/
# Windows PowerShell
Copy-Item "$(npm root -g)\goalslot-mcp\skills\*" "$env:USERPROFILE\.claude\skills\" -RecurseAus einem Klon kopiere stattdessen skills/* aus dem Repository. Projektbezogen funktioniert auch: Lege sie in .claude/skills/ innerhalb eines Repos ab.
Konfiguration
Variable | Effekt |
| Verzeichnis, das |
| Überschreibt die Anmeldedatei vollständig. CI-Notausgang. |
| Refresh-Token, um mit dem obigen zu kombinieren. Rotationen werden nur im Speicher gehalten. |
| API-Basis-URL. Standard: |
| IANA-Zeitzone, die die aus der Anmeldung überschreibt. |
| Jedes Schreib-Werkzeug gibt |
| Schreibaufrufe pro Prozess erlaubt. Standard: 25. Eine außer Kontrolle geratene Schleife stoppt hier statt am Planlimit, das nur kostenlose Konten absichert. |
HTTP-Transport
Optional, hinter einem Flag:
npx -y goalslot-mcp --http --port 7801Er bedient dieselbe Werkzeug-Registry unter http://127.0.0.1:7801/mcp über den streamable HTTP-Transport, zustandslos.
Dies ist nur für Einzelbenutzer und lokal. Jede Anfrage wird mit den GoalSlot-Anmeldedaten dieser Maschine bedient. Es gibt keine Authentifizierung pro Aufrufer, kein OAuth und keine Token-Verwahrung, sodass jeder, der den Port erreichen kann, das Konto lesen und schreiben kann. Es bindet an Loopback und sollte dort bleiben. Es ist nicht der gehostete Multi-Tenant-MCP-Server, der in goal-slot-api#55 verfolgt wird; dieser benötigt einen echten OAuth-Ablauf und eine benutzerspezifische Token-Speicherung, was eine andere Aufgabe ist.
stdio ist der unterstützte Pfad.
Entwicklung
npm install
npm run typecheck
npm test
npm run build
node dist/cli.js --list-toolsTypeScript strict, ESM, Node 20 oder neuer. Die Tests verwenden vitest mit einem gestubten fetch; nichts in der Suite berührt eine Live-API. CI führt Typecheck, Tests und Build auf Node 20 und 22 unter Ubuntu und Windows aus.
Lizenz
MIT
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to manage TickTick tasks, projects, habits, and focus sessions through the MCP server.140MIT
- FlicenseNot gradedqualityBmaintenanceEnables AI assistants to interact with GoHighLevel CRM through MCP tools, with support for OAuth 2.1 remote deployment and agency multi-sub-account mode.
- AlicenseBqualityCmaintenanceEnables AI assistants to manage RogerRoger CRM data including people, organizations, lists, tags, and tasks through standardized MCP tools.2213MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with ExecuFunction's project management, knowledge base, code indexing, and calendar tools via MCP, allowing natural language management of tasks, notes, and code.88MIT
Related MCP Connectors
Connect any AI agent to 11+ social platforms: schedule, publish & track posts via hosted MCP.
Manage SRG+ hubs, channels, content, assets, users, and workspaces from any MCP-aware AI agent.
Your memory, everywhere AI goes. Build knowledge once, access it via MCP anywhere.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ZeeshanAdilButt/goalslot-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server