Skip to main content
Glama
tmdaidevs

Fabric Ontology MCP Server

by tmdaidevs

Fabric Ontology MCP Server

Production-ready MCP server for full CRUD control of Ontology items in Microsoft Fabric.

Prerequisites

  • Python ≥ 3.11

  • Azure CLI (az) installed and logged in (az login)

  • Access to a Microsoft Fabric workspace with Ontology items

Related MCP server: Microsoft Fabric MCP Server

Installation

cd "Ontology MCP Server"
pip install -e .

Usage

# Run via entry point
fabric-ontology-mcp

# Or directly
python -m src

VS Code / Copilot MCP config

{
  "servers": {
    "fabric-ontology": {
      "command": "python",
      "args": ["-m", "src"],
      "cwd": "/path/to/Ontology MCP Server"
    }
  }
}

Available Tools

Workspace Discovery

Tool

Description

list_workspaces

List all Fabric workspaces accessible to you

list_workspace_items

List items in a workspace (filter by type: Eventhouse, Lakehouse, etc.)

Ontology CRUD

Tool

Description

list_ontologies

List ontologies in a workspace

get_ontology

Get ontology metadata

create_ontology

Create a new ontology

update_ontology

Update display name / description

delete_ontology

Delete an ontology (soft or hard)

get_ontology_definition

Get full decoded definition (entities, relationships, bindings)

update_ontology_definition_raw

Replace entire definition from JSON

Entity Types

Tool

Description

list_entity_types

List all entity types in an ontology

get_entity_type

Get a single entity type with its bindings, documents, overviews, links

add_entity_type

Create a new entity type with properties

update_entity_type

Rename an entity type or change its display name property / ID parts

remove_entity_type

Delete an entity type (and its relationships)

Properties

Tool

Description

add_property

Add a property to an entity type

update_property

Rename a property or change its value type

remove_property

Remove a property from an entity type

Relationship Types

Tool

Description

list_relationship_types

List relationships in an ontology

get_relationship_type

Get a single relationship with its contextualizations

add_relationship_type

Create a relationship between entity types (validates both exist)

update_relationship_type

Rename a relationship type

remove_relationship_type

Delete a relationship type

Data Bindings

Tool

Description

list_data_bindings

List bindings for an entity type

add_data_binding

Bind an entity type to a Lakehouse or Eventhouse table

remove_data_binding

Remove a data binding

Tool

Description

add_document

Attach a document URL to an entity type

list_documents

List all documents attached to an entity type

remove_document

Remove a document by URL

get_overview

Get the current overview configuration

set_overview

Configure overview widgets for an entity type

get_resource_links

Get the current resource links

set_resource_links

Link Power BI reports to an entity type

Contextualizations

Tool

Description

list_contextualizations

List contextualizations for a relationship type

add_contextualization

Define how a relationship is materialized from data

remove_contextualization

Remove a contextualization

KQL / Eventhouse Discovery

Tool

Description

get_kql_database_details

Get cluster URI, database name, and parent Eventhouse

list_kql_tables

List tables in a KQL database

get_kql_table_schema

Get column names and types for a table

Lakehouse & Workspace Data Discovery

Tool

Description

discover_lakehouse_tables

List all tables in a Lakehouse (via OneLake Table API)

get_lakehouse_table_schema

Get columns with types and Ontology valueType mapping

discover_workspace_data

Full scan — discover all Lakehouses + Eventhouses, all tables and schemas

Ontology planning workflow: Call discover_workspace_data to scan a workspace, then use the returned schemas to design entity types, properties, relationships, and data bindings using the CRUD tools above.

Data Profiling

Tool

Description

preview_kql_table

Preview first N rows from an Eventhouse table

profile_kql_table

Row count, distinct counts, null rates, sample values, min/max per column

preview_lakehouse_table

Preview first N rows from a Lakehouse table (Spark SQL via Livy)

profile_lakehouse_table

Row count, distinct counts, null rates, sample values, min/max per column

Note: First Lakehouse profiling call takes ~30-60s for Spark session startup. Subsequent queries reuse the session and are fast.

Project Structure

src/
├── __init__.py
├── __main__.py          # python -m src entry point
├── auth.py              # Azure CLI token acquisition (per-resource caching)
├── definition_utils.py  # Base64 encode/decode for ontology definition parts
├── fabric_client.py     # Async Fabric REST API client
├── kusto_client.py      # Async Kusto REST query client
└── server.py            # MCP server with all tools

Input Validation

All tools validate inputs before calling the Fabric API:

  • Names must match ^[a-zA-Z][a-zA-Z0-9_-]{0,127}$ (entity types, properties, relationships)

  • Value types must be one of: String, Boolean, DateTime, Object, BigInt, Double

  • JSON parameters return clear error messages on parse failure

  • Entity existence is checked when creating relationships (both source and target must exist)

Authentication

Uses Azure CLI tokens. Make sure you're logged in:

az login

Tokens are cached per resource (Fabric API and Kusto clusters are separate audiences) and automatically refreshed when near expiry.

License

MIT

F
license - not found
-
quality - not tested
D
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/tmdaidevs/ontology-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server