sqlite-notes
Stytch-authenticated SQLite MCP
Намеренно небольшой удалённый MCP-сервис для изучения устройства SaaS-интеграции:
FastMCP предоставляет шесть инструментов через Streamable HTTP.
Stytch Connected Apps обрабатывает обнаружение OAuth 2.1, динамическую регистрацию клиентов, PKCE, вход через браузер, согласие и выдачу токенов.
Сервис проверяет подпись, эмитента, аудиторию, срок действия и область
openidкаждого токена доступа по ротационному JWKS Stytch.Строки SQLite привязаны к
subтокена, поэтому каждый пользователь Stytch видит только свои заметки.Доступ ограничен 30 минутами на стороне сервера, даже если клиент Stytch случайно настроен с более длительным сроком жизни токена доступа.
Плагин Claude Code использует закреплённый мост
mcp-remote, который выполняет OAuth и подключает Claude Code к удалённой MCP-конечной точке.
Архитектура
Claude Code plugin -> http(s)://MCP/mcp -> validate Stytch JWT -> per-user SQLite CRUD
| ^
+-> Stytch discovery -> browser login/consent app -> Stytch token endpointБраузерное приложение необходимо. Stytch размещает конечные точки обнаружения, регистрации и выдачи токенов, а ваше
приложение размещает компонент IdentityProvider, используемый для входа и согласия.
Related MCP server: Supabase MCP Server
1. Настройка Stytch
Создайте проект Consumer Authentication, затем настройте:
В Frontend SDK включите SDK и авторизуйте
http://localhost:3000.В Redirect URLs добавьте
http://localhost:3000/authenticateдля входа и регистрации.Включите Email Magic Links с параметром Login or Create.
В Connected Apps установите URL авторизации на
http://localhost:3000/oauth/authorize.Включите Dynamic Client Registration. MCP-клиент использует DCR, потому что порт его callback может меняться.
Установите срок действия токена доступа Connected Apps на 30 минут, где Stytch это позволяет.
Сервис и плагин запрашивают только openid, потому что MCP-серверу нужен только стабильный идентификатор sub.
Ему не нужны данные профиля или email.
Сервер отклоняет каждый токен доступа через 30 минут после iat этого токена. Плагин использует
закреплённый мост mcp-remote@0.2.1, который запрашивает области, объявленные защищённым ресурсом MCP,
без добавления offline_access. Поэтому Stytch не выдаёт refresh-токен, и по истечении срока
пользователь возвращается к интерактивной авторизации.
Этот мост выбран намеренно. Нативная OAuth-авторизация Claude Code автоматически добавляет offline_access, когда
сервер авторизации объявляет его, что позволяет автоматически обновлять токен и обходит требование принудительного входа.
Скопируйте .env.example в .env и задайте:
STYTCH_PROJECT_ID: идентификатор проекта видаproject-test-..., используется как аудитория JWT.STYTCH_DOMAIN: полный домен проекта, показанный Stytch, напримерhttps://...customers.stytch.dev, используется как эмитент и хост JWKS. Не используйте здесь секретный ключ API или публичный токен.STYTCH_PUBLIC_TOKEN: безопасное для браузера значениеpublic-token-test-..., используемое в интерфейсе входа и согласия.MCP_BASE_URL: внешне видимый origin MCP-сервера, без/mcp.
Никакой секретный ключ Stytch не должен находиться в этом проекте. Для проверки JWT нужны только публичные ключи подписи.
После сохранения конфигурации в панели управления проверьте обнаружение Stytch и ключи подписи:
set -a; source .env; set +a
uv run python scripts/check_stytch.pyНе переходите к тесту входа в браузер, пока не появится сообщение
PASS: Stytch authorization metadata and JWKS are ready for MCP OAuth.
2. Локальный запуск
uv sync
set -a; source .env; set +a
uv run mcp-authВ другом терминале:
cd web
npm install
npm run devДля настоящего OAuth-теста и MCP-конечная точка, и страница авторизации обычно должны быть доступны по
стабильным HTTPS-URL. Туннель для разработки может опубликовать порты 8000 и 3000. Обновите MCP_BASE_URL,
авторизованную среду и redirect URL в Frontend SDK Stytch, URL авторизации Connected Apps
и SQLITE_NOTES_MCP_URL на эти HTTPS-URL. Обычная настройка localhost полезна при разработке,
но в производстве необходимо использовать HTTPS.
3. Установка и аутентификация плагина Claude Code
Из корня репозитория зарегистрируйте локальный marketplace и установите плагин для этого проекта:
claude plugin marketplace add "$PWD" --scope project
claude plugin install sqlite-notes@mcp-auth-local --scope projectЛокальный URL сервера по умолчанию — http://127.0.0.1:8000/mcp. Для размещённого или туннелированного сервера задайте
URL перед запуском Claude Code:
export SQLITE_NOTES_MCP_URL=https://your-mcp-tunnel.example/mcpЗатем выполните /reload-plugins, откройте /mcp и выберите sqlite-notes. Закреплённый мост mcp-remote
обнаруживает сервер авторизации Stytch через MCP-сервер, регистрируется, открывает
браузер, использует PKCE и возвращается с токеном доступа.
Попробуйте такие запросы, как:
"Create a note titled Grocery list with body coffee and oranges."
"List my notes."
"Update note 1 to add milk."
"Delete note 1."
Через 30 минут MCP-сервер отклоняет текущий токен доступа. Поскольку мост не запрашивает
offline_access, он не может автоматически обновить токен и должен повторить интерактивную авторизацию.
Тесты
uv run pytest
cd web && npm run buildАвтоматические тесты покрывают CRUD и изоляцию между пользователями, а также границу 30-минутного срока токена доступа. Полный вход нельзя автоматизировать без настроенного проекта Stytch и почтового ящика, поэтому браузерный поток — это явная ручная сквозная проверка.
Заметки о производстве
SQLite и один процесс выбраны намеренно для этого упражнения. Для платного многопоточного сервиса используйте управляемую базу данных, миграции, резервное копирование, HTTPS, структурированные журналы аудита, ограничения скорости и явные области авторизации. Сохраняйте ту же границу: Stytch аутентифицирует пользователя, а ваша база данных и сервис решают, к каким строкам и действиям этот пользователь имеет доступ.
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