跳到主内容

连接 VS Code 到 Casdoor MCP 服务器

本指南说明如何将 VS Code 中的 GitHub Copilot 连接到 Casdoor 的 MCP 服务器,或连接到 Casdoor MCP 网关后的 MCP 服务器,以便 Copilot 可以在代理模式下调用其工具。


学习目标​

  • 让 VS Code 向 Casdoor 标识自身,而无需手动创建应用。
  • 将 MCP 服务器添加到 mcp.json。
  • 登录,检查工具,并注销。

前提条件​

  • 一个正在运行的 Casdoor 实例。在生产环境中使用 HTTPS。
  • VS Code 及 GitHub Copilot
  • 拥有 Casdoor 管理控制台的超级管理员权限

关于连接​

VS Code 通过 HTTP 连接到远程 MCP 服务器,并自行运行带 PKCE 的 OAuth 2.0 授权码流程。当 MCP 服务器返回 HTTP 401 时,VS Code 读取服务器的受保护资源元数据,找到 Casdoor 作为其授权服务器,并以第一种可行的方式获取客户端 ID:

  1. mcp.json 中的客户端 ID:您在 Casdoor 中创建的应用。参见使用您创建的应用。
  2. 客户端 ID 元数据文档 (CIMD):VS Code 使用其发布的文档 URL https://vscode.dev/oauth/client-metadata.json 作为客户端 ID。Casdoor 读取该文档,无需注册。
  3. 动态客户端注册 (DCR):VS Code 通过 Casdoor 的注册端点进行自我注册。

VS Code 的文档列出了两个重定向 URI:用于桌面应用的 http://127.0.0.1:33418/ 和用于 Web 版 VS Code 的 https://vscode.dev/redirect。参见 VS Code 文档中的 MCP 开发者指南。

在 Casdoor 中接受 VS Code​

CIMD 和 DCR 均受组织的 Enable dynamic client registration 设置控制。

  1. 在 Casdoor 管理控制台中,转到 User Management > Organizations 并打开用户登录 VS Code 所在的组织:对于 Casdoor MCP 服务器为 built-in,对于位于 MCP 网关后的服务器则为该服务器所属的组织。
  2. 开启 Enable dynamic client registration。
  3. 保存组织设置。

首次登录时,Casdoor 会创建一个应用,其客户端 ID 为 https://vscode.dev/oauth/client-metadata.json,名称以 cimd_ 开头,标签为 cimd。所有组织共享这一个应用。参见接受由元数据文档 URL 标识的客户端。

将 MCP 服务器添加到 VS Code​

  1. 打开命令面板并运行 MCP: Open User Configuration 以配置所有工作区,或在工作区中创建 .vscode/mcp.json。

  2. 添加服务器。将 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"
    }
    }
    }
  3. 保存文件。VS Code 会在服务器上方显示一个 Start CodeLens。选择它。

登录​

  1. VS Code 询问是否允许该服务器通过 Casdoor 登录。选择 Allow。
  2. 您的浏览器将打开 Casdoor 登录页面。进行登录。
  3. 如果 Casdoor 显示同意屏幕,点击 Allow。
  4. 浏览器将您送回 VS Code,并且服务器启动。

验证结果​

  1. 打开 Chat 视图并切换到 Agent 模式。
  2. 选择 Tools 按钮并检查服务器工具是否已列出。
  3. 要求 Copilot 使用它们,例如“列出 Casdoor 中的所有应用”。

要在 Casdoor 端检查客户端,请打开 Identity > Applications 并找到客户端 ID 为 https://vscode.dev/oauth/client-metadata.json 的 cimd_ 应用,或打开 Tokens 并找到您的用户令牌。

使用您创建的应用​

如果您不想启用动态客户端注册,请自行创建客户端:

  1. 在 Casdoor 管理控制台中,转到 Identity > Applications 并在用户所在的组织中添加一个应用,例如 vscode-mcp。

  2. 将 http://127.0.0.1:33418/ 和 https://vscode.dev/redirect 添加到 Redirect URLs。

  3. 保存应用并复制其 Client ID。

  4. 将客户端 ID 放入 mcp.json:

    {
    "servers": {
    "casdoor": {
    "type": "http",
    "url": "https://your-casdoor.com/api/mcp",
    "oauth": {
    "clientId": "<client-id>"
    }
    }
    }
    }
  5. 如果应用需要客户端密钥,请选择服务器上方的 Set Client Secret CodeLens 并粘贴 Client Secret。VS Code 将其保存在其秘密存储中,而不是在 mcp.json 中。

注销​

  • 要注销,请打开活动栏底部的 Accounts 菜单,选择 Casdoor 账户,然后选择 Sign Out。
  • 要使 VS Code 忘记其通过 DCR 注册的客户端,请运行 Authentication: Remove Dynamic Authentication Providers。
  • 要在 Casdoor 端切断客户端,请在 Tokens 页面删除其令牌。

故障排除​

Casdoor 报告重定向 URL 不匹配​

VS Code 在端口 33418 上监听回调。如果其他进程占用了该端口,重定向 URI 将不再匹配。请释放端口后重试。

Casdoor 拒绝客户端 ID 元数据文档​

错误“client ID metadata documents are not accepted”表示该组织的 Enable dynamic client registration 处于关闭状态。请参阅 在 Casdoor 中接受 VS Code。此外,Casdoor 还必须能够通过互联网访问 https://vscode.dev。

VS Code 请求客户端 ID​

当 VS Code 既无法使用 CIMD 也无法使用 DCR 时,它会发起请求。请开启 Enable dynamic client registration,或者输入您创建的应用程序的客户端 ID。

登录后网关返回 401​

请参阅 MCP 网关指南中的 故障排除。

另请参阅​