Skip to main content
Glama
scalekit-developers

mcp-use Scalekit MCP Auth

mcp-use + Scalekit MCP Auth

Scalekit OAuth 2.1 で認証する mcp-use MCP サーバーです。

チームメンバーは 1 つのサーバー URL を共有します。各人がサインインします。ツールは共有 API キーではなく、その人の ID(ctx.auth.user.id)を参照します。

この例では @scalekit-sdk/node使用せず、Scalekit のクライアント ID やシークレットも必要ありません。リソースサーバーは Scalekit JWKS に対して JWT を検証します。

クックブック形式の手順は docs/v2/typescript/server/authentication/providers/scalekit.mdx にあります。この README はこのリポジトリの実行手順書です。

[!IMPORTANT] ご自身の Scalekit 環境を使用してください。このリポジトリにはプレースホルダーのみが含まれています。.env は絶対にコミットしないでください。

得られるもの

  • /mcp での Streamable HTTP MCP

  • RFC 9728 の保護リソースメタデータを指す 401 + WWW-Authenticate

  • 認可サーバーとしての Scalekit(DCR および CIMD)

  • whoami — 認証済みユーザー、スコープ、トークンの iss / aud

  • greetctx.auth.user.id をキーとするツール

Related MCP server: Access Self-Hosted MCP Server

クライアントのサインイン方法

sequenceDiagram
  participant Client as MCP client
  participant Server as This server
  participant SK as Your Scalekit env

  Client->>Server: POST /mcp (no token)
  Server-->>Client: 401 + WWW-Authenticate
  Client->>Server: GET /.well-known/oauth-protected-resource/mcp
  Server-->>Client: authorization_servers = Scalekit resource issuer
  Client->>SK: Discover AS metadata, register via DCR or CIMD
  Client->>SK: User signs in and consents
  SK-->>Client: Access token (aud includes res_…)
  Client->>Server: POST /mcp Authorization: Bearer …
  Server-->>Client: Tool result scoped to ctx.auth.user.id

前提条件

1. Scalekit で MCP サーバーを登録する

MCP Auth クイックスタートに従い、以下の値を使用します。

  1. Scalekit Dashboard を開き、MCP serversAdd MCP server の順に選択します。

  2. 名前を付けます。その名前は同意画面に表示されます。

  3. dynamic client registrationClient ID Metadata Document (CIMD) を有効にします。Inspector、Claude、Cursor などのパブリッククライアントは少なくともいずれか 1 つが必要です。両方オンにしておいてください。

  4. 詳細設定で Server URL を次の値に設定します。

    http://localhost:3000/mcp

    末尾にスラッシュを付けないでください。設定すると、Scalekit はこの URL をアクセストークンの aud クレームに res_… ID とともに書き込みます。空のままにすると、audres_… のみになります。この例はその場合でも検証に成功します。

  5. 保存します。サーバーページから以下をコピーします。

    • Environment URLhttps://<your-env>.scalekit.cloud

    • Resource IDres_…

[!CAUTION] 後で DCR または CIMD を切り替えた場合は、MCP クライアントを接続し直してください。Inspector などのクライアントは認可サーバーのメタデータをキャッシュします。このプロセスはキャッシュしません。

2. このリポジトリを設定する

git clone git@github.com:scalekit-developers/scalekit-mcpuse-example.git
cd scalekit-mcpuse-example
npm install
cp .env.example .env

.envご自身の値で編集してください。このリポジトリにはサンプルの認証情報はありません。

SCALEKIT_ENVIRONMENT_URL=https://your-env.scalekit.cloud
SCALEKIT_RESOURCE_ID=res_xxxxxxxx
MCP_URL=http://localhost:3000/mcp

変数

取得元

SCALEKIT_ENVIRONMENT_URL

Dashboard → API credentials → Environment URL

SCALEKIT_RESOURCE_ID

Dashboard → MCP servers → このサーバー → res_…

MCP_URL

Server URL と完全に一致させる(末尾スラッシュなし)

SCALEKIT_CLIENT_IDSCALEKIT_CLIENT_SECRET はありません。リソースサーバーは、Scalekit がすでに発行したトークンのみを検証します。

3. 実行してサインインする

npm run dev
  1. Inspector を開きます。

  2. http://localhost:3000/mcp に接続します。最初の呼び出しは 401 を返します。Inspector が Scalekit ログインを開始します。

  3. ブラウザで同意を完了します。

  4. whoami を呼び出します。

usr_… の ID、subjectType: "user"openid / profile などのスコープ、および以下が表示されるはずです。

{
  "iss": "https://your-env.scalekit.cloud",
  "aud": ["http://localhost:3000/mcp", "res_xxxxxxxx"]
}

isshttps://your-env.scalekit.cloud/resources/res_xxxxxxxx の場合もあります。この例では、Scalekit が issuer 値を移行している間、両方を受け入れます。

次に greet を呼び出します。挨拶は、検証済みトークンの ctx.auth.user.id を使用します — これは、ツールのデータをユーザーごとにスコープするためのパターンです。

検証の仕組み

oauth: oauthScalekitProvider({
  environmentUrl: process.env.SCALEKIT_ENVIRONMENT_URL!,
  resourceId: process.env.SCALEKIT_RESOURCE_ID!,
  resource: process.env.MCP_URL!,
}),

resourceId は JWT の audres_…)です。resource は公開されている MCP URL です。mcp-use は resource を RFC 9728 の保護リソースメタデータに配置します。これは 2 つ目のオーディエンスチェックではありません。

チェック

ソース

署名

{environmentUrl}/keys の JWKS(推測したパスではなく、ライブの AS メタデータから取得)

iss

環境ルート または {environmentUrl}/resources/{resourceId}

aud

resourceIdres_…)を含む必要がある

ID

ctx.auth.user.id はトークンの sub

resourceId はサーバーごとのセキュリティ境界です。同じ Scalekit 環境内の別の MCP サーバー向けに発行されたトークンは失敗する必要があります。

認可はツールのそばに置くべきです。

async (_args, ctx) => {
  // ctx.auth.user.id is this caller — scope your data to it
  if (!ctx.auth.scopes.includes("todos:write")) {
    return { isError: true, content: [{ type: "text", text: "Missing scope" }] };
  }
};

oauth/scalekit.ts は、ファーストクラスの mcp-use/oauth/scalekit アダプターのプロトタイプです。まだ npm には公開されていません。

プロジェクト構成

パス

役割

index.ts

mcp-use サーバー、OAuth 配線、whoamigreet

oauth/scalekit.ts

JWT + JWKS プロバイダー

docs/v2/.../scalekit.mdx

クックブック: Scalekit で mcp-use サーバーを認証する

.env.example

プレースホルダーのみ

公開 URL を変更する

サーバーを公開する場合(トンネル、デプロイ、カスタムホスト):

  1. Scalekit の Server URL をそのオリジン + /mcp に設定します(末尾スラッシュなし)。

  2. MCP_URL を同じ文字列に設定します。

  3. このプロセスを再起動します。

検証側は変わりません。resourceId がオーディエンスチェックのままです。

トラブルシューティング

症状

考えられる原因

起動時に SCALEKIT_* または MCP_URL でサーバーがエラーになる

.env がない、または値が空

Inspector がログインを開始しない

DCR と CIMD が両方オフ — 少なくとも 1 つを有効にして保存する。すでにオンの場合は、Inspector に接続し直してキャッシュされたメタデータを破棄する

ログインは成功するがすべてのツールが 401 になる

Server URLMCP_URL と一致しない(末尾スラッシュ、ポートの誤り、httphttps の違い)

whoamiaudres_… のみ

Server URL がダッシュボードで空のまま — それでも有効。この例は resourceId に紐づきます

401 でクレームの詳細が必要

MCP_USE_OAUTH_DEBUG=1 を設定して再試行する。ログには issaudsub が出力される — 生のトークンは出力されない

Scalekit は MCP 認証のトラブルシューティングガイドも公開しています。

セキュリティ

  • クライアントシークレット、API キー、個人の環境 URL をこのリポジトリに置かないでください。

  • .env は gitignore されています。.env.example のみをコミットしてください。

  • このプロセスはクライアントシークレットを使用して Scalekit を呼び出すことはありません。ベアラートークンの検証のみを行います。

  • MCP_USE_OAUTH_DEBUG=1iss / aud / sub を確認するため JWT ペイロードをデコードします。トークンを出力することはありません。

ドキュメント

Maintenance

ActivityMaintained
ResponsivenessSyncing

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
    A remote MCP server implementation that demonstrates authentication and authorization capabilities using OAuth 2.1. This is a workshop project for learning how to build secure MCP servers with user authentication.
    26,177
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server demonstrating OAuth 2.0 authentication with Keycard's Security Token Service, providing tools for displaying the Keycard logo and retrieving authenticated user information.
    17
    1
    Apache 2.0
  • F
    license
    Not graded
    quality
    C
    maintenance
    A toy MCP server demonstrating OAuth 2.1 scoped authorization with three tools for minion status, listing, and summoning.

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/scalekit-developers/scalekit-mcpuse-example'

If you have feedback or need assistance with the MCP directory API, please join our Discord server