Microsoft Fabric 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., "@Microsoft Fabric MCP Server List my Fabric workspaces"
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.
Microsoft Fabric MCP Server
A Python MCP server that lets you manage Microsoft Fabric through natural language in Claude Code or Claude Desktop. 77+ tools covering workspaces, lakehouses, warehouses, SQL, DAX, semantic models, notebooks, pipelines, OneLake, and Microsoft Graph.
Inspired by: https://github.com/Augustab/microsoft_fabric_mcp/tree/main
Quick Start
git clone https://github.com/Jasuni69/ms-core-mcp.git
cd ms-core-mcp
az login
python setup.pyThe setup script checks prerequisites, installs dependencies, and configures your Claude client. It safely merges into existing config files without affecting other MCP servers.
Then restart VS Code or Claude Desktop and ask: "List my Fabric workspaces"
Related MCP server: Fabric-Analytics-MCP
Prerequisites
Python 3.12+ - Download
uv package manager - Install
Azure CLI - Install
ODBC Driver 18 (optional, for SQL tools) - Download
Access to a Microsoft Fabric workspace with Contributor or Admin role
How It Works
You (natural language) --> Claude --> MCP Server --> Fabric REST API --> Your Fabric ResourcesTwo transport modes:
STDIO (default) -
fabric_mcp_stdio.py- used by Claude Code and Claude DesktopHTTP -
fabric_mcp.py --port 8081- for custom integrations
Tools (77+)
Workspace & Resource Management (9 tools)
list_workspaces, create_workspace, set_workspace, list_lakehouses, create_lakehouse, set_lakehouse, list_warehouses, create_warehouse, set_warehouse
Delta Table Operations (10 tools)
list_tables, set_table, get_lakehouse_table_schema, get_all_lakehouse_schemas, table_preview, table_schema, describe_history, optimize_delta, vacuum_delta, load_data_from_url
SQL (4 tools)
sql_query, sql_explain, sql_export, get_sql_endpoint
Always pass
type("lakehouse" or "warehouse")SQL endpoints are read-only - no DDL/DML
New delta tables take 5-10 min to appear in SQL endpoint
Requires ODBC Driver 18
Semantic Models & DAX (9 tools)
list_semantic_models, get_semantic_model, get_model_schema, list_measures, get_measure, create_measure, update_measure, delete_measure, analyze_dax_query
Reports (4 tools)
list_reports, get_report, report_export, report_params_list
Power BI (2 tools)
semantic_model_refresh, dax_query
Notebooks (16 tools)
list_notebooks, create_notebook, get_notebook_content, update_notebook_cell, create_pyspark_notebook, create_fabric_notebook, generate_pyspark_code, generate_fabric_code, validate_pyspark_code, validate_fabric_code, analyze_notebook_performance, run_notebook_job, get_run_status, cancel_notebook_job, install_requirements, install_wheel, cluster_info
Pipelines & Scheduling (8 tools)
pipeline_run, pipeline_status, pipeline_logs, create_data_pipeline, get_pipeline_definition, dataflow_refresh, schedule_list, schedule_set
OneLake File Operations (7 tools)
onelake_ls, onelake_read, onelake_write, onelake_rm, onelake_create_shortcut, onelake_list_shortcuts, onelake_delete_shortcut
Items & Permissions (4 tools)
resolve_item, list_items, get_permissions, set_permissions
Microsoft Graph (8 tools)
graph_user, graph_mail, graph_teams_message, graph_teams_message_alias, graph_drive, save_teams_channel_alias, list_teams_channel_aliases, delete_teams_channel_alias
Session (1 tool)
clear_context
Example Usage
"List all my Fabric workspaces"
"Set workspace to Analytics-Prod"
"Show me all tables in the sales lakehouse"
"What are the top 10 customers by revenue?"
"Create a DAX measure for total sales"
"Generate a PySpark ETL notebook"
"Run the daily pipeline and check status"Manual Setup (without setup.py)
Claude Code (VS Code)
Create .mcp.json in the project root:
{
"mcpServers": {
"ms-fabric-core-tools-mcp": {
"command": "uv",
"args": ["--directory", "/full/path/to/ms-core-mcp", "run", "fabric_mcp_stdio.py"]
}
}
}Add to ~/.claude/settings.json:
{
"enableAllProjectMcpServers": true
}Claude Desktop
Add to your claude_desktop_config.json:
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"ms-fabric-core-tools-mcp": {
"command": "/full/path/to/uv",
"args": ["--directory", "/full/path/to/ms-core-mcp", "run", "fabric_mcp_stdio.py"]
}
}
}Note: Claude Desktop needs the full path to uv since it may not inherit your shell PATH.
Project Structure
ms-core-mcp/
fabric_mcp.py # HTTP server entry point
fabric_mcp_stdio.py # STDIO entry point (Claude Code / Desktop)
setup.py # Automated setup script
pyproject.toml # Dependencies
CLAUDE.md # AI assistant instructions
tools/ # MCP tool definitions
helpers/
clients/ # Fabric API, SQL, OneLake clients
formatters/ # Output formatters
utils/ # Auth, context, validators
tests/ # Tests
docs/ # DocumentationKnown Limitations
SQL endpoints are read-only - use PySpark notebooks for writes
SQL sync delay - new tables take 5-10 min to appear
API rate limits - 50 requests/min/user (Fabric), 120 queries/min/user (Power BI)
Notebook lakehouse attachment - must be done manually in Fabric UI
ODBC Driver 18 required for sql_query, table_preview, sql_explain tools
Report creation not supported - can list, export, view params only
Troubleshooting
"Command not found: uv" - Install uv, then restart terminal
"Not authenticated" - Run az login, then verify with:
az account get-access-token --resource https://api.fabric.microsoft.com/"Database not found" on SQL queries - SQL endpoint may not be provisioned yet. Wait a few minutes or check the lakehouse has tables in the Fabric portal.
MCP tools not appearing in Claude Desktop - Use full path to uv in config. Check Task Manager to fully close and restart Claude Desktop.
Only some tools showing - Check for import errors by running:
uv run python -c "from tools import *; from helpers.utils.context import mcp; print(f'Tools: {len(mcp._tool_manager._tools)}')"Testing
uv run pytest tests/License
MIT
Available Tools
83 toolsanalyze_dax_queryA
Analyze a DAX query for performance insights and execution plan.
This tool executes a DAX query and returns performance metrics including
execution time, scan counts, and optionally the query execution plan.
Args:
dax_query: DAX query to analyze
workspace: Name or ID of the workspace (optional)
model: Name or ID of the semantic model (optional)
include_execution_plan: Whether to include detailed execution plan (default: True)
ctx: Context object containing client information
Returns:
A dictionary containing query results, execution metrics, and optionally the execution plan.
Inputs: dax_query (required), model, workspace, include_execution_plan.
analyze_notebook_performanceB
Analyze a notebook's code for performance optimization opportunities in Fabric.
Args:
workspace: Name or ID of the workspace
notebook_id: ID or name of the notebook
ctx: Context object containing client information
Returns:
A string containing performance analysis and optimization recommendations.
Inputs: workspace (required), notebook_id (required).
cancel_notebook_jobB
Cancel a running notebook job instance.
Inputs: job_id, notebook, workspace.
clear_contextA
Clear the current session context.
Returns:
A string confirming the context has been cleared.
Inputs: no named parameters.
cluster_infoC
Retrieve Spark cluster information for the workspace.
Inputs: workspace.
create_data_pipelineA
Create a Data Pipeline in a Fabric workspace with custom activities and dependencies.
Perfect for orchestrating medallion architecture workflows (Bronze → Silver → Gold).
Args:
pipeline_name: Name for the pipeline
pipeline_definition: Pipeline JSON definition with activities and dependencies
workspace: Workspace name or ID (optional, uses context if not provided)
description: Optional description for the pipeline
ctx: Context object
Returns:
Dictionary with pipeline details including ID and status
Example - Bronze to Silver to Gold cascade:
pipeline_definition = {
"properties": {
"activities": [
{
"name": "Bronze_Ingestion",
"type": "Notebook",
"typeProperties": {
"notebook": {"name": "bronze_ingest_notebook"}
},
"dependsOn": []
},
{
"name": "Silver_Transform",
"type": "Notebook",
"typeProperties": {
"notebook": {"name": "silver_transform_notebook"}
},
"dependsOn": [
{
"activity": "Bronze_Ingestion",
"dependencyConditions": ["Succeeded"]
}
]
},
{
"name": "Gold_Transform",
"type": "Notebook",
"typeProperties": {
"notebook": {"name": "gold_transform_notebook"}
},
"dependsOn": [
{
"activity": "Silver_Transform",
"dependencyConditions": ["Succeeded"]
}
]
}
]
}
}
create_data_pipeline(
pipeline_name="Medallion_ETL_Pipeline",
pipeline_definition=pipeline_definition,
workspace="PROD-Analytics",
description="Orchestrates Bronze → Silver → Gold transformations"
)
Inputs: pipeline_name (required), pipeline_definition (required), workspace, description.
create_fabric_notebookB
Create a new notebook optimized for Microsoft Fabric using advanced templates.
Args:
workspace: Name or ID of the workspace
notebook_name: Name of the new notebook
template_type: Type of Fabric template ('fabric_integration', 'streaming')
ctx: Context object containing client information
Returns:
A string containing the ID of the created notebook or an error message.
Inputs: workspace (required), notebook_name (required), template_type.
create_lakehouseC
Create a new lakehouse in a Fabric workspace.
Args:
name: Name of the lakehouse
workspace: Name or ID of the workspace (optional)
description: Description of the lakehouse (optional)
ctx: Context object containing client information
Returns:
A string confirming the lakehouse has been created or an error message.
Inputs: name (required), folder_id, workspace, description.
create_measureA
Create a new DAX measure in a semantic model.
Args:
measure_name: Name of the measure to create
dax_expression: DAX formula for the measure
table_name: Name of the table to add the measure to
workspace: Name or ID of the workspace (optional)
model: Name or ID of the semantic model (optional)
format_string: Display format string (e.g., "#,0.00", "0.0%") (optional)
description: Description of the measure (optional)
is_hidden: Whether to hide the measure from client tools (default: False)
ctx: Context object containing client information
Returns:
A dictionary containing success status and the created measure details.
Inputs: table_name (required), measure_name (required), dax_expression (required), model, +4 more.
create_notebookA
Create a new notebook in a Fabric workspace.
Args:
workspace: Name or ID of the workspace
notebook_name: Name of the new notebook
content: Content of the notebook (in JSON format). If not provided, creates a basic Hello Fabric notebook.
ctx: Context object containing client information
Returns:
A string containing the ID of the created notebook or an error message.
Inputs: workspace (required), content, notebook_name.
create_pyspark_notebookB
Create a new PySpark notebook from a template in a Fabric workspace.
Args:
workspace: Name or ID of the workspace
notebook_name: Name of the new notebook
template_type: Type of PySpark template ('basic', 'etl', 'analytics', 'ml')
ctx: Context object containing client information
Returns:
A string containing the ID of the created notebook or an error message.
Inputs: workspace (required), notebook_name (required), template_type.
create_warehouseB
Create a new warehouse in a Fabric workspace.
Args:
name: Name of the warehouse
workspace: Name or ID of the workspace (optional)
description: Description of the warehouse (optional)
ctx: Context object containing client information
Returns:
A string confirming the warehouse has been created or an error message.
Inputs: name (required), folder_id, workspace, description.
create_workspaceA
Create a new Fabric workspace.
Args:
display_name: Workspace display name
capacity_id: Optional capacity ID
description: Optional description
domain_id: Optional domain identifier
ctx: Context object containing client information
Returns:
A string confirming creation or an error message.
Inputs: display_name (required), domain_id, capacity_id, description.
dataflow_refreshD
Inputs: dataflow, workspace.
dax_queryD
Inputs: query (required), dataset (required), workspace.
delete_measureB
Delete a DAX measure from a semantic model.
Args:
measure_name: Name of the measure to delete
workspace: Name or ID of the workspace (optional)
model: Name or ID of the semantic model (optional)
ctx: Context object containing client information
Returns:
A dictionary containing success status and deletion details.
Inputs: measure_name (required), model, workspace.
delete_teams_channel_aliasB
Delete a saved Teams channel alias.
Inputs: alias (required).
describe_historyD
Inputs: limit, table, lakehouse, workspace.
generate_fabric_codeA
Generate Fabric-specific PySpark code for lakehouse operations.
Args:
operation: Type of operation ('read_lakehouse', 'write_lakehouse', 'merge_delta', 'performance_monitor')
lakehouse_name: Name of the lakehouse
table_name: Name of the source table
target_table: Name of the target table (for write/merge operations)
ctx: Context object containing client information
Returns:
A string containing the generated Fabric-specific PySpark code.
Inputs: operation (required), table_name, target_table, lakehouse_name.
generate_pyspark_codeB
Generate PySpark code for common operations.
Args:
operation: Type of operation ('read_table', 'write_table', 'transform', 'join', 'aggregate')
source_table: Source table name (format: lakehouse.table_name)
target_table: Target table name (format: lakehouse.table_name)
columns: Comma-separated list of columns
filter_condition: Filter condition for data
ctx: Context object containing client information
Returns:
A string containing the generated PySpark code or an error message.
Inputs: operation (required), columns, source_table, target_table, +1 more.
get_all_lakehouse_schemasD
Inputs: lakehouse (required), workspace.
get_lakehouse_table_schemaD
Inputs: lakehouse (required), workspace (required), table_name.
get_measureA
Get a specific DAX measure definition by name.
Args:
measure_name: Name of the measure to retrieve
workspace: Name or ID of the workspace (optional)
model: Name or ID of the semantic model (optional)
ctx: Context object containing client information
Returns:
The measure definition including DAX expression.
Inputs: measure_name (required), model, workspace.
get_model_schemaB
Get the complete schema of a semantic model including tables, columns, measures, and relationships.
This retrieves the model definition in TMSL format and parses the structure.
Args:
workspace: Name or ID of the workspace (optional)
model: Name or ID of the semantic model (optional)
ctx: Context object containing client information
Returns:
A dictionary containing the model schema with tables, columns, measures, and relationships.
Inputs: model, workspace.
get_notebook_contentA
Get the content of a specific notebook in a Fabric workspace.
Args:
workspace: Name or ID of the workspace
notebook_id: ID or name of the notebook
ctx: Context object containing client information
Returns:
A string containing the notebook content in JSON format or an error message.
Inputs: workspace (required), notebook_id (required).
get_permissionsA
Retrieve the role assignments for a workspace.
Note: Fabric REST API does not support item-level permissions.
This returns workspace-level role assignments instead.
Inputs: item_id (required), workspace (required).
get_pipeline_definitionA
Get the definition of an existing Data Pipeline including activities and dependencies.
Args:
pipeline: Pipeline name or ID
workspace: Workspace name or ID (optional, uses context if not provided)
ctx: Context object
Returns:
Dictionary with pipeline definition including decoded activities
Example:
get_pipeline_definition(
pipeline="Medallion_ETL_Pipeline",
workspace="PROD-Analytics"
)
Inputs: pipeline (required), workspace.
get_reportC
Get a specific report by ID.
Args:
workspace: Name or ID of the workspace (optional)
report_id: ID of the report (optional)
ctx: Context object containing client information
Returns:
A string containing the report details or an error message.
Inputs: report_id, workspace.
get_run_statusC
Poll a notebook job run until completion.
Inputs: job_id, notebook, workspace.
get_semantic_modelA
Get a specific semantic model by ID.
Args:
workspace: Name or ID of the workspace (optional)
model_id: ID of the semantic model (optional)
ctx: Context object containing client information
Returns:
A string containing the details of the semantic model or an error message.
Inputs: model_id, workspace.
get_sql_endpointB
Retrieve the SQL endpoint for a specified lakehouse or warehouse.
Args:
workspace: Name or ID of the workspace (optional).
lakehouse: Name or ID of the lakehouse (optional).
warehouse: Name or ID of the warehouse (optional).
type: Type of resource ('lakehouse' or 'warehouse'). If not provided, it will be inferred.
ctx: Context object containing client information.
Returns:
A string containing the resource type, name/ID, and its SQL endpoint.
Inputs: type, lakehouse, warehouse, workspace.
graph_driveA
List files in a OneDrive or SharePoint drive via Microsoft Graph.
Inputs: drive_id (required), path.
graph_mailA
Send mail via Microsoft Graph on behalf of the current identity.
Inputs: to (required), body (required), subject (required).
graph_teams_messageB
Post a message to a Teams channel via Microsoft Graph.
Args:
team_id: The target Microsoft Teams team identifier.
channel_id: The channel identifier within the team.
text: The message body to send.
content_type: Graph contentType, defaults to "html". Can be "html", "text", "markdown".
ctx: FastMCP context.
Inputs: text (required), team_id (required), channel_id (required), content_type.
graph_teams_message_aliasA
Post a message to a Teams channel using a saved alias.
Resolves the alias into `(team_id, channel_id)` and forwards to `graph_teams_message`.
Inputs: text (required), alias (required), content_type.
graph_userA
Query Azure AD user profile details via Microsoft Graph.
Inputs: email (required).
install_requirementsC
Install Python requirements for the workspace Spark environment.
Inputs: workspace, requirements_txt.
install_wheelC
Install a wheel package into the workspace Spark environment.
Inputs: wheel_url, workspace.
list_itemsC
List workspace items, optionally filtered by type or search term.
Inputs: top, skip, type, search, +1 more.
list_lakehousesA
List all lakehouses in a Fabric workspace.
Args:
workspace: Name or ID of the workspace (optional)
ctx: Context object containing client information
Returns:
A string containing the list of lakehouses or an error message.
Inputs: workspace.
list_measuresB
List all DAX measures in a semantic model.
Args:
workspace: Name or ID of the workspace (optional)
model: Name or ID of the semantic model (optional)
ctx: Context object containing client information
Returns:
A list of measures with their definitions.
Inputs: model, workspace.
list_notebooksA
List all notebooks in a Fabric workspace.
Args:
workspace: Name or ID of the workspace (optional)
ctx: Context object containing client information
Returns:
A string containing the list of notebooks or an error message.
Inputs: workspace.
list_reportsC
List all reports in a Fabric workspace.
Args:
workspace: Name or ID of the workspace (optional)
ctx: Context object containing client information
Returns:
A string containing the list of reports or an error message.
Inputs: workspace.
list_semantic_modelsA
List all semantic models in a Fabric workspace.
Args:
workspace: Name or ID of the workspace (optional)
ctx: Context object containing client information
Returns:
A string containing the list of semantic models or an error message.
Inputs: workspace.
list_tablesD
Inputs: lakehouse, workspace.
list_teams_channel_aliasesA
List all saved Teams channel aliases.
Inputs: no named parameters.
list_warehousesA
List all warehouses in a Fabric workspace.
Args:
workspace: Name or ID of the workspace (optional)
ctx: Context object containing client information
Returns:
A string containing the list of warehouses or an error message.
Inputs: workspace.
list_workspacesA
List all available Fabric workspaces.
Args:
ctx: Context object containing client information
Returns:
A string containing the list of workspaces or an error message.
Inputs: no named parameters.
load_data_from_urlB
Load data from a URL into a delta table in a lakehouse via OneLake.
Args:
url: The URL to download data from (CSV or Parquet supported).
destination_table: The name of the table to load data into.
workspace: Name or ID of the workspace (optional).
lakehouse: Name or ID of the lakehouse (optional).
warehouse: Name or ID of the warehouse (optional, uses SQL for warehouses).
ctx: Context object containing client information.
Returns:
A string confirming the data load or an error message.
Inputs: url (required), destination_table (required), lakehouse, warehouse, +1 more.
onelake_create_shortcutA
Create a OneLake shortcut from one lakehouse to another.
This allows you to reference data from a target lakehouse without duplicating it.
Perfect for medallion architectures where Dev/Test/Prod read from a central Bronze layer.
Args:
lakehouse: Source lakehouse name or ID (where the shortcut will appear)
shortcut_name: Name for the shortcut
shortcut_path: Path in source where shortcut appears (e.g., "Tables", "Files/exports")
target_workspace: Target workspace name or ID (containing the data)
target_lakehouse: Target lakehouse name or ID (containing the data)
target_path: Path in target to link to (e.g., "Tables/customers_raw", "Files/bronze")
workspace: Source workspace name or ID (optional, uses context if not provided)
conflict_policy: Action when shortcut exists (Abort, GenerateUniqueName, CreateOrOverwrite, OverwriteOnly)
ctx: Context object
Returns:
Dictionary with shortcut details including name, path, and target
Example:
# Create shortcut from DEV silver lakehouse to central Bronze
onelake_create_shortcut(
workspace="DEV-Analytics",
lakehouse="silver_dev",
shortcut_name="bronze_customers",
shortcut_path="Tables",
target_workspace="RAW-Bronze-Central",
target_lakehouse="bronze_central",
target_path="Tables/customers_raw"
)
Inputs: lakehouse (required), target_path (required), shortcut_name (required), shortcut_path (required), +4 more.
onelake_delete_shortcutA
Delete a OneLake shortcut from a lakehouse.
Args:
lakehouse: Lakehouse name or ID containing the shortcut
shortcut_path: Path where shortcut exists (e.g., "Tables", "Files/exports")
shortcut_name: Name of the shortcut to delete
workspace: Workspace name or ID (optional, uses context if not provided)
ctx: Context object
Returns:
Dictionary with success status
Example:
onelake_delete_shortcut(
workspace="DEV-Analytics",
lakehouse="silver_dev",
shortcut_path="Tables",
shortcut_name="bronze_customers"
)
Inputs: lakehouse (required), shortcut_name (required), shortcut_path (required), workspace.
onelake_list_shortcutsA
List all OneLake shortcuts in a lakehouse.
Args:
lakehouse: Lakehouse name or ID
workspace: Workspace name or ID (optional, uses context if not provided)
ctx: Context object
Returns:
Dictionary with list of shortcuts
Example:
onelake_list_shortcuts(
workspace="DEV-Analytics",
lakehouse="silver_dev"
)
Inputs: lakehouse (required), workspace.
onelake_lsC
List files and folders within a OneLake lakehouse path.
Inputs: lakehouse (required), path, workspace.
onelake_readC
Read file contents from OneLake.
Inputs: path (required), lakehouse (required), workspace.
onelake_rmC
Delete a file or directory from OneLake.
Inputs: path (required), lakehouse (required), recursive, workspace.
onelake_writeC
Write text or base64 content to OneLake.
Inputs: path (required), content (required), lakehouse (required), encoding, +3 more.
optimize_deltaD
Inputs: table, lakehouse, workspace, zorder_by.
pipeline_logsD
Inputs: run_id, pipeline, workspace.
pipeline_runD
Inputs: pipeline, workspace, parameters.
pipeline_statusD
Inputs: run_id, pipeline, workspace.
report_exportD
Inputs: format, report, workspace.
report_params_listD
Inputs: report, workspace.
resolve_itemC
Resolve an item name or ID to its canonical ID and metadata.
Inputs: workspace (required), name_or_id (required), type.
run_notebook_jobC
Submit a notebook job run with optional parameters and configuration.
Inputs: notebook, workspace, parameters, configuration.
save_teams_channel_aliasB
Create or update a named alias for a Teams channel (team_id + channel_id).
Inputs: alias (required), team_id (required), channel_id (required).
schedule_listD
Inputs: item, job_type, workspace.
schedule_setD
Inputs: item, job_type, schedule, workspace.
semantic_model_refreshD
Inputs: model, workspace, refresh_type.
set_lakehouseA
Set the current lakehouse for the session.
Args:
lakehouse: Name or ID of the lakehouse
ctx: Context object containing client information
Returns:
A string confirming the lakehouse has been set.
Inputs: lakehouse (required).
set_permissionsA
Add a workspace role assignment (Admin, Member, Contributor, Viewer).
Note: Fabric REST API supports workspace-level roles, not item-level permissions.
Args:
workspace: Workspace name or ID
principal_id: User, group, or service principal ID (UUID)
principal_type: "User", "Group", or "ServicePrincipal"
role: "Admin", "Member", "Contributor", or "Viewer"
Inputs: workspace (required), principal_id (required), role, principal_type.
set_tableD
Inputs: table_name (required).
set_warehouseB
Set the current warehouse for the session.
Args:
warehouse: Name or ID of the warehouse
ctx: Context object containing client information
Returns:
A string confirming the warehouse has been set.
Inputs: warehouse (required).
set_workspaceB
Set the current workspace for the session.
Args:
workspace: Name or ID of the workspace
ctx: Context object containing client information
Returns:
A string confirming the workspace has been set.
Inputs: workspace (required).
sql_explainB
Retrieve an estimated execution plan for a query.
Inputs: query (required), type, lakehouse, warehouse, +1 more.
sql_exportC
Export query results to OneLake as CSV or Parquet.
Inputs: query (required), target_path (required), type, lakehouse, +5 more.
sql_queryC
Run a SQL query against a lakehouse or warehouse endpoint.
Inputs: query (required), type, max_rows, lakehouse, +2 more.
table_previewD
Inputs: limit, table, lakehouse, workspace.
table_schemaD
Inputs: table, lakehouse, workspace.
update_measureA
Update an existing DAX measure in a semantic model.
Args:
measure_name: Current name of the measure to update
workspace: Name or ID of the workspace (optional)
model: Name or ID of the semantic model (optional)
dax_expression: New DAX formula (optional)
format_string: New display format string (optional)
description: New description (optional)
is_hidden: New hidden status (optional)
new_name: New name for the measure (optional)
ctx: Context object containing client information
Returns:
A dictionary containing success status and the updated measure details.
Inputs: measure_name (required), model, new_name, is_hidden, +4 more.
update_notebook_cellA
Update a specific cell in a notebook.
Args:
workspace: Name or ID of the workspace
notebook_id: ID or name of the notebook
cell_index: Index of the cell to update (0-based)
cell_content: New content for the cell
cell_type: Type of cell ('code' or 'markdown')
ctx: Context object containing client information
Returns:
A string confirming the update or an error message.
Inputs: workspace (required), cell_index (required), notebook_id (required), cell_content (required), +1 more.
vacuum_deltaD
Inputs: table, lakehouse, workspace, retain_hours.
validate_fabric_codeC
Validate PySpark code for Microsoft Fabric compatibility and performance.
Args:
code: PySpark code to validate for Fabric compatibility
ctx: Context object containing client information
Returns:
A string containing detailed validation results and Fabric-specific recommendations.
Inputs: code (required).
validate_pyspark_codeB
Validate PySpark code for syntax and best practices.
Args:
code: PySpark code to validate
ctx: Context object containing client information
Returns:
A string containing validation results and suggestions.
Inputs: code (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 83 tools
Several tools have overlapping purposes, such as create_notebook, create_pyspark_notebook, and create_fabric_notebook, or generate_pyspark_code vs generate_fabric_code. dax_query and analyze_dax_query, as well as table_schema and get_lakehouse_table_schema, also blur boundaries. Multiple empty descriptions like vacuum_delta and set_table make selection even more ambiguous.
Most tools follow a readable snake_case pattern with a rough verb_noun structure like list_*, get_*, create_*, update_*, and delete_*. However, there are notable deviations such as onelake_ls, pipeline_run/status/logs, table_preview, and describe_history. The naming is generally predictable within subgroups but inconsistent across the full set.
With 83 tools, this server is far beyond a manageable scope for agent tool selection and exceeds the 50+ extreme threshold. Even though Microsoft Fabric is a broad platform, consolidating this many operations into one MCP server creates significant cognitive overhead. This would be better split into focused servers by domain.
The tool surface covers many Fabric areas including workspaces, lakehouses, warehouses, notebooks, semantic models, pipelines, OneLake, SQL, and Graph integrations. However, CRUD coverage is incomplete: warehouses and lakehouses lack update/delete, reports lack create/delete, and pipelines lack list/update/delete. These gaps create dead ends for common lifecycle workflows.
Maintenance
Related MCP Connectors
Marketo MCP server for AI. 130 tools to operate Marketo from Claude, Cursor, or ChatGPT.
MCP server for progressive tool usage at any scale (see https://klavis.ai)
Official Microsoft MCP Server to query Microsoft Entra data using natural language
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA Python-based MCP server that enables interaction with Microsoft Fabric APIs for managing workspaces, lakehouses, warehouses, and tables through natural language.17-
- AlicenseNot gradedqualityDmaintenanceThe Fabric-Analytics-MCP server enables AI agents to interact directly with Microsoft Fabric using natural language. It transforms complex data engineering tasks—such as workspace management, data exploration, and job execution—into intuitive, conversational workflows for LLMs like Claude or GitHub17 npm110MIT
- AlicenseAqualityCmaintenanceAn MCP (Model Context Protocol) server that lets AI agents manage Power BI workspaces, datasets, and refreshes via natural language.112MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server for Microsoft Fabric that enables AI agents to query and analyze Lakehouse and Eventhouse data, and manage Eventstreams, using natural language through the MCP interface.MIT