Command Palette

Search for a command to run...

UnylyUnyly
Весь каталог

SSAS Server

БесплатноНе проверен

A read-only MCP server for querying SQL Server Analysis Services (multidimensional cubes via MDX and tabular models via DAX) using Windows Integrated Security.

GitHubEmbed

Описание

A read-only MCP server for querying SQL Server Analysis Services (multidimensional cubes via MDX and tabular models via DAX) using Windows Integrated Security.

README

A read-only Model Context Protocol server for querying SQL Server Analysis Services — both multidimensional cubes (MDX) and tabular models (DAX) — with Windows Integrated Security (Kerberos/NTLM, no passwords).

Companion to mssql_mcp_server, but for the OLAP side of the house.

Features

  • list_metadata — discover a cube/model's measures, dimensions and hierarchies (via MDSCHEMA_* DMVs, which work for both model types), so the agent never guesses bracketed unique names. The overview stays compact — measures, dimension names and multi-level user hierarchies; pass dimension="[Dim Event]" to drill into one dimension's full attribute hierarchies and levels (a whole cube's attribute list can run to tens of thousands of tokens).
  • execute_query — run an MDX (SELECT/WITH) or DAX (EVALUATE/DEFINE) query and get a flattened JSON table back.
  • execute_dmv — guarded passthrough for SELECT ... FROM $SYSTEM.* schema rowsets (MDSCHEMA_*, TMSCHEMA_*, DISCOVER_*) for deeper introspection.
  • Read-only by construction — statements that don't start with SELECT/WITH/EVALUATE/DEFINE are rejected, XMLA payloads are rejected, and there is no DDL/process surface at all.
  • Row cap + query timeout on every call so a runaway crossjoin can't flood the context window.

Requirements

Windows-only by construction (the server drives ADOMD.NET via pythonnet):

  1. Windows, domain-joined, with network access to the SSAS instance (default instance = TCP 2383).
  2. The Windows account running the server has Read access to the SSAS database (role membership). Integrated auth means "whoever runs the process".
  3. ADOMD.NET client libraries — ships with SSMS, or install the Analysis Services client libraries redistributable. Typically lands in C:\Program Files\Microsoft.NET\ADOMD.NET\160.
  4. Python 3.11+

Installation

git clone https://github.com/dbdave/mssas_mcp_server
cd mssas_mcp_server
pip install -e .

Smoke-test connectivity before wiring up MCP (if this fails it's network/auth/ADOMD install, not the server):

python test_connection.py <server> <catalog>

Configuration

Variable Required Default Notes
SSAS_SERVER yes Host, host\instance, or an http(s)://.../msmdpump.dll URL
SSAS_CATALOG yes SSAS database name
SSAS_DEFAULT_CUBE no Cube/model list_metadata uses when none is given
SSAS_ROW_LIMIT no 10000 Hard cap on returned rows
SSAS_QUERY_TIMEOUT no 60 Per-query timeout, seconds
SSAS_ADOMD_DLL_DIR no auto-detected Folder containing Microsoft.AnalysisServices.AdomdClient.dll

Authentication is always Windows Integrated Security (Integrated Security=SSPI) — no credentials in config.

MCP registration (Claude Code / Claude Desktop)

{
  "mcpServers": {
    "ssas-cube": {
      "command": "python",
      "args": ["-m", "ssas_mcp.server"],
      "env": {
        "SSAS_SERVER": "my-ssas-host",
        "SSAS_CATALOG": "My_Cube_Db",
        "SSAS_DEFAULT_CUBE": "Sales"
      }
    }
  }
}

One registered server targets one SSAS database. To use both a multidimensional and a tabular instance, register the server twice with different SSAS_SERVER/SSAS_CATALOG env blocks — the query language is chosen per call (execute_query accepts MDX or DAX, and the engine itself only accepts the language matching the model type).

Example usage

Multidimensional (MDX):

SELECT NON EMPTY { [Measures].[Tickets Issued] } ON COLUMNS,
       NON EMPTY { [Sales Item Fact Ordered Date].[Calendar].[Year Name].MEMBERS } ON ROWS
FROM [Sales]

Tabular (DAX):

EVALUATE SUMMARIZECOLUMNS('Date'[Year], "Total Sales", [Total Sales])

DMV introspection:

SELECT [MEASURE_NAME], [MEASUREGROUP_NAME] FROM $SYSTEM.MDSCHEMA_MEASURES WHERE [CUBE_NAME] = 'Sales'
SELECT * FROM $SYSTEM.TMSCHEMA_MEASURES  -- tabular models

Result format

Tools return JSON:

{
  "columns": ["[Sales Item Fact Ordered Date].[Calendar].[Year Name].[MEMBER_CAPTION]", "[Measures].[Tickets Issued]"],
  "rows": [["2025", 123456], ["2026", 98765]],
  "row_count": 2,
  "truncated": false
}

Cells can be null and columns can be mixed-type — MDX cellsets are flattened defensively (nulls preserved, Decimal → float, DateTime → ISO string).

Tests

pip install pytest
pytest tests/

License

MIT

from github.com/dbdave/mssas_mcp_server

Установить SSAS Server в Claude Desktop, Claude Code, Cursor

Рекомендуется · одна команда, все IDE
unyly install ssas-mcp-server

Ставит в Claude Desktop, Claude Code, Cursor и VS Code — сам разбирается с npx, uvx и сборкой из исходников.

Впервые? Поставь CLI: curl -fsSL https://unyly.org/install | sh

Или настроить вручную

Выполни в терминале:

claude mcp add ssas-mcp-server -- uvx --from git+https://github.com/dbdave/mssas_mcp_server mssas-mcp-server

FAQ

SSAS Server MCP бесплатный?

Да, SSAS Server MCP бесплатный — установка в пару кликов через Unyly без оплаты.

Нужен ли API-ключ для SSAS Server?

Нет, SSAS Server работает без API-ключей и переменных окружения.

SSAS Server — hosted или self-hosted?

Доступен hosted-вариант: Unyly запускает сервер в облаке, локальная установка не обязательна.

Как установить SSAS Server в Claude Desktop, Claude Code или Cursor?

Открой SSAS Server на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.

Похожие MCP

Compare SSAS Server with

Не уверен что выбрать?

Найди свой стек за 60 секунд

Автор?

Embed-бейдж для README

Похожее

Все в категории data