メインコンテンツへスキップ
Caret MCPサーバーは、2つの認証方式をサポートしています:OAuth 2.0 with PKCE(推奨)およびAPIキー(レガシー)。

OAuth 2.0 with PKCE

ほとんどのMCPクライアント(Claude Desktop、Cursorなど)はOAuthフローを自動的に処理します。このセクションは、カスタムMCPクライアントを開発する開発者向けです。

1. 動的クライアント登録

クライアントを登録して client_idclient_secret を取得します。

curl -X POST "https://api.caret.so/mcp/oauth/register" \
 -H "Content-Type: application/json" \
 -d '{
"client_name": "My MCP Client",
"redirect_uris": ["http://localhost:3000/callback"],
"grant_types": ["authorization_code", "refresh_token"],
"response_types": ["code"],
"token_endpoint_auth_method": "client_secret_post",
"scope": "read offline_access"
}'

レスポンス:
{
  "client_id": "caret_abc123...",
  "client_secret": "secret_xyz...",
  "client_name": "My MCP Client",
  "redirect_uris": ["http://localhost:3000/callback"],
  "grant_types": ["authorization_code", "refresh_token"],
  "response_types": ["code"],
  "token_endpoint_auth_method": "client_secret_post",
  "scope": "read write offline_access openid profile email"
}

2. 認可リクエスト

ユーザーを認可エンドポイントにリダイレクトします。
GET https://api.caret.so/mcp/oauth/authorize
  ?response_type=code
  &client_id={client_id}
  &redirect_uri={redirect_uri}
  &code_challenge={code_challenge}
  &code_challenge_method=S256
  &state={state}
  &scope=read+offline_access
パラメータ必須説明
response_typeはいcode である必要があります
client_idはいクライアント登録で取得した値
redirect_uriはい登録済みのリダイレクトURIと一致する必要があります
code_challenge推奨PKCEコードチャレンジ(S256)
code_challenge_methodチャレンジ使用時S256 である必要があります
state推奨CSRF保護のための不透明な値
scope任意スペース区切りのスコープ(デフォルト read
ユーザーはGoogleサインインにリダイレクトされ、その後Caretワークスペースの選択を求められます。認可後、ユーザーは code パラメータ付きで redirect_uri にリダイレクトされます。

3. トークン交換

認可コードをトークンに交換します。

curl -X POST "https://api.caret.so/mcp/oauth/token" \ -H
"Content-Type: application/x-www-form-urlencoded" \ -d
"grant_type=authorization_code" \ -d "code={authorization_code}" \ -d
"redirect_uri={redirect_uri}" \ -d "client_id={client_id}" \ -d
"client_secret={client_secret}" \ -d "code_verifier={code_verifier}"

レスポンス:
{
"access_token": "eyJhbGciOiJIUzI1...",
"token_type": "Bearer",
"expires_in": 3600,
"refresh_token": "rt_abc123...",
"scope": "read offline_access"
}

4. トークンのリフレッシュ

アクセストークンの有効期限が切れたら、リフレッシュトークンを使用して新しいトークンを取得します。

curl -X POST "https://api.caret.so/mcp/oauth/token" \ -H
"Content-Type: application/x-www-form-urlencoded" \ -d
"grant_type=refresh_token" \ -d "refresh_token={refresh_token}" \ -d
"client_id={client_id}" \ -d "client_secret={client_secret}"

リフレッシュのたびに既存のリフレッシュトークンは無効化され、新しいトークンが発行されます。

スコープ

スコープ説明
readノート、ナレッジ、ワークスペース、メンバーへの読み取りアクセス
write書き込みアクセス(将来の利用予定)
offline_accessリフレッシュトークンのリクエスト
openidOpenID Connect ID
profileユーザープロフィール情報
emailユーザーメールアドレス

トークンの有効期間

トークン有効期間
アクセストークン(JWT)1時間
リフレッシュトークン30日
認可コード10分

APIキー認証

OAuthの代替として、既存のCaret APIキーを使用できます。

curl -X POST "https://api.caret.so/mcp" \
  -H "Authorization: Bearer your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{"method": "tools/call", ...}'

APIキーはCaretアプリの 設定 > 開発者 で作成します。詳細は API認証 を参照してください。

権限マッピング

権限MCPツール
notes / readcaret_list_notes, caret_get_note, caret_search_notes, caret_search_knowledge
users / readcaret_list_members
(不要)caret_get_workspace

エラー

エラーステータス説明
invalid_client400/401不明なクライアントまたは認証に失敗しました
invalid_grant400認可コードの有効期限切れ、使用済み、またはPKCE検証に失敗しました
invalid_scope400リクエストされたスコープがサポートされていないか、許可されていません
invalid_request400パラメータの欠落または不正な形式
server_error500内部サーバーエラー