一个提供 DAX(数据分析表达式)格式化功能的模型上下文协议(MCP)服务器,用于 AI 助手和其他 MCP 客户端。此服务器集成了 SQLBI 的官方 DAX 格式化器 服务,以提供专业级别的 DAX 代码格式化。
# 克隆仓库
git clone https://github.com/EmanueleMeazzo/dax-formatter-mcp.git
cd dax-formatter-mcp
# 构建项目
dotnet build --configuration Release
# 可执行文件将在 bin/Release/net8.0/ 目录下
将以下内容添加到您的 Claude Desktop 配置文件中:
Windows:%APPDATA%\Claude\claude_desktop_config.json
macOS:~/Library/Application Support/Claude/claude_desktop_config.json
Linux:~/.config/claude/claude_desktop_config.json
{
"mcpServers": {
"dax-formatter": {
"command": "path/to/dax-formatter-mcp.exe",
"args": []
}
}
}
将以下内容添加到您的 Continue 配置中:
{
"mcpServers": [
{
"name": "dax-formatter",
"command": "path/to/dax-formatter-mcp.exe",
"args": []
}
]
}
对于支持 MCP 2024-11-05 协议的任何 MCP 客户端:
{
"servers": [
{
"name": "dax-formatter",
"transport": {
"type": "stdio",
"command": "path/to/dax-formatter-mcp.exe",
"args": []
}
}
]
}
如果您希望使用 DLL 和 .NET 运行时:
{
"mcpServers": {
"dax-formatter": {
"command": "dotnet",
"args": ["path/to/dax-formatter-mcp.dll"]
}
}
}
配置完成后,您可以通过您的 MCP 客户端使用 DAX 格式化器:
格式化此 DAX 表达式:
CALCULATE(SUM(Sales[Amount]),FILTER(Products,Products[Category]="Electronics"))
格式化这些 DAX 度量值:
1. [Total Sales] := SUM(Sales[Amount])
2. [Electronics Sales] := CALCULATE(SUM(Sales[Amount]),Products[Category]="Electronics")
3. [Sales YTD] := TOTALYTD(SUM(Sales[Amount]),'Calendar'[Date])
使用短行和特定分隔符格式化此 DAX:
CALCULATE(SUM(Sales[Amount]),FILTER(Products,Products[Category]="Electronics"))
选项:
- 行长度:ShortLine
- 列表分隔符:;
- 小数分隔符:,
format_dax格式化单个 DAX 表达式。
参数:
dax(必需):要格式化的 DAX 表达式options(可选):格式化选项对象示例:
{
"dax": "CALCULATE(SUM(Sales[Amount]),FILTER(Products,Products[Category]=\"Electronics\"))",
"options": {
"maxLineLength": "LongLine",
"skipSpaceAfterFunctionName": "BestPractice"
}
}
format_dax_multiple在一次请求中格式化多个 DAX 表达式。
参数:
expressions(必需):要格式化的 DAX 表达式数组options(可选):格式化选项对象示例:
{
"expressions": [
"CALCULATE(SUM(Sales[Amount]),FILTER(Products,Products[Category]=\"Electronics\"))",
"[Total Sales] := SUM(Sales[Amount])"
],
"options": {
"maxLineLength": "LongLine",
"databaseName": "SalesDB",
"serverName": "ProductionServer"
}
}
所有格式化选项都是可选的,并且有合理的默认值:
| 选项 | 值 | 默认值 | 描述 |
|---|---|---|---|
maxLineLength | ShortLine, LongLine, VeryLongLine | LongLine | 格式化代码的最大行长度 |
skipSpaceAfterFunctionName | BestPractice, False | BestPractice | 函数名称后的空格 |
listSeparator | 任意字符 | , | 列表分隔符 |
decimalSeparator | 任意字符 | . | 小数分隔符 |
databaseName | 字符串 | - | 数据库名称(匿名化) |
serverName | 字符串 | - | 服务器名称(匿名化) |
以下是一些您可以测试的示例 DAX 表达式:
[Total Sales] := SUM(Sales[Amount])
CALCULATE(SUM(Sales[Amount]),FILTER(ALL(Products),Products[Category]="Electronics"),USERELATIONSHIP(Sales[OrderDate],'Calendar'[Date]))
[Sales YTD] := TOTALYTD(SUM(Sales[Amount]),'Calendar'[Date])
EVALUATE FILTER(Customer, Customer[Country] = "USA")
服务器无法启动:
格式化请求失败:
MCP 客户端不识别服务器:
要启用调试日志,您可以手动运行服务器以查看详细日志:
# 直接运行服务器以查看调试输出
./dax-formatter-mcp.exe
然后手动发送 JSON-RPC 消息以测试功能。
MCP 服务器构建于:
MCP 客户端 → JSON-RPC → DAX 格式化器 MCP 服务器 → DAX 格式化器 API → 格式化后的 DAX
欢迎贡献!请遵循以下步骤:
git checkout -b feature/amazing-feature)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)# 克隆仓库
git clone https://github.com/EmanueleMeazzo/dax-formatter-mcp.git
cd dax-formatter-mcp
# 恢复依赖
dotnet restore
# 构建项目
dotnet build
# 运行测试
dotnet test
本项目采用 MIT 许可证 - 详情请参阅 LICENSE 文件。