Fabric Ontology MCP Server
Click on "Install 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 installed
Maintenance
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