Skip to main content

MCP server for querying SQL Server Analysis Services (SSAS) via DAX and MDX

Project description

SSAS MCP Server

A Model Context Protocol (MCP) server that connects AI agents to SQL Server Analysis Services (SSAS). It lets tools like GitHub Copilot, Claude (via Codex or Claude Code), and other MCP clients run DAX and MDX queries, explore models, and list measures, all through natural language.

Windows only
SSAS uses the ADOMD.NET client library, which requires .NET Framework on Windows.

Features

Tool Description
execute_query Run any DAX (EVALUATE ...) or MDX (SELECT ...) query
list_catalogs List all databases on the SSAS instance
list_tables List tables, dimensions, and measure groups
list_columns List columns for a specific table
list_measures List all visible measures with their DAX expressions
describe_model High-level summary: tables, measures, metadata

Prerequisites

  1. Python 3.10+

  2. ADOMD.NET client library
    The DLL Microsoft.AnalysisServices.AdomdClient.dll must be present on the machine. It ships with any of these:

    The server auto-detects common install locations. If your DLL is elsewhere, set the ADOMD_DLL_PATH environment variable to the folder containing it.

Installation

pip install ssas-mcp-server

After installation, the server can be started with:

ssas-mcp-server

Or install from source:

git clone https://github.com/NexusAI-Solutions/ssas-mcp-server.git
cd ssas-mcp-server
pip install .

Configuration

The server is configured through environment variables:

Variable Required Description
SSAS_SERVER Yes SSAS instance name (e.g. SERVER\INSTANCE)
SSAS_DATABASE Yes Database / catalog name
SSAS_PROVIDER No OLAP provider (default: MSOLAP)
SSAS_CONNECTION_STRING No Full ADOMD connection string (overrides server/database/provider)
ADOMD_DLL_PATH No Explicit path to the folder containing the ADOMD.NET DLL

Usage

Run directly

set SSAS_SERVER=SERVER\INSTANCE
set SSAS_DATABASE=My Cube
ssas-mcp-server

The server starts in stdio mode and waits for an MCP client to connect.

You can also run it as a Python module:

python -m ssas_mcp_server

VS Code / Codex

Add this to your .vscode/mcp.json:

{
  "servers": {
    "ssas": {
      "command": "ssas-mcp-server",
      "env": {
        "SSAS_SERVER": "SERVER\\INSTANCE",
        "SSAS_DATABASE": "My Cube"
      }
    }
  }
}

Claude Code

claude mcp add ssas -- ssas-mcp-server

Then set the environment variables in your shell before starting Claude Code, or pass them inline.

Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "ssas": {
      "command": "ssas-mcp-server",
      "env": {
        "SSAS_SERVER": "SERVER\\INSTANCE",
        "SSAS_DATABASE": "My Cube"
      }
    }
  }
}

Example queries

Once connected, you can ask your AI assistant things like:

  • "List all tables in the SSAS model"
  • "Show me the measures and their DAX expressions"
  • "Run this DAX query: EVALUATE TOPN(10, 'Sales', [Revenue], DESC)"
  • "Describe the data model"
  • "What columns does the Customers table have?"

Troubleshooting

Could not load file or assembly 'Microsoft.AnalysisServices.AdomdClient'

The ADOMD.NET DLL was not found. Solutions:

  1. Install SSMS, Power BI Desktop, or the standalone AMO client libraries.
  2. Set ADOMD_DLL_PATH to the folder containing Microsoft.AnalysisServices.AdomdClient.dll.

To find the DLL on your system:

where /r "C:\Program Files" Microsoft.AnalysisServices.AdomdClient.dll

Server is not found or not accessible

  • Verify the server name matches exactly what works in SSMS or Power BI.
  • For named instances, use the SERVER\INSTANCE format.
  • Make sure the SQL Server Browser service is running if you are connecting by instance name.

License

MIT

Publishing to PyPI

Install the packaging tools:

python -m pip install --upgrade build twine

Build and validate the distribution files:

python -m build
python -m twine check dist/*

Upload to TestPyPI first:

python -m twine upload --repository testpypi dist/*

If the TestPyPI package installs and runs correctly, upload to PyPI:

python -m twine upload dist/*

Automatic publishing from GitHub

This repository includes a GitHub Actions workflow that builds and publishes the package to PyPI when a GitHub Release is published.

To enable it, create a PyPI Trusted Publisher for this project:

  • PyPI project name: ssas-mcp-server
  • Owner: NexusAI-Solutions
  • Repository name: ssas-mcp-server
  • Workflow name: publish.yml
  • Environment name: pypi

Then publish a GitHub Release after bumping the version in pyproject.toml. PyPI does not allow replacing an existing version, so every release must use a new version number.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ssas_mcp_server-0.1.1.tar.gz (6.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ssas_mcp_server-0.1.1-py3-none-any.whl (8.5 kB view details)

Uploaded Python 3

File details

Details for the file ssas_mcp_server-0.1.1.tar.gz.

File metadata

  • Download URL: ssas_mcp_server-0.1.1.tar.gz
  • Upload date:
  • Size: 6.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ssas_mcp_server-0.1.1.tar.gz
Algorithm Hash digest
SHA256 7d249c5abff1f02ed4039da989b81dce56d542a1c320df167914f0ba529b0b05
MD5 afc7494e4e9f7d6ed6c4b92f2ad91fa9
BLAKE2b-256 0543d6e55f3dd00f2b8983ae2cbcd7e3e9044415420f7cb91e02065e4098f81c

See more details on using hashes here.

Provenance

The following attestation bundles were made for ssas_mcp_server-0.1.1.tar.gz:

Publisher: publish.yml on NexusAI-Solutions/ssas-mcp-server

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ssas_mcp_server-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for ssas_mcp_server-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d8f8f05ee7db500d306efd580a1528b52a9ebeb5d903d819af637bf4d5385f70
MD5 02e8ca0cf740aca159154483805a1213
BLAKE2b-256 973f95004c81f96e6f6a1decbc978f2b14aecca827c79216521d829e83f61712

See more details on using hashes here.

Provenance

The following attestation bundles were made for ssas_mcp_server-0.1.1-py3-none-any.whl:

Publisher: publish.yml on NexusAI-Solutions/ssas-mcp-server

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page