Skip to main content
Glama
walkerhughes

sqlite-notes

by walkerhughes

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, затем настройте:

  1. В Frontend SDK включите SDK и авторизуйте http://localhost:3000.

  2. В Redirect URLs добавьте http://localhost:3000/authenticate для входа и регистрации.

  3. Включите Email Magic Links с параметром Login or Create.

  4. В Connected Apps установите URL авторизации на http://localhost:3000/oauth/authorize.

  5. Включите Dynamic Client Registration. MCP-клиент использует DCR, потому что порт его callback может меняться.

  6. Установите срок действия токена доступа 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.

Maintenance

ActivityMaintained
ResponsivenessNo issues

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables 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
  • F
    license
    B
    quality
    D
    maintenance
    A 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
    -

Latest Blog Posts

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