認証
対話型 OAuth(推奨)
初回接続時に、MCP クライアントは以下を行います:
- Builder または Runtime の URL にアクセス
- 認証チャレンジを受信
- EKB アカウント(
/oauth/consent)のブラウザ同意画面を開く - PKCE を用いた認可コードフローを完了
- あなたを表すトークンで EKB を呼び出す
接続したエンドポイントに応じて build または use アクセスを承認します。Builder と Runtime はトークンを共有しません。
同意画面に表示されるもの
| スコープ | 画面のラベル |
|---|---|
odin:build | Build in your workspace |
odin:use | Use your agents and tools |
画面には要求中の MCP クライアント名と権限が表示されます。明示的に承認または拒否してください — デフォルトで何もグラントされません。拒否すると error=access_denied とともにクライアントへリダイレクトされ、クライアントは待機したままになりません。
保留中の同意リクエストは期限切れになります。リクエストの期限切れまたは既に使用済みというメッセージが表示された場合は、MCP クライアントから再度開始してください。
2つのグラントがある理由
| グラント | スコープ | Audience | 一般的な用途 |
|---|---|---|---|
| Builder | odin:build | /builder/mcp | エージェント、ワークフロー、テーブル、インターフェース、KB の作成/変更 |
| Runtime | odin:use | /runtime/mcp | エージェントへの質問、公開済みツールの実行、KB の検索、テーブルのクエリ |
Runtime のトークンを Builder に向けると失敗します(その逆も同様)。「サポートエージェントを使って」が「エージェントを書き換えろ」にエスカレートすることはできません。
トークンができること
3つのレイヤーが適用されます:
- Audience — トークンは、あなたが承認したサーバーでのみ有効
- Scope — build 対 use
- バックエンドの許可リスト — MCP 経由で到達できるのは明示的な EKB API のセットのみ
MCP サービスは独自の資格情報を保持しません。すべての呼び出しはあなたのトークン(または API キー)を転送します。EKB は通常のプロジェクト所属、権限、公開状態、ドキュメントの Access Tags を引き続き強制します。
API キー(ヘッドレス)
CI や自動化はブラウザの同意フローを完了できません。以下を渡してください:
X-API-KEY: ...
X-API-SECRET: ...
| キーのタイプ | 最適な用途 |
|---|---|
| ユーザー単位 | list_odin_projects、複数プロジェクトの Runtime、複数のプロジェクトを参照する必要がある CI |
| プロジェクト単位 | 単一プロジェクトに限定された自動化 |
設定例:クライアントの接続。
MCP クライアント設定内の API シークレットは、他の資格情報と同様に扱ってください — 共有リポジトリにコミットしないでください。
セキュリティのヒント
- 構成を変更すべきクライアントでのみ Builder を接続
- 日常のアシスタントには Runtime のみを推奨
- 本番では HTTPS の MCP URL を使用
- ヘッドレスアクセスに使用する API キーをローテーション
- ラップトップ/クライアントが build アクセスを持つべきでなくなったら、再接続または失効
- Access Tags とプロジェクトロールは Runtime の検索とエージェントの回答に引き続き適用されることを忘れないでください
トラブルシューティング
| 症状 | 確認すること |
|---|---|
| 同意の期限切れ | クライアントから再開;リクエストは短命 |
| トークンが Runtime では動くが Builder では動かない | 予想どおり — 別々のグラント;Builder を別途接続して承認 |
| ヘッドレス呼び出しがプロジェクト間で失敗 | ユーザー単位の API キーを使用 |
| 拒否後にクライアントがハング | クライアントが access_denied を処理する必要;必要なら接続を再試行 |