You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何基于OAuth 2.0实现远程MCP服务器并对接VSCode Copilot?

配置VSCode Copilot连接带OAuth2认证的远程MCP服务器

针对你部署在远程地址的MCP服务器,要通过OAuth2实现安全防护并让Copilot正常连接,按以下步骤操作:

一、远程MCP服务器的OAuth2基础配置

  1. 选择授权流程:因为VSCode属于公共客户端(无法安全存储密钥),优先采用Authorization Code Flow + PKCE的组合,这是OAuth2针对公共客户端的标准安全方案。
  2. 注册VSCode客户端
    • 在你的OAuth2服务器上注册VSCode作为客户端,只需要生成client ID(不需要client secret)。
    • 配置允许的回调URL:VSCode Copilot的默认回调地址是vscode://microsoft.copilot-auth/callback,必须将这个地址添加到OAuth2服务器的允许列表中。
  3. 配置服务器端令牌验证
    • 在MCP服务器的所有接口中,添加令牌校验逻辑:检查请求头中的Authorization: Bearer <access_token>,验证令牌的签名有效性、过期时间以及是否包含访问MCP服务的权限范围(比如mcp:access)。

二、VSCode Copilot的MCP服务器配置

打开VSCode的settings.json(可以通过Ctrl+,打开设置面板后,点击右上角的"打开设置(JSON)"按钮),添加以下配置:

"copilot.modelContextProtocol.servers": [
  {
    "name": "自定义远程MCP服务",
    "url": "https://my-mcp-server.com",
    "auth": {
      "type": "oauth2",
      "clientId": "你的OAuth2客户端ID",
      "authorizationUrl": "https://你的OAuth2服务器地址/authorize",
      "tokenUrl": "https://你的OAuth2服务器地址/token",
      "scopes": ["mcp:access"], // 替换为你的OAuth2服务器要求的权限范围
      "redirectUri": "vscode://microsoft.copilot-auth/callback"
    }
  }
]
  • 注意:PKCE流程会由VSCode Copilot扩展自动处理,无需额外配置参数。
  • 确保你的Copilot扩展是最新稳定版,旧版本可能不支持远程MCP的OAuth2认证。

三、测试认证流程

  1. 重启VSCode后,当Copilot触发调用你的自定义MCP工具时,会自动弹出浏览器窗口跳转到你的OAuth2服务器登录页面。
  2. 完成登录授权后,VSCode会自动获取访问令牌,并在后续所有MCP请求中携带Authorization请求头。
  3. 可以通过MCP服务器的日志,确认请求头中是否包含有效的Bearer令牌,验证认证是否生效。

四、常见问题排查

  • 授权窗口不弹出:检查settings.json中的authorizationUrlredirectUri是否与OAuth2服务器的配置完全一致,包括HTTP/HTTPS协议。
  • 令牌验证失败:确认OAuth2服务器使用的签名算法(如RS256)与MCP服务器的验证逻辑匹配,检查令牌的过期时间和权限范围是否符合要求。
  • MCP请求被跨域拦截:在MCP服务器的CORS配置中,允许VSCode的请求来源(测试环境可临时允许所有来源,生产环境需精准配置)。

内容的提问来源于stack exchange,提问作者Rahul kuchhadia

火山引擎 最新活动