连接 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:
mcp.json中的客户端 ID:您在 Casdoor 中创建的应用。参见使用您创建的应用。- 客户端 ID 元数据文档 (CIMD):VS Code 使用其发布的文档 URL
https://vscode.dev/oauth/client-metadata.json作为客户端 ID。Casdoor 读取该文档,无需注册。 - 动态客户端注册 (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 设置控制。
- 在 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。所有组织共享这一个应用。参见接受由元数据文档 URL 标识的客户端。
将 MCP 服务器添加到 VS Code
-
打开命令面板并运行 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,并且服务器启动。
验证结果
- 打开 Chat 视图并切换到 Agent 模式。
- 选择 Tools 按钮并检查服务器工具是否已列出。
- 要求 Copilot 使用它们,例如“列出 Casdoor 中的所有应用”。
要在 Casdoor 端检查客户端,请打开 Identity > Applications 并找到客户端 ID 为 https://vscode.dev/oauth/client-metadata.json 的 cimd_ 应用,或打开 Tokens 并找到您的用户令牌。
使用您创建的应用
如果您不想启用动态客户端注册,请自行创建客户端:
-
在 Casdoor 管理控制台中,转到 Identity > Applications 并在用户所在的组织中添加一个应用,例如
vscode-mcp。 -
将
http://127.0.0.1:33418/和https://vscode.dev/redirect添加到 Redirect URLs。 -
保存应用并复制其 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。
- 要使 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 网关指南中的 故障排除。
另请参阅
- 端到端的 Casdoor MCP 网关
- 连接 Claude
- 连接 Cursor
- 连接 ChatGPT
- VS Code 文档中的 MCP 配置参考