Skip to main content
Glama
walkerhughes

sqlite-notes

by walkerhughes

Stytch認証SQLite MCP

SaaSインテグレーションの形を学ぶための、意図的に小さなリモートMCPサービスです:

  • FastMCPがStreamable HTTP上で6つのツールを提供します。

  • Stytch Connected AppsがOAuth 2.1ディスカバリ、Dynamic Client Registration、PKCE、 ブラウザログイン、同意、トークン発行を処理します。

  • このサービスは、StytchのローテーションするJWKSに対して、すべてのアクセストークンの署名、発行者、オーディエンス、有効期限、openidスコープを検証します。

  • 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で、Authorization URLを http://localhost:3000/oauth/authorizeに設定します。

  5. Dynamic Client Registrationを有効にします。MCPクライアントはコールバックポートが変動しうるためDCRを使用します。

  6. Stytchが許可する場合、Connected Appsのアクセストークンの有効期限を30分に設定します。

サービスとプラグインはopenidのみを要求します。MCPサーバーは安定したsub識別子のみを必要とするためです。プロフィールやメールデータは必要ありません。

サーバーは、各アクセストークンのiatから30分後にそのトークンを拒否します。プラグインは固定されたmcp-remote@0.2.1ブリッジを使用します。このブリッジは、MCP保護リソースがアドバタイズするスコープをoffline_accessを追加せずに要求します。したがってStytchはリフレッシュトークンを発行せず、有効期限が切れるとユーザーは対話型認証に戻されます。

このブリッジは意図的です。ネイティブのClaude Code OAuthは、認可サーバーがoffline_accessをアドバタイズすると自動的にそれを追加し、サイレントなトークン更新を可能にして、強制ログイン要件を無効化します。

.env.example.envにコピーして、次を設定します:

  • STYTCH_PROJECT_ID:JWTオーディエンスとして使用されるproject-test-...プロジェクトID。

  • STYTCH_DOMAINhttps://...customers.stytch.devなど、Stytchが表示する完全なプロジェクトドメイン。発行者およびJWKSホストとして使用されます。ここにAPIシークレットやパブリックトークンを使用しないでください。

  • STYTCH_PUBLIC_TOKEN:ログインおよび同意UIで使用されるブラウザセーフなpublic-token-test-...値。

  • MCP_BASE_URL/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、Stytch Frontend SDKの許可環境とリダイレクトURL、Connected AppsのAuthorization URL、およびSQLITE_NOTES_MCP_URLをそれらのHTTPS URLに更新します。プレーンなlocalhostセットアップは開発中は有用ですが、本番ではHTTPSを使用する必要があります。

3. Claude Codeプラグインをインストールして認証する

リポジトリのルートから、ローカルマーケットプレイスを登録し、このプロジェクト用のプラグインをインストールします:

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です。ホスト型またはトンネル型のサーバーの場合は、Claude Codeを起動する前にURLを設定します:

export SQLITE_NOTES_MCP_URL=https://your-mcp-tunnel.example/mcp

次に/reload-pluginsを実行し、/mcpを開いてsqlite-notesを選択します。固定されたmcp-remoteブリッジがMCPサーバーを通じてStytch認可サーバーをディスカバリし、自身を登録し、ブラウザを開き、PKCEを使用して、アクセストークンとともに戻ります。

次のようなプロンプトを試してください:

  • 「Grocery listというタイトルで、本文がcoffee and orangesのメモを作成して。」

  • 「私のメモを一覧表示して。」

  • 「メモ1を更新してmilkを追加して。」

  • 「メモ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