Fabric Ontology MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Fabric Ontology MCP ServerDiscover workspace data for my Sales workspace"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 srcVS 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 all Fabric workspaces accessible to you |
| List items in a workspace (filter by type: Eventhouse, Lakehouse, etc.) |
Ontology CRUD
Tool | Description |
| List ontologies in a workspace |
| Get ontology metadata |
| Create a new ontology |
| Update display name / description |
| Delete an ontology (soft or hard) |
| Get full decoded definition (entities, relationships, bindings) |
| Replace entire definition from JSON |
Entity Types
Tool | Description |
| List all entity types in an ontology |
| Get a single entity type with its bindings, documents, overviews, links |
| Create a new entity type with properties |
| Rename an entity type or change its display name property / ID parts |
| Delete an entity type (and its relationships) |
Properties
Tool | Description |
| Add a property to an entity type |
| Rename a property or change its value type |
| Remove a property from an entity type |
Relationship Types
Tool | Description |
| List relationships in an ontology |
| Get a single relationship with its contextualizations |
| Create a relationship between entity types (validates both exist) |
| Rename a relationship type |
| Delete a relationship type |
Data Bindings
Tool | Description |
| List bindings for an entity type |
| Bind an entity type to a Lakehouse or Eventhouse table |
| Remove a data binding |
Documents, Overviews & Resource Links
Tool | Description |
| Attach a document URL to an entity type |
| List all documents attached to an entity type |
| Remove a document by URL |
| Get the current overview configuration |
| Configure overview widgets for an entity type |
| Get the current resource links |
| Link Power BI reports to an entity type |
Contextualizations
Tool | Description |
| List contextualizations for a relationship type |
| Define how a relationship is materialized from data |
| Remove a contextualization |
KQL / Eventhouse Discovery
Tool | Description |
| Get cluster URI, database name, and parent Eventhouse |
| List tables in a KQL database |
| Get column names and types for a table |
Lakehouse & Workspace Data Discovery
Tool | Description |
| List all tables in a Lakehouse (via OneLake Table API) |
| Get columns with types and Ontology valueType mapping |
| Full scan — discover all Lakehouses + Eventhouses, all tables and schemas |
Ontology planning workflow: Call
discover_workspace_datato 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 first N rows from an Eventhouse table |
| Row count, distinct counts, null rates, sample values, min/max per column |
| Preview first N rows from a Lakehouse table (Spark SQL via Livy) |
| 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 toolsInput 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,DoubleJSON 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 loginTokens are cached per resource (Fabric API and Kusto clusters are separate audiences) and automatically refreshed when near expiry.
License
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
List datasets, schemas, run APL queries, and use prompts for exploration, anomalies, and monitoring.
- BasedashOAuthcom.basedash
Governed BI MCP. Ask questions of live company data and list workspace sources via OAuth.
Your Databricks Lakehouse in natural language: run SQL on your SQL warehouses, track long-running qu
Data-ontology maps of your business systems, served to AI agents over MCP.
Related MCP Servers
- AlicenseBqualityCmaintenanceEnables AI agents to interact with Microsoft Fabric by exposing tools for managing workspaces, notebooks, SQL queries, pipelines, and Livy Spark sessions. It provides a comprehensive set of operations for data engineering and analytics tasks using standard Azure authentication.374MIT
- AlicenseBqualityDmaintenanceEnables AI assistants to interact with Microsoft Fabric and Power BI services through the Model Context Protocol. Users can manage workspaces, execute DAX queries, refresh datasets, and create Fabric notebooks using natural language.6112MIT
- AlicenseBqualityAmaintenanceEnables AI agents to interact with Microsoft Fabric Real-Time Intelligence services, allowing for seamless data querying, analysis, and streaming capabilities.39130MIT
- AlicenseNot gradedqualityAmaintenanceEnables interaction with Microsoft Dataverse and Dynamics 365 data through natural language, including CRUD operations, metadata exploration, and saved views.MIT