Skip to content

Add personal connection tokens with read and control scopes [skip deploy] #no-deploy - #13

Merged
SebastianLopezO merged 2 commits into
mainfrom
feature/mcp-connections
Nov 1, 2026
Merged

SebastianLopezO merged 2 commits into
mainfrom
feature/mcp-connections

Conversation

@SebastianLopezO

Copy link
Copy Markdown
Member

Contexto

El servidor MCP que quedó a medio hacer entraba a la API con una sola cuenta de servicio (SMARTPOT_EMAIL y
SMARTPOT_PASSWORD): cualquiera que se conectara actuaba como esa cuenta. Ahora cada persona crea en la PWA sus
propias conexiones (tokens spt_… con alcance de solo lectura o de control), el MCP reenvía el token de quien llama
y la API decide qué puede hacer. Este cambio va en cuatro repos: DB-Postgre (tabla), API Go (tokens y guard),
SmartPot-MCP (servidor) y Web-Solid (Perfil › Conexiones); .github lo integra en la demo beta.

Cambio

  • Dominio connections (hexagonal: modelo, puerto, servicio, controlador y adaptador de PostgreSQL):
    GET/POST /api/v1/connections y DELETE /api/v1/connections/{id}. El token tiene 256 bits aleatorios, solo se
    devuelve al crearlo (Cache-Control: no-store) y se guarda su SHA-256. Máximo 10 por cuenta, vigencia opcional de
    1 a 365 días y último uso registrado como mucho una vez por minuto.
  • El guard acepta Bearer spt_… además del JWT. Con una conexión:
    • READ solo hace GET; CONTROL además escribe y acciona actuadores.
    • Nunca administra conexiones, cambia la cuenta, configura canales ni ve credenciales de dispositivos (403).
    • Nunca obtiene el rol de administrador.
    • Revocada o vencida: 401.
  • Borrar la cuenta borra sus conexiones. OpenAPI y README documentan las rutas.

Verificación

  • gofmt, go vet y go test ./... en verde; pruebas nuevas del guard (alcances y rutas vetadas) y del servicio
    (token en claro nunca guardado, revocación, vencimiento, límite y escritura del último uso).
  • Demo beta construida desde las ramas: la suite crea una conexión de lectura, lista cultivos con ella, recibe 403 al
    accionar y al administrar conexiones, y 401 tras revocarla.

@SebastianLopezO
SebastianLopezO merged commit e85b9dc into main Nov 1, 2026
6 of 7 checks passed
@SebastianLopezO
SebastianLopezO deleted the feature/mcp-connections branch November 1, 2026 16:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant