macOS/Linux下Microsoft.PowerPlatform.Dataverse.MCP的MSAL认证参数缺失异常
解决Microsoft.PowerPlatform.Dataverse.MCP在macOS/Linux上的MSAL认证参数缺失问题
问题概述
按照官方指南使用Microsoft.PowerPlatform.Dataverse.MCP本地代理连接Dataverse时,在macOS或Linux系统运行会触发MSAL认证失败,抛出System.ArgumentNullException,提示keyChainServiceName(macOS)或attributeKey1(Linux)参数为空。
错误详情
macOS错误日志
Unhandled exception. System.ArgumentNullException: Value cannot be null. (Parameter 'keyChainServiceName') at Microsoft.Identity.Client.Extensions.Msal.MacKeychainAccessor..ctor(...) at Microsoft.Identity.Client.Extensions.Msal.Storage.Create(...) at Microsoft.Identity.Client.Extensions.Msal.MsalCacheHelper.CreateAsync(...) at PowerPlatformMCPProxy.Auth.AuthenticationService.GetMsalClient() ...
Linux错误日志
Unhandled exception. System.ArgumentNullException: Value cannot be null. (Parameter 'attributeKey1') at Microsoft.Identity.Client.Extensions.Msal.LinuxKeyringAccessor..ctor(...) at Microsoft.Identity.Client.Extensions.Msal.Storage.Create(...) at Microsoft.Identity.Client.Extensions.Msal.MsalCacheHelper.CreateAsync(...) at PowerPlatformMCPProxy.Auth.AuthenticationService.GetMsalClient() ... Aborted (core dumped)
已尝试操作
- 使用NuGet上的最新Microsoft.PowerPlatform.Dataverse.MCP版本
- 严格遵循官方指南的前置要求
- 在.NET 8环境下测试
- 在VS Code终端、独立终端等不同环境运行
- 在macOS、Redhat Linux系统上验证
解决方案
1. 设置MSAL专用环境变量
MSAL在非Windows平台依赖环境变量填充缺失参数,运行代理前先设置对应变量:
- macOS:
export MSAL_KEYCHAIN_SERVICE_NAME="com.microsoft.powerplatform.datverse.mcp" - Linux:
export MSAL_ATTRIBUTE_KEY1="PowerPlatformMCPProxy"
设置完成后启动MCP代理工具即可。若需永久生效,可将命令添加到shell配置文件(如~/.bashrc、~/.zshrc)中。
2. 验证MSAL依赖兼容性
确认.NET 8环境中Microsoft.Identity.Client.Extensions.Msal包版本与MCP代理依赖版本匹配,版本不兼容可能导致参数传递异常。可手动更新该包到最新稳定版:
dotnet add package Microsoft.Identity.Client.Extensions.Msal --version latest
3. 检查工具自定义参数
运行MCP代理的帮助命令,查看是否支持通过命令行参数或配置文件指定MSAL缓存参数:
# 若通过dotnet run启动 dotnet run --help # 若为独立可执行文件 ./Microsoft.PowerPlatform.Dataverse.MCP --help
若存在--key-chain-service或--attribute-key1这类参数,直接通过命令行传递即可。
4. 提交官方反馈
若上述方法均无效,说明工具存在非Windows平台兼容性bug,建议向Power Apps官方提交问题,附带完整错误日志、环境信息及已尝试操作,推动官方修复。
内容的提问来源于stack exchange,提问作者faris
相关产品推荐
相关产品推荐

