内容
# SSAS MCP 服务器
一个连接人工智能代理到 **SQL Server Analysis Services (SSAS)** 的 [模型上下文协议(MCP)](https://modelcontextprotocol.io/) 服务器。它允许像 GitHub Copilot、Claude(通过 Codex 或 Claude Code)和其他 MCP 客户端运行 DAX 和 MDX 查询,探索模型,列出度量,所有这些都通过自然语言。
> **仅限 Windows** \
> SSAS 使用 ADOMD.NET 客户端库,该库需要 Windows 上的 .NET Framework。
## 功能
| 工具 | 描述 |
| ----------------- | -------------------------------------------------------- |
| `execute_query` | 运行任何 DAX(`EVALUATE ...`)或 MDX(`SELECT ...`)查询 |
| `list_catalogs` | 列出 SSAS 实例上的所有数据库 |
| `list_tables` | 列出表、维度和度量组 |
| `list_columns` | 列出特定表的列 |
| `list_measures` | 列出所有可见的度量及其 DAX 表达式 |
| `describe_model` | 高级摘要:表、度量、元数据 |
## 先决条件
1. **Python 3.10+**
2. **ADOMD.NET 客户端库** \
DLL `Microsoft.AnalysisServices.AdomdClient.dll` 必须存在于机器上。它随以下任意一项提供:
- SQL Server Management Studio (SSMS)
- Power BI Desktop
- 独立的 [AMO/ADOMD 客户端库](https://learn.microsoft.com/en-us/analysis-services/client-libraries)
服务器自动检测常见安装位置。如果您的 DLL 在其他位置,请将 `ADOMD_DLL_PATH` 环境变量设置为包含它的文件夹。
## 安装
```bash
git clone https://github.com/NexusAI-Solutions/ssas-mcp-server.git
cd ssas-mcp-server
pip install .
```
## 配置
服务器通过环境变量配置:
| 变量 | 是否必需 | 描述 |
| ------------------------ | -------- | ------------------------------------------------------------------ |
| `SSAS_SERVER` | 是 | SSAS 实例名称(例如 `SERVER\INSTANCE`) |
| `SSAS_DATABASE` | 是 | 数据库/目录名称 |
| `SSAS_PROVIDER` | 否 | OLAP 提供程序(默认:`MSOLAP`) |
| `SSAS_CONNECTION_STRING` | 否 | 完整的 ADOMD 连接字符串(覆盖服务器/数据库/提供程序) |
| `ADOMD_DLL_PATH` | 否 | 包含 ADOMD.NET DLL 的文件夹的显式路径 |
## 使用
### 直接运行
```bash
set SSAS_SERVER=SERVER\INSTANCE
set SSAS_DATABASE=My Cube
python -m ssas_mcp_server
```
服务器以 stdio 模式启动,并等待 MCP 客户端连接。
### VS Code / Codex
将以下内容添加到您的 `.vscode/mcp.json`:
```json
{
"servers": {
"ssas": {
"command": "python",
"args": ["-m", "ssas_mcp_server"],
"env": {
"SSAS_SERVER": "SERVER\\INSTANCE",
"SSAS_DATABASE": "My Cube"
}
}
}
}
```
### Claude Code
```bash
claude mcp add ssas -- python -m ssas_mcp_server
```
然后在启动 Claude Code 之前在 shell 中设置环境变量,或内联传递它们。
### Claude Desktop
将以下内容添加到您的 `claude_desktop_config.json`:
```json
{
"mcpServers": {
"ssas": {
"command": "python",
"args": ["-m", "ssas_mcp_server"],
"env": {
"SSAS_SERVER": "SERVER\\INSTANCE",
"SSAS_DATABASE": "My Cube"
}
}
}
}
```
## 示例查询
连接后,您可以询问您的人工智能助手:
- "列出 SSAS 模型中的所有表"
- "显示度量及其 DAX 表达式"
- "运行此 DAX 查询:`EVALUATE TOPN(10, 'Sales', [Revenue], DESC)`"
- "描述数据模型"
- "Customers 表有哪些列?"
## 故障排除
### `Could not load file or assembly 'Microsoft.AnalysisServices.AdomdClient'`
未找到 ADOMD.NET DLL。解决方案:
1. **安装 SSMS、Power BI Desktop 或独立的 AMO 客户端库。**
2. **设置 `ADOMD_DLL_PATH`** 到包含 `Microsoft.AnalysisServices.AdomdClient.dll` 的文件夹。
在系统上查找 DLL:
```cmd
where /r "C:\Program Files" Microsoft.AnalysisServices.AdomdClient.dll
```
### `Server is not found or not accessible`
- 验证服务器名称与 SSMS 或 Power BI 中使用的名称完全匹配。
- 对于命名实例,请使用 `SERVER\INSTANCE` 格式。
- 如果您按实例名称连接,请确保 SQL Server Browser 服务正在运行。
## 许可证
MIT