sqlite-notes
Stytch-authenticated SQLite MCP
Ein bewusst kleiner Remote-MCP-Dienst zum Erlernen der Struktur einer SaaS-Integration:
FastMCP stellt sechs Tools über Streamable HTTP bereit.
Stytch Connected Apps übernimmt OAuth-2.1-Discovery, Dynamic Client Registration, PKCE, Browser-Login, Einwilligung und Token-Ausstellung.
Der Dienst validiert die Signatur, den Aussteller, die Zielgruppe, das Ablaufdatum und den
openid-Scope jedes Zugriffstokens gegen Stytchs rotierende JWKS.SQLite-Zeilen sind über das
subdes Tokens indiziert, sodass jeder Stytch-Benutzer nur seine eigenen Notizen sieht.Der Zugriff wird vom Server auf 30 Minuten begrenzt, selbst wenn ein Stytch-Client versehentlich mit einer längeren Zugriffstoken-Lebensdauer konfiguriert ist.
Das Claude-Code-Plugin führt eine festgepinnte
mcp-remote-Brücke aus, die OAuth durchführt und Claude Code mit dem Remote-MCP-Endpunkt verbindet.
Architektur
Claude Code plugin -> http(s)://MCP/mcp -> validate Stytch JWT -> per-user SQLite CRUD
| ^
+-> Stytch discovery -> browser login/consent app -> Stytch token endpointDie Browser-App ist notwendig. Stytch hostet Discovery-, Registrierungs- und Token-Endpunkte, während Ihre Anwendung die IdentityProvider-Komponente für Login und Einwilligung hostet.
Related MCP server: Supabase MCP Server
1. Stytch konfigurieren
Erstellen Sie ein Consumer Authentication-Projekt und konfigurieren Sie dann:
Aktivieren Sie im Frontend SDK das SDK und autorisieren Sie
http://localhost:3000.Fügen Sie unter Redirect URLs
http://localhost:3000/authenticatefür Login und Registrierung hinzu.Aktivieren Sie Email Magic Links mit Login oder Create.
Legen Sie unter Connected Apps die Authorization URL auf
http://localhost:3000/oauth/authorizefest.Aktivieren Sie Dynamic Client Registration. Der MCP-Client verwendet DCR, da sein Callback-Port variieren kann.
Setzen Sie das Ablaufdatum des Zugriffstokens der Connected Apps auf 30 Minuten, wo Stytch dies zulässt.
Der Dienst und das Plugin fordern nur openid an, da der MCP-Server nur die stabile sub-Kennung benötigt. Er benötigt keine Profil- oder E-Mail-Daten.
Der Server lehnt jedes Zugriffstoken 30 Minuten nach dessen iat ab. Das Plugin verwendet die festgepinnte mcp-remote@0.2.1-Brücke, die die vom MCP-geschützten Ressource beworbenen Scopes anfordert, ohne offline_access hinzuzufügen. Stytch stellt daher kein Refresh-Token aus, und der Ablauf führt den Benutzer zur interaktiven Autorisierung zurück.
Diese Brücke ist beabsichtigt. Natives Claude-Code-OAuth fügt automatisch offline_access hinzu, wenn der Autorisierungsserver es bewirbt, was eine stille Token-Aktualisierung ermöglicht und die Anforderung der erzwungenen Anmeldung zunichte macht.
Kopieren Sie .env.example in .env und setzen Sie:
STYTCH_PROJECT_ID: dieproject-test-...-Projekt-ID, die als JWT-Zielgruppe verwendet wird.STYTCH_DOMAIN: die vollständige Projekt-Domain, die von Stytch angezeigt wird, z. B.https://...customers.stytch.dev, verwendet als Aussteller und JWKS-Host. Verwenden Sie hier nicht das API-Secret oder das öffentliche Token.STYTCH_PUBLIC_TOKEN: der browser-sicherepublic-token-test-...-Wert, der von der Login- und Einwilligungs-UI verwendet wird.MCP_BASE_URL: extern sichtbarer Ursprung des MCP-Servers, ohne/mcp.
Kein Stytch-Secret-Schlüssel gehört in dieses Projekt. Die JWT-Verifizierung benötigt nur öffentliche Signaturschlüssel.
Nach dem Speichern der Dashboard-Konfiguration überprüfen Sie die Stytch-Discovery und die Signaturschlüssel:
set -a; source .env; set +a
uv run python scripts/check_stytch.pyFahren Sie nicht mit dem Browser-Login-Test fort, bis dies PASS: Stytch authorization metadata and JWKS are ready for MCP OAuth. ausgibt.
2. Lokal ausführen
uv sync
set -a; source .env; set +a
uv run mcp-authIn einem anderen Terminal:
cd web
npm install
npm run devFür einen echten OAuth-Test sollten sowohl der MCP-Endpunkt als auch die Autorisierungsseite normalerweise über stabile HTTPS-URLs erreichbar sein. Ein Entwicklungstunnel kann die Ports 8000 und 3000 veröffentlichen. Aktualisieren Sie MCP_BASE_URL, die autorisierte Umgebung und Redirect-URL des Stytch Frontend SDK, die Authorization URL der Connected Apps und SQLITE_NOTES_MCP_URL auf diese HTTPS-URLs. Das einfache Localhost-Setup ist beim Entwickeln nützlich, aber die Produktion muss HTTPS verwenden.
3. Claude-Code-Plugin installieren und authentifizieren
Registrieren Sie vom Repository-Stammverzeichnis aus den lokalen Marketplace und installieren Sie das Plugin für dieses Projekt:
claude plugin marketplace add "$PWD" --scope project
claude plugin install sqlite-notes@mcp-auth-local --scope projectDie lokale Server-URL lautet standardmäßig http://127.0.0.1:8000/mcp. Für einen gehosteten oder getunnelten Server legen Sie die URL fest, bevor Sie Claude Code starten:
export SQLITE_NOTES_MCP_URL=https://your-mcp-tunnel.example/mcpFühren Sie dann /reload-plugins aus, öffnen Sie /mcp und wählen Sie sqlite-notes. Die festgepinnte mcp-remote-Brücke entdeckt den Stytch-Autorisierungsserver über den MCP-Server, registriert sich selbst, öffnet den Browser, verwendet PKCE und kehrt mit einem Zugriffstoken zurück.
Probieren Sie Aufforderungen wie:
„Erstellen Sie eine Notiz mit dem Titel Grocery list und dem Inhalt coffee and oranges."
„Listen Sie meine Notizen auf."
„Aktualisieren Sie Notiz 1, um milk hinzuzufügen."
„Löschen Sie Notiz 1."
Nach 30 Minuten lehnt der MCP-Server das aktuelle Zugriffstoken ab. Da die Brücke kein offline_access anfordert, kann sie nicht still aktualisieren und muss die interaktive Autorisierung wiederholen.
Tests
uv run pytest
cd web && npm run buildDie automatisierten Tests decken CRUD und die Isolierung zwischen Benutzern sowie die 30-Minuten-Grenze des Zugriffstokens ab. Ein vollständiger Login kann ohne ein konfiguriertes Stytch-Projekt und ein E-Mail-Postfach nicht automatisiert werden, daher ist der Browser-Ablauf eine explizite manuelle End-to-End-Prüfung.
Produktionshinweise
SQLite und ein einzelner Prozess sind für diese Übung beabsichtigt. Verwenden Sie für einen kostenpflichtigen Multi-Instanz-Dienst eine verwaltete Datenbank, Migrationen, Backups, HTTPS, strukturierte Audit-Logs, Ratenbegrenzungen und explizite Autorisierungs-Scopes. Behalten Sie dieselbe Grenze bei: Stytch authentifiziert den Benutzer, während Ihre Datenbank und Ihr Dienst entscheiden, auf welche Zeilen und Aktionen dieser Benutzer zugreifen darf.
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