sqlite-notes
Stytch-authenticated SQLite MCP
Un servicio MCP remoto deliberadamente pequeño para aprender la forma de una integración SaaS:
FastMCP ofrece seis herramientas sobre Streamable HTTP.
Stytch Connected Apps gestiona el descubrimiento OAuth 2.1, el registro dinámico de clientes, PKCE, el inicio de sesión en el navegador, el consentimiento y la emisión de tokens.
El servicio valida la firma, el emisor, la audiencia, la caducidad y el ámbito
openidde cada token de acceso contra el JWKS rotatorio de Stytch.Las filas de SQLite se indexan por el
subdel token, de modo que cada usuario de Stytch solo ve sus propias notas.El servidor limita el acceso a 30 minutos, incluso si un cliente de Stytch se configura accidentalmente con una vida útil de token de acceso más larga.
El plugin de Claude Code ejecuta un puente
mcp-remotefijado, que realiza OAuth y conecta Claude Code con el endpoint MCP remoto.
Arquitectura
Claude Code plugin -> http(s)://MCP/mcp -> validate Stytch JWT -> per-user SQLite CRUD
| ^
+-> Stytch discovery -> browser login/consent app -> Stytch token endpointLa aplicación de navegador es necesaria. Stytch aloja los endpoints de descubrimiento, registro y token, mientras que tu
aplicación aloja el componente IdentityProvider utilizado para el inicio de sesión y el consentimiento.
Related MCP server: Supabase MCP Server
1. Configurar Stytch
Crea un proyecto de Consumer Authentication y, a continuación, configura:
En Frontend SDK, habilita el SDK y autoriza
http://localhost:3000.En Redirect URLs, añade
http://localhost:3000/authenticatetanto para el inicio de sesión como para el registro.Habilita Email Magic Links con Login o Create.
En Connected Apps, establece la URL de autorización en
http://localhost:3000/oauth/authorize.Habilita Dynamic Client Registration. El cliente MCP usa DCR porque su puerto de devolución de llamada puede variar.
Establece la caducidad del token de acceso de Connected Apps en 30 minutos donde Stytch lo permita.
El servicio y el plugin solicitan solo openid, porque el servidor MCP solo necesita el identificador estable sub.
No necesita datos de perfil ni de correo electrónico.
El servidor rechaza cada token de acceso 30 minutos después del iat de ese token. El plugin usa el
puente fijado mcp-remote@0.2.1, que solicita los ámbitos anunciados por el recurso protegido MCP
sin añadir offline_access. Por lo tanto, Stytch no emite un token de actualización, y la caducidad
devuelve al usuario a la autorización interactiva.
Este puente es intencionado. El OAuth nativo de Claude Code añade automáticamente offline_access cuando el
servidor de autorización lo anuncia, lo que permite la actualización silenciosa del token y anula el requisito
de inicio de sesión forzado.
Copia .env.example a .env y establece:
STYTCH_PROJECT_ID: el ID de proyectoproject-test-..., utilizado como audiencia JWT.STYTCH_DOMAIN: el dominio completo del proyecto que muestra Stytch, comohttps://...customers.stytch.dev, utilizado como emisor y host de JWKS. No uses aquí el secreto de API ni el token público.STYTCH_PUBLIC_TOKEN: el valor seguro para navegadorpublic-token-test-...utilizado por la interfaz de inicio de sesión y consentimiento.MCP_BASE_URL: origen visible externamente del servidor MCP, sin/mcp.
Ninguna clave secreta de Stytch pertenece a este proyecto. La verificación JWT solo necesita claves de firma públicas.
Después de guardar la configuración del panel, verifica el descubrimiento de Stytch y las claves de firma:
set -a; source .env; set +a
uv run python scripts/check_stytch.pyNo continúes con la prueba de inicio de sesión en el navegador hasta que esto imprima
PASS: Stytch authorization metadata and JWKS are ready for MCP OAuth.
2. Ejecutar localmente
uv sync
set -a; source .env; set +a
uv run mcp-authEn otra terminal:
cd web
npm install
npm run devPara una prueba OAuth real, tanto el endpoint MCP como la página de autorización deberían ser normalmente
accesibles en URLs HTTPS estables. Un túnel de desarrollo puede publicar los puertos 8000 y 3000. Actualiza
MCP_BASE_URL, el entorno autorizado y la URL de redirección del SDK de Frontend de Stytch, la URL de
autorización de Connected Apps y SQLITE_NOTES_MCP_URL a esas URLs HTTPS. La configuración simple de
localhost es útil durante el desarrollo, pero la producción debe usar HTTPS.
3. Instalar y autenticar el plugin de Claude Code
Desde la raíz del repositorio, registra el marketplace local e instala el plugin para este proyecto:
claude plugin marketplace add "$PWD" --scope project
claude plugin install sqlite-notes@mcp-auth-local --scope projectLa URL del servidor local tiene como valor predeterminado http://127.0.0.1:8000/mcp. Para un servidor alojado
o tunelizado, establece la URL antes de iniciar Claude Code:
export SQLITE_NOTES_MCP_URL=https://your-mcp-tunnel.example/mcpA continuación, ejecuta /reload-plugins, abre /mcp y selecciona sqlite-notes. El puente fijado
mcp-remote descubre el servidor de autorización de Stytch a través del servidor MCP, se registra, abre el
navegador, usa PKCE y regresa con un token de acceso.
Prueba indicaciones como:
"Crea una nota titulada Lista de la compra con el cuerpo café y naranjas."
"Lista mis notas."
"Actualiza la nota 1 para añadir leche."
"Elimina la nota 1."
Después de 30 minutos, el servidor MCP rechaza el token de acceso actual. Como el puente no
solicita offline_access, no puede actualizarse silenciosamente y debe repetir la autorización interactiva.
Pruebas
uv run pytest
cd web && npm run buildLas pruebas automatizadas cubren CRUD y el aislamiento entre usuarios, además del límite de 30 minutos del token de acceso. Un inicio de sesión completo no se puede automatizar sin un proyecto de Stytch configurado y una bandeja de entrada de correo, por lo que el flujo del navegador es una comprobación manual explícita de extremo a extremo.
Notas de producción
SQLite y un único proceso son intencionados para este ejercicio. Para un servicio de pago con múltiples instancias, usa una base de datos gestionada, migraciones, copias de seguridad, HTTPS, registros de auditoría estructurados, límites de tasa y ámbitos de autorización explícitos. Mantén el mismo límite: Stytch autentica al usuario, mientras que tu base de datos y tu servicio deciden qué filas y acciones puede acceder ese usuario.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
This server cannot be installed
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 Connectors
Google Keep-style notes app with an MCP server for AI agents to read/write notes.
Cross-session, cross-device memory for your agent: remember and recall notes. No key to start.
Persistent memory and vector search for AI agents. Hosted, OAuth-protected via Google sign-in.
- TaprootOAuthcom.taproothq
Persistent memory layer for AI tools. Save and recall notes across Claude and other MCP clients.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenancePersonal note management server that enables creating, reading, updating, deleting, listing, and searching notes with support for titles, content, and tags.-
- AlicenseNot gradedqualityDmaintenanceEnables notes management through MCP integration with a Supabase PostgreSQL database, supporting full CRUD operations. It features secure user data isolation using JWT authentication and Row Level Security policies.MIT
- FlicenseBqualityDmaintenanceA simple server for saving, listing, and searching notes persisted to a local JSON file. It enables users to manage their personal notes using natural language via the Model Context Protocol.3-
- FlicenseNot gradedqualityDmaintenanceEnables to create notebooks and notes with tags, and perform full-text search across notes using FTS5 syntax, all stored locally in SQLite.-
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/walkerhughes/mcp-auth'
If you have feedback or need assistance with the MCP directory API, please join our Discord server