If you work with SSAS, you know the drill. The data is there, the cubes are well-modeled, but actually getting answers out of them requires someone who knows DAX or MDX. For most organizations that means a small group of people becomes the bottleneck for every ad-hoc question.
We got tired of that pattern, so we built an MCP server that gives AI agents direct access to SSAS. It connects through ADOMD.NET, supports both DAX and MDX, and works with any MCP client (Claude Desktop, GitHub Copilot, Cursor, Claude Code, whatever you prefer).
It's open source, MIT licensed, and you can install it with pip.
Repo: NexusAI-Solutions/ssas-mcp-server
What it does
Six tools, all read-only:
| Tool | What it does |
|---|---|
execute_query |
Run DAX or MDX queries |
list_catalogs |
List databases on the instance |
list_tables |
Tables, dimensions, measure groups |
list_columns |
Columns for a specific table |
list_measures |
All measures with their DAX expressions |
describe_model |
Model overview with tables, measures, metadata |
The AI agent uses these tools to figure out the model structure, write the appropriate query, run it, and return the results. You ask a question in plain English, it handles the rest.
Setup
pip install ssas-mcp-server
Environment variables:
set SSAS_SERVER=YOUR_SERVER\INSTANCE
set SSAS_DATABASE=Your Cube Name
Claude Desktop
claude_desktop_config.json:
{
"mcpServers": {
"ssas": {
"command": "python",
"args": ["-m", "ssas_mcp_server"],
"env": {
"SSAS_SERVER": "YOUR_SERVER\\INSTANCE",
"SSAS_DATABASE": "Your Cube Name"
}
}
}
}
VS Code / GitHub Copilot
.vscode/mcp.json:
{
"servers": {
"ssas": {
"command": "python",
"args": ["-m", "ssas_mcp_server"],
"env": {
"SSAS_SERVER": "YOUR_SERVER\\INSTANCE",
"SSAS_DATABASE": "Your Cube Name"
}
}
}
}
Claude Code
claude mcp add ssas -- python -m ssas_mcp_server
Why not just use CData or the Power BI MCP Server?
Fair question. Here's the short version:
| SSAS MCP Server | CData SSAS MCP | Power BI MCP Server | |
|---|---|---|---|
| Data source | SSAS (Tabular + Multidimensional) | SSAS (via JDBC) | Power BI semantic models only |
| Queries | Native DAX + MDX | SQL (translated) | DAX (via Copilot) |
| License | MIT (free) | Commercial (paid) | Free |
| Runtime | Python | Java | Cloud / VS Code |
| Setup | pip install |
JDBC driver + config | Microsoft ecosystem |
CData requires a paid license and runs on Java. It translates queries to SQL instead of using native DAX/MDX, which limits what you can do analytically.
Microsoft's Power BI MCP Server only works with Power BI semantic models. If your cubes run on standalone SSAS or Azure Analysis Services, it doesn't apply.
This server fills the gap: lightweight, open source, direct SSAS connection, native query languages.
Security
Read-only by design. No network endpoint exposed (runs via stdio). Authentication goes through your existing SSAS instance security, so whatever permissions the Windows user has, the AI agent inherits. Nothing more.
Where it's useful
The most common scenario we see: someone in a meeting needs a number that doesn't exist in any pre-built report. Normally that becomes a request that takes a day or two. With this, the analyst opens Claude and asks the question directly. Answer comes back in seconds, and you can see the actual DAX query it ran if you want to verify.
Also useful for onboarding. New people on the team can ask "describe the data model" and get a structured overview instead of digging through documentation that's probably outdated anyway.
Limitations
Windows only, because ADOMD.NET requires .NET Framework. We're looking into cross-platform options but nothing concrete yet.
Links
- GitHub: NexusAI-Solutions/ssas-mcp-server
- PyPI: ssas-mcp-server
- Full writeup: nexus-ai.nl
If you run into issues or have feature requests, open an issue on GitHub. And if you need help integrating MCP servers into your BI stack, we do that too.
Top comments (0)