EntraID认证MCP Server异常:VS Code登录成功却无法连接
排查MCP服务器集成Entra ID后VS Code连接卡住(等待initialize请求响应)的问题
核心问题场景
构建集成OAuth2/Entra ID(Azure AD)的MCP(Model Context Protocol)服务器时,VS Code登录流程完成,但连接始终卡住,控制台反复输出:
[info] Waiting for server to respond to
initializerequest...
认证流程看似成功,VS Code能正常调用http://localhost:5188/.well-known/oauth-protected-resource并获取指定JSON响应,但客户端未发送带认证信息的initialize请求,或服务器拒绝了该请求。
排查步骤
1. 验证VS Code客户端的令牌传递
- 抓包查看
initialize请求的Headers,确认是否携带Authorization: Bearer <access_token>字段 - 检查VS Code扩展的配置项,确认是否开启了将认证令牌附加到MCP初始化请求的逻辑,是否指定了正确的令牌获取路径
2. 服务器端认证与请求处理排查
- 查看服务器端日志,确认是否接收到
initialize请求:- 若未收到,说明客户端未触发该请求,需检查VS Code扩展与MCP服务器的协议交互逻辑
- 若收到请求,检查请求中的令牌是否有效:验证Entra ID令牌的受众(Audience)、**颁发者(Issuer)**是否与服务器配置一致,令牌是否过期
- 确认服务器的
initialize接口是否正确集成了OAuth2认证中间件,避免遗漏对该接口的认证校验,或校验逻辑存在错误导致请求被静默拒绝
3. 校验.well-known/oauth-protected-resource响应合规性
- 确认返回的JSON响应符合MCP协议要求,重点检查:
scopes字段是否包含MCP服务器所需的权限范围token_endpoint、authorization_endpoint等字段是否指向正确的Entra ID端点- 响应格式是否无语法错误,避免客户端解析失败导致后续流程终止
4. 手动测试服务器端initialize接口
- 用Postman等工具构造携带有效Entra ID令牌的
initialize请求,发送到服务器对应端点:- 若服务器正常响应,说明问题出在VS Code客户端侧的请求触发或令牌传递逻辑
- 若服务器无响应或返回错误,定位服务器端的
initialize接口处理逻辑问题,比如业务异常未捕获、响应未正确返回
内容的提问来源于stack exchange,提问作者PAPIRATA
相关产品推荐
相关产品推荐

