Pocketbase

Permite que tu agente se conecte a Pocketbase con facilidad.

Documentación

pocketbase-mcp

License: MIT CI Docker

Servidor MCP remoto que conecta cualquier cliente MCP a una instancia de PocketBase a través de HTTP sin estado.

Inicio rápido

Usa la instancia alojada en https://pocketbase.tokenscompany.co/mcp o aloja la tuya propia.

Instalación con agente de IA

Copia y pega este prompt en tu agente de IA (Claude Code, Cursor, Windsurf, etc.):

Install the PocketBase MCP server. The MCP endpoint is https://pocketbase.tokenscompany.co/mcp and the transport type is http (NOT sse). It requires X-PB-URL set to my PocketBase instance URL and either X-PB-Email + X-PB-Password (superuser credentials) or X-PB-Token (superuser auth token). Add it to my project MCP config with type "http". Then fetch https://raw.githubusercontent.com/tokenscompany/pocketbase-mcp/main/SKILL.md and save it to my project's agent instructions so you always know how to use the PocketBase tools.
Claude Code
claude mcp add --transport http pocketbase https://pocketbase.tokenscompany.co/mcp \
  --header "X-PB-URL: https://your-pocketbase.example.com" \
  --header "X-PB-Email: admin@example.com" \
  --header "X-PB-Password: your-password"

O añádelo a .mcp.json en la raíz de tu proyecto:

{
  "mcpServers": {
    "pocketbase": {
      "type": "http",
      "url": "https://pocketbase.tokenscompany.co/mcp",
      "headers": {
        "X-PB-URL": "${PB_URL}",
        "X-PB-Email": "${PB_EMAIL}",
        "X-PB-Password": "${PB_PASSWORD}"
      }
    }
  }
}

Claude Code expande ${VAR} desde tu entorno, así que configura PB_URL, PB_EMAIL y PB_PASSWORD en tu shell o en .env.

Cursor

Añádelo a ~/.cursor/mcp.json:

{
  "mcpServers": {
    "pocketbase": {
      "url": "https://pocketbase.tokenscompany.co/mcp",
      "headers": {
        "X-PB-URL": "https://your-pocketbase.example.com",
        "X-PB-Email": "admin@example.com",
        "X-PB-Password": "your-password"
      }
    }
  }
}
OpenCode

Añádelo a opencode.json en la raíz de tu proyecto:

{
  "mcp": {
    "pocketbase": {
      "type": "remote",
      "url": "https://pocketbase.tokenscompany.co/mcp",
      "headers": {
        "X-PB-URL": "https://your-pocketbase.example.com",
        "X-PB-Email": "admin@example.com",
        "X-PB-Password": "your-password"
      },
      "enabled": true
    }
  }
}

Autoalojamiento

Bun

bun install
bun run src/index.ts

El servidor escucha en PORT (por defecto 3000).

Docker (GHCR)

docker pull ghcr.io/tokenscompany/pocketbase-mcp:latest
docker run -p 3000:3000 ghcr.io/tokenscompany/pocketbase-mcp:latest

O compílalo localmente:

docker build -t pocketbase-mcp .
docker run -p 3000:3000 pocketbase-mcp

Verificación de la imagen

Cada imagen publicada en GHCR incluye atestación de procedencia SLSA. Puedes verificar que una imagen fue construida desde este repositorio:

gh attestation verify oci://ghcr.io/tokenscompany/pocketbase-mcp:latest \
  --owner tokenscompany

Autenticación

Cada solicitud a POST /mcp debe incluir X-PB-URL y uno de dos métodos de autenticación:

Opción 1: Correo electrónico + Contraseña (recomendado)

CabeceraDescripción
X-PB-URLURL base de tu instancia de PocketBase
X-PB-EmailCorreo electrónico de superusuario
X-PB-PasswordContraseña de superusuario

El servidor se autentica contra PocketBase en cada solicitud. No se necesita gestión manual de tokens.

Opción 2: Token

CabeceraDescripción
X-PB-URLURL base de tu instancia de PocketBase
X-PB-TokenToken de autenticación de superusuario

Para obtener un token manualmente:

curl -X POST https://your-pb.example.com/api/admins/auth-with-password \
  -H 'Content-Type: application/json' \
  -d '{"identity":"admin@example.com","password":"your-password"}'

El campo token en la respuesta es tu X-PB-Token. Si se proporcionan tanto el token como el correo electrónico y la contraseña, el token tiene prioridad.

Herramientas

HerramientaDescripción
pb_healthComprobación de estado de PocketBase
pb_list_collectionsLista todas las colecciones con esquemas de campos completos
pb_get_collection_schemaObtiene el esquema completo de una sola colección
pb_create_collectionCrea una nueva colección
pb_update_collectionActualiza el esquema o las reglas de una colección
pb_delete_collectionElimina una colección
pb_import_collectionsImportación masiva/sobrescritura de esquemas de colecciones
pb_list_recordsLista/busca registros en una colección
pb_get_recordObtiene un solo registro por ID
pb_create_recordCrea un nuevo registro
pb_update_recordActualiza un registro existente
pb_delete_recordElimina un registro por ID
pb_list_backupsLista las copias de seguridad disponibles
pb_create_backupCrea una nueva copia de seguridad
pb_delete_backupElimina una copia de seguridad por clave
pb_get_file_urlObtiene la URL de descarga para un campo de archivo
pb_get_settingsObtiene la configuración de la aplicación
pb_update_settingsActualiza la configuración de la aplicación
pb_list_logsConsulta los registros de solicitudes

Recursos

RecursoURIDescripción
schemapocketbase://schemaTodos los esquemas de colecciones como JSON

Seguridad y privacidad

Este servidor es completamente sin estado — no almacena, registra ni retiene ninguno de tus datos:

  • Sin base de datos, sin escrituras en disco — cada solicitud crea un servidor MCP y transporte nuevos en memoria, los procesa y descarta todo. No se escribe nada en disco.
  • Sin almacenamiento de credenciales — tus cabeceras X-PB-URL, X-PB-Token, X-PB-Email y X-PB-Password se usan durante la duración de la solicitud y nunca se persisten, almacenan en caché ni registran.
  • Sin telemetría ni análisis — el servidor recopila cero datos de uso. No se contacta con servicios de terceros.
  • Sin sesiones — no hay cookies, ni IDs de sesión, ni estado del lado del servidor entre solicitudes.
  • Código abierto — todo el código base tiene licencia MIT. Cada imagen de Docker incluye atestación de procedencia SLSA, para que puedas verificar que fue construida directamente desde este repositorio sin modificaciones.
  • Alójalo tú mismo — para máximo control, ejecuta tu propia instancia. El servidor es un solo contenedor sin dependencias externas más allá de tu instancia de PocketBase.

Endurecimiento

Al alojar una instancia pública, el servidor incluye varias medidas adicionales:

  • Protección SSRFX-PB-URL se valida: solo se permiten esquemas http/https, y se rechazan los nombres de host que resuelven a rangos de IP privados/reservados (127.0.0.0/8, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 169.254.0.0/16, ::1, fc00::/7, fe80::/10).

  • Límite de velocidad — token-bucket en memoria por IP. Configurable mediante variables de entorno:

    VariablePredeterminadoDescripción
    RATE_LIMIT_RPM60Solicitudes por minuto por IP
    RATE_LIMIT_BURST10Tamaño máximo de ráfaga
  • CORSAccess-Control-Allow-Origin: * con soporte de preflight en /mcp.

  • Límite de tamaño del cuerpo — las solicitudes mayores de 1 MB se rechazan con 413.

Endpoints

MétodoRutaDescripción
POST/mcpEndpoint MCP (sin estado, respuestas JSON)
GET/healthComprobación de estado

Solución de problemas

Error "Failed to reconnect"

La configuración de tu cliente MCP probablemente usa "type": "sse". Este servidor usa HTTP transmisible sin estado, no Server-Sent Events. Cambia el tipo de transporte a "http":

{
  "mcpServers": {
    "pocketbase": {
      "type": "http",
      ...
    }
  }
}

Para la CLI de Claude Code, usa --transport http al añadir:

claude mcp add --transport http pocketbase https://pocketbase.tokenscompany.co/mcp ...

Licencia

MIT