VS CodeをCasdoor MCPサーバーに接続する
このガイドでは、Copilotがエージェントモードでツールを呼び出せるように、GitHub Copilot in VS CodeをCasdoorのMCPサーバー、またはCasdoor MCPゲートウェイの裏側にあるMCPサーバーに接続する方法を説明します。
学習目標
- 手動で作成したアプリケーションなしで、VS CodeがCasdoorに対して自身を識別できるようにします。
mcp.jsonにMCPサーバーを追加します。- サインインし、ツールを確認してから、サインアウトします。
必要なもの
- 稼働中の Casdoor インスタンス。本番環境では HTTPS を使用してください。
- VS Code と GitHub Copilot
- Casdoor 管理コンソールへのグローバル管理者アクセス権
接続について
VS CodeはHTTP経由でリモートMCPサーバーに接続し、PKCEを含むOAuth 2.0認可コードフローを実行します。MCPサーバーがHTTP 401で応答した場合、VS Codeはサーバーの保護されたリソースメタデータを読み取り、その認可サーバーとしてCasdoorを見つけ、以下の方法のうち最初に成功した方法でクライアントIDを取得します:
mcp.json内のクライアントID: Casdoorで作成したアプリケーションです。自分で作成したアプリケーションを使用するを参照してください。- クライアントIDメタデータドキュメント (CIMD): VS Codeは、公開しているドキュメントのURL
https://vscode.dev/oauth/client-metadata.jsonをクライアントIDとして使用します。Casdoorはこのドキュメントを読み取り、登録は不要です。 - 動的クライアント登録 (DCR): VS CodeはCasdoorの登録エンドポイントを通じて自身を登録します。
VS Codeのドキュメントには、デスクトップアプリ用の http://127.0.0.1:33418/ と、Web版VS Code用の https://vscode.dev/redirect の2つのリダイレクトURIが記載されています。VS CodeドキュメントのMCP開発者ガイドを参照してください。
CasdoorでのVS Codeの承認
CIMDとDCRの両方は、組織の Enable dynamic client registration によって管理されます。
- Casdoor管理コンソールで、User Management > Organizations に移動し、VS Codeにサインインするユーザーの組織を開きます。Casdoor MCPサーバーの場合は
built-in、MCPゲートウェイの裏側のサーバーの場合は、そのサーバーの組織です。 - Enable dynamic client registration をオンにします。
- 組織を保存します。
最初のサインイン時に、CasdoorはクライアントID https://vscode.dev/oauth/client-metadata.json、cimd_ で始まる名前、およびタグ cimd を持つアプリケーションを作成します。すべての組織がこの1つのアプリケーションを共有します。メタデータドキュメントURLによって識別されるクライアントを承認するを参照してください。
VS CodeへのMCPサーバーの追加
-
コマンドパレットを開き、すべてのワークスペース用に MCP: Open User Configuration を実行するか、ワークスペースに
.vscode/mcp.jsonを作成します。 -
サーバーを追加します。
your-casdoor.comを自分のCasdoorインスタンスのドメインに置き換えてください。CasdoorのMCPサーバーの場合:
{
"servers": {
"casdoor": {
"type": "http",
"url": "https://your-casdoor.com/api/mcp"
}
}
}MCPゲートウェイの裏側のサーバーの場合は、ゲートウェイURL
https://your-casdoor.com/api/server/<organization>/<server-name>を使用します:{
"servers": {
"acme-tools": {
"type": "http",
"url": "https://your-casdoor.com/api/server/acme/tools"
}
}
} -
ファイルを保存します。VS Codeはサーバーの上に Start CodeLensを表示します。それを選択してください。
サインイン
- VS Codeは、サーバーがCasdoorでサインインしてよいかどうかを尋ねます。Allow を選択してください。
- ブラウザでCasdoorのサインインページが開きます。サインインしてください。
- Casdoor に同意画面が表示された場合は、Allow をクリックします。
- ブラウザからVS Codeに戻り、サーバーが起動します。
結果の確認
- チャットビューを開き、Agent モードに切り替えます。
- Tools ボタンを選択し、サーバーのツールがリストされていることを確認します。
- 例えば「List all applications in Casdoor」といったように、Copilotにそれらを使用するように依頼します。
Casdoor側でクライアントを確認するには、Identity > Applications を開き、クライアントIDが https://vscode.dev/oauth/client-metadata.json である cimd_ アプリケーションを探すか、Tokens を開いてユーザーのトークンを探します。
自分で作成したアプリケーションを使用する
動的クライアント登録を有効にしたくない場合は、クライアントを手動で作成します:
-
Casdoor管理コンソールで、Identity > Applications に移動し、ユーザーの組織にアプリケーション(例:
vscode-mcp)を追加します。 -
Redirect URLs に
http://127.0.0.1:33418/とhttps://vscode.dev/redirectを追加します。 -
アプリケーションを保存し、その Client ID をコピーします。
-
クライアントIDを
mcp.jsonに入力します:{
"servers": {
"casdoor": {
"type": "http",
"url": "https://your-casdoor.com/api/mcp",
"oauth": {
"clientId": "<client-id>"
}
}
}
} -
アプリケーションにクライアントシークレットが必要な場合、サーバーの上にある Set Client Secret CodeLensを選択し、Client Secret を貼り付けます。VS Codeはこれを
mcp.jsonではなく、秘密ストレージに保持します。
サインアウト
- サインアウトするには、アクティビティバーの下部にある Accounts メニューを開き、Casdoorアカウントを選択し、Sign Out を選択します。
- DCRを通じて登録したクライアントをVS Codeに忘れさせるには、Authentication: Remove Dynamic Authentication Providers を実行します。
- クライアントを Casdoor 側で遮断するには、Tokens ページでそのトークンを削除します。
トラブルシューティング
リダイレクト URL の不一致が報告される
VS Code はコールバックのためにポート 33418 でリッスンしています。他のプロセスがこのポートを使用している場合、リダイレクト URI が一致しなくなります。ポートを解放して再試行してください。
Casdoor がクライアント ID メタデータドキュメントを拒否する
エラー "client ID metadata documents are not accepted" は、組織に対して Enable dynamic client registration がオフになっていることを意味します。Accept VS Code in Casdoor を参照してください。また、Casdoor がインターネット経由で https://vscode.dev に到達できる必要があります。
VS Code がクライアント ID を要求する
VS Code は CIMD と DCR のいずれも使用できない場合にクライアント ID を要求します。Enable dynamic client registration をオンにするか、自分で作成したアプリケーションのクライアント ID を入力してください。
サインイン後にゲートウェイが 401 を返す
MCP ゲートウェイガイドの Troubleshooting を参照してください。