Skip to main content
Glama

goalslot-mcp

Un servidor MCP para GoalSlot. Proporciona a un asistente de IA herramientas para objetivos, tareas, la plantilla de horario semanal, el seguimiento del tiempo, el temporizador compartido, informes, notas y el diario, contra tu propia cuenta de GoalSlot.

Se ejecuta sobre stdio, por lo que cualquier host MCP puede lanzarlo. Incluye cuatro habilidades que enseñan a un modelo cómo usar bien las herramientas.

Instalación

Primero necesitas la goalslot CLI con sesión iniciada, porque este servidor lee la credencial que la CLI escribe. Nunca ejecuta un flujo de inicio de sesión por sí mismo.

npm install -g goalslot-cli
goalslot login

Luego añade el servidor MCP a Claude Code:

claude mcp add goalslot -- npx -y goalslot-mcp

Para Claude Desktop, o cualquier host que acepte una configuración JSON:

{
  "mcpServers": {
    "goalslot": {
      "command": "npx",
      "args": ["-y", "goalslot-mcp"]
    }
  }
}

Comprueba que funciona:

npx -y goalslot-mcp --list-tools

Este paquete aún no está publicado en npm. Hasta que lo esté, instálalo desde el código fuente: clona el repositorio, ejecuta npm install && npm run build, y luego apunta el host a node /path/to/goalslot-mcp/dist/cli.js.

Related MCP server: GoHighLevel MCP Server

Cómo funciona la autenticación

No hay flujo de inicio de sesión en este servidor. stdio es el canal de protocolo, por lo que un servidor no puede solicitar nada, y pedir a un modelo que maneje un token sería peor. Lee una credencial que ya existe en la máquina.

Orden de resolución:

  1. GOALSLOT_ACCESS_TOKEN del entorno, si está definido y no vacío.

  2. $GOALSLOT_CONFIG_DIR/credentials.json.

  3. %APPDATA%\goalslot\credentials.json en Windows.

  4. $XDG_CONFIG_HOME/goalslot/credentials.json, o si no ~/.config/goalslot/credentials.json.

El archivo lo escribe goalslot login y se comparte con la CLI. Su forma:

{
  "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
}

Tanto apiBaseUrl como apiUrl se leen y se escriben con el mismo valor, para que la CLI y este servidor no se pisen entre sí. Las claves desconocidas sobreviven a una reescritura.

Los tokens de la CLI son JWTs Bearer ordinarios que llevan typ: "cli" y una reclamación cid que nombra la fila de token revocable, y todas las rutas normales de la API los aceptan. Los tokens de acceso duran una hora. Ante un 401, este servidor rota el token de refresco contra POST /api/auth/cli/token/refresh, escribe el nuevo par en disco atómicamente antes de usarlo, y reproduce la solicitud original una vez. La rotación es de un solo vuelo: los tokens de refresco son de un solo uso, y reproducir uno ya rotado revoca toda la credencial, por lo que dos refrescos concurrentes serían un cierre de sesión permanente.

Ningún token, cabecera o línea de Authorization se escribe jamás en ningún registro, en ningún nivel.

Si la credencial falta o está muerta, cada herramienta devuelve un NOT_AUTHENTICATED o SESSION_EXPIRED estructurado que le dice al modelo que tú ejecutes goalslot login. No te pedirá que pegues un token.

Sin interfaz y CI

GOALSLOT_ACCESS_TOKEN anula el archivo por completo. Combínalo con GOALSLOT_REFRESH_TOKEN si quieres que el refresco funcione; sin él, el refresco está deshabilitado y la sesión muere cuando expira el token de acceso de una hora. Para cualquier cosa de larga duración, establece GOALSLOT_CONFIG_DIR en su lugar y deja que el servidor gestione el archivo.

Herramientas

Nueve herramientas de lectura y nueve de escritura. Las herramientas de lectura son seguras de llamar libremente y están anotadas con readOnlyHint. La descripción de cada herramienta de escritura comienza con WRITES. y nada de lo expuesto aquí elimina datos del usuario.

Lectura

Herramienta

Qué hace

goalslot_get_context

Llamada de orientación, sin argumentos. Usuario, límites del plan y uso actual, cadenas de valores de categoría, etiquetas, zona horaria, fecha de hoy, semana actual y cualquier temporizador en marcha. Cada habilidad llama a esto primero.

goalslot_list_goals

Objetivos con horas objetivo, horas registradas, progreso, fecha límite y etiquetas. Filtros opcionales por estado, categoría y etiqueta.

goalslot_get_goal

Un objetivo completo, opcionalmente con las reflexiones escritas del usuario sobre él.

goalslot_list_tasks

Tareas filtradas por estado, objetivo, bloque de horario o día de la semana, limitadas para que un gran backlog no inunde el contexto.

goalslot_get_schedule

La plantilla de horario semanal, agrupada por día y ordenada por hora de inicio, con minutos planificados por día.

goalslot_list_time_entries

Entradas de tiempo individuales en un período o un ajuste predefinido, con un total. Filtro opcional por objetivo y búsqueda de texto.

goalslot_get_report

Nueve endpoints de informes detrás de un enum view: dashboard, weekly, monthly, detailed, summary, day_by_task, day_total, schedule, goals_progress.

goalslot_search_notes

Encuentra notas por subcadena en título o cuerpo, o recupera una por id. Devuelve la ruta del árbol y convierte el cuerpo HTML a markdown.

goalslot_get_journal

Entradas del diario y check-ins diarios combinados por fecha: estado de ánimo, energía, enfoque, qué funcionó, qué bloqueó.

Escritura

Herramienta

Qué hace

goalslot_create_goal

Crea un objetivo. targetHours es el único campo medido en horas.

goalslot_update_goal

Actualiza un objetivo, incluido su estado. Deliberadamente no puede establecer loggedHours.

goalslot_create_task

Crea una tarea, opcionalmente vinculada a un objetivo y a un bloque de horario.

goalslot_update_task

Todo el ciclo de vida de la tarea detrás de una action: update, complete (que también registra tiempo), restore.

goalslot_log_time

Registra tiempo ya invertido. Admite dryRun. Acredita al objetivo vinculado.

goalslot_start_timer

Inicia el temporizador compartido del servidor. Devuelve TIMER_ALREADY_RUNNING en lugar de tomar el control silenciosamente.

goalslot_stop_timer

Detiene el temporizador en una entrada de tiempo, o lo descarta.

goalslot_manage_schedule_block

Crea, actualiza o elimina un bloque en la plantilla semanal. Admite dryRun y updateScope.

goalslot_write_journal

Inserta o actualiza una entrada de diario y un check-in diario para una fecha. Markdown de entrada, TipTap HTML de salida.

Deliberadamente no son herramientas

Eliminar objetivos, tareas y entradas de tiempo; borrar todo el horario; compartir cualquier cosa públicamente o con otra persona; los endpoints de chat del coach de IA; facturación y ajustes de cuenta; importaciones de plantillas. La destrucción con efectos en cascada y cualquier cosa que publique datos personales pertenece a donde un humano lo escribe, no a donde un agente pueda llamarlo en un bucle. Usa la aplicación GoalSlot o la CLI.

Convenciones que aplican las herramientas

  • Las duraciones son minutos enteros, siempre llamadas durationMinutes, nunca una duration simple. Las lecturas también devuelven durationHours como flotante solo para mostrar. El targetHours de un objetivo es la única excepción.

  • Las fechas son YYYY-MM-DD y se rechazan en el límite si llevan una hora. "Hoy" se calcula en tu zona horaria, no a partir de una rebanada ISO UTC.

  • El horario es una plantilla semanal repetitiva, no eventos con fecha. Cada descripción de herramienta relevante lo dice.

  • dayOfWeek es primero el domingo (0 = domingo), que no es el orden de lunes primero que usan los informes semanales. Ambos están etiquetados en línea y cada respuesta lleva un dayName.

  • Los cubos semanales se recalculan a partir de las fechas de las entradas en lugar de leer la columna dayOfWeek almacenada de la API, que se deriva en la zona horaria del servidor de la API y puede estar desviada en uno.

Errores

Los fallos vuelven como isError: true con un objeto JSON:

{
  "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 está escrito en imperativo, para el modelo. Códigos: 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.

Habilidades

Cuatro habilidades se incluyen en skills/. Llevan el juicio que las descripciones de herramientas no pueden: en qué orden llamar las cosas, qué confirmar antes de escribir y qué no decir.

Habilidad

Cuándo

goalslot-plan-my-week

Planificar una semana, reservar tiempo para un objetivo, reequilibrar el horario.

goalslot-log-time

Ponerse al día con tiempo no registrado, corregir entradas, manejar el temporizador.

goalslot-weekly-review

Fin de semana, "cómo fue mi semana", escribir una reflexión.

goalslot-goal-checkup

"¿Voy bien encaminado para X?", decidir entre recortar un objetivo y mover una fecha límite.

Instálalas en Claude Code copiando los directorios en tu carpeta de habilidades:

# 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\" -Recurse

Desde un clon, copia skills/* del repositorio en su lugar. El ámbito de proyecto también funciona: ponlas en .claude/skills/ dentro de un repositorio.

Configuración

Variable

Efecto

GOALSLOT_CONFIG_DIR

Directorio que contiene credentials.json. Se comprueba primero.

GOALSLOT_ACCESS_TOKEN

Anula el archivo de credenciales por completo. Vía de escape para CI.

GOALSLOT_REFRESH_TOKEN

Token de refresco para combinar con el anterior. Las rotaciones se mantienen solo en memoria.

GOALSLOT_API_URL

URL base de la API. Por defecto https://api.goalslot.io/api.

GOALSLOT_TZ

Zona horaria IANA que anula la del inicio de sesión.

GOALSLOT_MCP_READONLY=1

Cada herramienta de escritura devuelve READ_ONLY_MODE. Establécelo cuando apuntes un agente en el que no confías del todo a una cuenta real.

GOALSLOT_MCP_MAX_WRITES

Llamadas de escritura permitidas por proceso. Por defecto 25. Un bucle descontrolado se detiene aquí en lugar de en el límite del plan, que solo respalda cuentas gratuitas.

Transporte HTTP

Opcional, detrás de una bandera:

npx -y goalslot-mcp --http --port 7801

Sirve el mismo registro de herramientas en http://127.0.0.1:7801/mcp a través del transporte HTTP transmisible, sin estado.

Esto es de un solo usuario y solo local. Cada solicitud se atiende con las credenciales de GoalSlot de esta máquina. No hay autenticación por llamante, ni OAuth ni custodia de tokens, por lo que cualquiera que pueda acceder al puerto puede leer y escribir en la cuenta. Se vincula a loopback y debería permanecer así. No es el servidor MCP multiinquilino alojado que se sigue en goal-slot-api#55; eso requiere un flujo OAuth real y almacenamiento de tokens por usuario, que es un trabajo diferente.

stdio es la vía compatible.

Desarrollo

npm install
npm run typecheck
npm test
npm run build
node dist/cli.js --list-tools

TypeScript estricto, ESM, Node 20 o superior. Las pruebas son vitest con fetch simulado; nada en el conjunto toca una API en vivo. CI ejecuta typecheck, pruebas y compilación en Node 20 y 22 en Ubuntu y Windows.

Licencia

MIT

Install Server
A
license - permissive license
A
quality
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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