Skip to main content
Glama
sdebruyn

fabric-dw-mcp-cli

by sdebruyn

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
assign_workspace_to_capacityB

Assign a workspace to a Fabric capacity.

Args: workspace: Workspace name or GUID. capacity_id: UUID of the capacity to assign the workspace to.

list_capacitiesA

List all Fabric capacities the caller has access to.

Requires the Capacity.Read.All permission. Returns a 403 ToolError when the caller lacks that permission.

list_workspacesA

List all Fabric workspaces the caller has access to.

When a workspace allowlist is configured (via FABRIC_MCP_WORKSPACES env var or [mcp] workspace_allowlist in config.toml) only the workspaces that match the allowlist (by name or GUID) are returned.

get_workspaceB

Return details for a single workspace (name or GUID).

set_workspace_collationA

Set the default Data Warehouse collation for a workspace.

Args: workspace: Workspace name or GUID. collation: Collation to apply. Fabric Data Warehouse supports a fixed set of collations. Supported values include:

    - ``Latin1_General_100_BIN2_UTF8`` (recommended default)
    - ``Latin1_General_100_CI_AS_KS_WS_SC_UTF8``
    - ``Latin1_General_CI_AS``
    - ``SQL_Latin1_General_CP1_CI_AS``

    Supplying an unsupported value will cause the Fabric API to
    return an error.  See the Fabric documentation for the full
    list of supported collations.
list_warehousesA

List all warehouses and SQL analytics endpoints in a workspace.

Args: workspace: Workspace name or GUID. Optional when all_workspaces is True; required otherwise. all_workspaces: When True, ignore workspace and aggregate results across every workspace the caller can see.

get_warehouseC

Return details for a single warehouse (name or GUID).

create_warehouseA

Create a new Warehouse in a workspace.

Args: workspace: Workspace name or GUID. name: Display name for the new warehouse. collation: Optional default collation for the new warehouse. Fabric Data Warehouse supports a fixed set of collations. Supported values include:

    - ``Latin1_General_100_BIN2_UTF8`` (recommended default)
    - ``Latin1_General_100_CI_AS_KS_WS_SC_UTF8``
    - ``Latin1_General_CI_AS``
    - ``SQL_Latin1_General_CP1_CI_AS``

    When omitted, the workspace default collation is used.
    Supplying an unsupported value will cause the Fabric API to
    return an error.  See the Fabric documentation for the full
    list of supported collations.
description: Optional description for the new warehouse.
rename_warehouseB

Rename a Warehouse (and optionally update its description).

delete_warehouseC

Delete a Warehouse.

takeover_warehouseC

Take ownership of a Warehouse.

get_warehouse_permissionsB

Return principals with access to a Warehouse item.

Requires Fabric Administrator role (admin API).

See https://learn.microsoft.com/en-us/fabric/admin/microsoft-fabric-admin for details.

list_sql_endpointsA

List all SQL analytics endpoints in a workspace.

Args: workspace: Workspace name or GUID. Optional when all_workspaces is True; required otherwise. all_workspaces: When True, ignore workspace and aggregate results across every workspace the caller can see.

get_sql_endpointA

Return details for a single SQL analytics endpoint (name or GUID).

refresh_sql_endpoint_metadataA

Refresh metadata for a SQL analytics endpoint (sync from the underlying Lakehouse).

This is a long-running operation (LRO) that is polled to completion. Returns a list of per-table sync results.

Args: workspace: Workspace name or GUID. endpoint: SQL analytics endpoint name or GUID. recreate_tables: When True, drop and recreate all tables during the refresh. Use to resolve inconsistencies or force a clean rebuild. Destructive — use with caution. Requires FABRIC_MCP_ALLOW_DESTRUCTIVE=1 when enabled.

get_sql_endpoint_permissionsA

Return principals with access to a SQL Analytics Endpoint item.

Requires Fabric Administrator role (admin API).

See https://learn.microsoft.com/en-us/fabric/admin/microsoft-fabric-admin for details.

get_audit_settingsA

Fetch the current SQL audit settings for a warehouse or SQL analytics endpoint.

Args: workspace: Workspace name or GUID. warehouse: Warehouse or SQL analytics endpoint name or GUID.

enable_auditA

Enable SQL auditing on a warehouse or SQL analytics endpoint.

CAUTION: The pre-flight GET used to round-trip the existing action-group list is eventually consistent and may lag a recent PATCH by several minutes. If the action-group list was changed within that window, this call may silently revert it. Space audit writes at least a few minutes apart.

Args: workspace: Workspace name or GUID. warehouse: Warehouse or SQL analytics endpoint name or GUID. retention_days: Log retention in days (0-3650; 0 = unlimited). Default 0.

disable_auditA

Disable SQL auditing on a warehouse or SQL analytics endpoint.

CAUTION: Each audit write reads current settings via an eventually-consistent GET that may lag a recent PATCH by several minutes. Two audit writes issued within that window can cause the second to silently revert the first. Space audit writes at least a few minutes apart.

Args: workspace: Workspace name or GUID. warehouse: Warehouse or SQL analytics endpoint name or GUID.

set_audit_action_groupsA

Replace the audited action groups for a warehouse or SQL analytics endpoint.

Only replaces the action groups. Does not toggle the audit enabled or disabled state; if auditing was Disabled before the call it remains Disabled afterwards.

CAUTION: Each audit write reads current settings via an eventually-consistent GET that may lag a recent PATCH by several minutes. The retention period read from that GET is round-tripped; if retention was changed within the lag window, this call may silently revert it. Space audit writes at least a few minutes apart.

Args: workspace: Workspace name or GUID. warehouse: Warehouse or SQL analytics endpoint name or GUID. action_groups: List of audit action group names.

add_audit_groupA

Add a single audit action group without overwriting the others.

Idempotent -- if the group is already present the current settings are returned unchanged. Auditing must already be enabled.

CAUTION: changes take effect immediately on the live audit policy.

CAUTION: Each audit write reads current settings via an eventually-consistent GET that may lag a recent PATCH by several minutes. Two audit writes issued within that window can cause the second to silently revert the first. Space audit writes at least a few minutes apart.

Args: workspace: Workspace name or GUID. warehouse: Warehouse or SQL analytics endpoint name or GUID. group: Action group name, e.g. BATCH_COMPLETED_GROUP.

remove_audit_groupA

Remove a single audit action group without overwriting the others.

Idempotent -- if the group is not present the current settings are returned unchanged. Auditing must already be enabled.

CAUTION: changes take effect immediately on the live audit policy.

CAUTION: Each audit write reads current settings via an eventually-consistent GET that may lag a recent PATCH by several minutes. Two audit writes issued within that window can cause the second to silently revert the first. Space audit writes at least a few minutes apart.

Args: workspace: Workspace name or GUID. warehouse: Warehouse or SQL analytics endpoint name or GUID. group: Action group name, e.g. BATCH_COMPLETED_GROUP.

set_audit_retentionA

Update the audit log retention period without changing the audit enabled/disabled state.

Audit must already be enabled; if disabled, enable it first with enable_audit.

CAUTION: The pre-flight GET used to round-trip the existing action-group list is eventually consistent and may lag a recent PATCH by several minutes. If the action-group list was changed within that window, this call may silently revert it. Space audit writes at least a few minutes apart.

Args: workspace: Workspace name or GUID. warehouse: Warehouse or SQL analytics endpoint name or GUID. days: Retention period in days (1-3650). The API enforces its own upper bound.

list_running_queriesA

Return all currently-executing queries on a warehouse or SQL Analytics Endpoint.

Args: workspace: Workspace name or GUID. item: Warehouse or SQL Analytics Endpoint name or GUID.

list_connectionsB

Return all active SQL connections on a warehouse or SQL Analytics Endpoint.

Args: workspace: Workspace name or GUID. item: Warehouse or SQL Analytics Endpoint name or GUID.

kill_sessionA

Terminate a session on a warehouse by session_id.

Args: workspace: Workspace name or GUID. item: Warehouse or SQL Analytics Endpoint name or GUID. session_id: Session ID to terminate (must be a positive integer).

list_request_historyA

Return completed SQL requests from queryinsights.exec_requests_history.

Args: workspace: Workspace name or GUID. item: Warehouse or SQL Analytics Endpoint name or GUID. limit: Maximum rows to return (1-10000, default 100). since: Optional ISO-8601 lower bound on submit_time. until: Optional ISO-8601 upper bound on submit_time.

list_session_historyA

Return completed sessions from queryinsights.exec_sessions_history.

Args: workspace: Workspace name or GUID. item: Warehouse or SQL Analytics Endpoint name or GUID. limit: Maximum rows to return (1-10000, default 100). since: Optional ISO-8601 lower bound on session_start_time. until: Optional ISO-8601 upper bound on session_start_time.

list_frequent_queriesA

Return frequently-run queries from queryinsights.frequently_run_queries.

Args: workspace: Workspace name or GUID. item: Warehouse or SQL Analytics Endpoint name or GUID. limit: Maximum rows to return (1-10000, default 100). since: Optional ISO-8601 lower bound on last_run_start_time. until: Optional ISO-8601 upper bound on last_run_start_time.

list_long_running_queriesB

Return long-running queries from queryinsights.long_running_queries.

Args: workspace: Workspace name or GUID. item: Warehouse or SQL Analytics Endpoint name or GUID. limit: Maximum rows to return (1-10000, default 100). since: Optional ISO-8601 lower bound on last_run_start_time. until: Optional ISO-8601 upper bound on last_run_start_time.

execute_sqlA

Execute an arbitrary SQL statement or batch against a warehouse or SQL Analytics Endpoint.

WARNING: this tool executes arbitrary SQL against the target. DDL (DROP, ALTER, TRUNCATE) and DML (DELETE, UPDATE) are permitted unless FABRIC_MCP_READONLY=1 is set. Use only when the user explicitly requests data modification. Default to SELECT when the user's intent is read-only investigation.

Supports both Warehouse and SQL Analytics Endpoint items. Multi-statement batches are allowed; only the last result set is returned. DDL/DML statements that produce no result set return columns=[] and rows=[].

datetime and Decimal column values are pre-serialised to strings. bytes / varbinary columns are base64-encoded and their column names are suffixed with __base64.

For large tables, add a TOP clause or WHERE predicate to the query rather than relying solely on max_rows. The driver fetches at most max_rows + 1 rows (enough to detect truncation) so memory is bounded, but pushing the limit into the query itself is always more efficient.

Args: workspace: Workspace name or GUID. item: Warehouse or SQL Analytics Endpoint name or GUID. query: SQL statement or batch to execute. max_rows: Maximum rows to return (1-10000, default 1000). When the result set is larger the response includes "truncated": true.

Returns: A dict with keys columns (list[str]), rows (list[list[Any]]), rowcount (int; -1 when the driver does not report a count), row_count_returned (int), and truncated (bool).

get_query_planA

Capture the estimated SHOWPLAN_XML execution plan for a SQL query without executing it.

This tool does NOT execute the query — it only retrieves the estimated execution plan as SHOWPLAN_XML. Because no data is modified, this tool is permitted even under FABRIC_MCP_READONLY=1.

The plan XML uses the standard namespace http://schemas.microsoft.com/sqlserver/2004/07/showplan and can be opened in SSMS, Azure Data Studio, or uploaded to pastetheplan.com for visual analysis.

Since the query is not executed, DDL/DML query text is safe to plan without modifying any data.

Supports both Warehouse and SQL Analytics Endpoint items.

Format options:

  • "xml" (default, backwards-compatible) — returns the raw SHOWPLAN_XML string in plan_xml. Existing callers relying on {"plan_xml": str} continue to work unchanged.

  • "tree" — parses the XML into a native nested list of dicts (one entry per statement) in plan. Best for agent reasoning over the plan structure.

  • "json" — same tree, serialised to an indented JSON string in plan_json. Ready to write out or pass through as compact text.

  • "mermaid" — renders a Mermaid flowchart TD diagram string in mermaid. Paste into mermaid.live or embed in GitHub Markdown.

Artifact formats (SVG/HTML/DOT) are CLI-only. They write files to disk and are only available via fdw sql plan --format <fmt> -o <file>. The MCP server never writes files (ambiguous cwd, invisible side-effects).

Args: workspace: Workspace name or GUID. item: Warehouse or SQL Analytics Endpoint name or GUID. query: SQL statement to generate an estimated execution plan for. format: Output format — one of "xml" (default), "tree", "json", or "mermaid".

Returns: A dict whose shape depends on format:

- ``xml``     → ``{"format": "xml",     "plan_xml":   str}``
- ``tree``    → ``{"format": "tree",    "plan":       list[dict]}``
- ``json``    → ``{"format": "json",    "plan_json":  str}``
- ``mermaid`` → ``{"format": "mermaid", "mermaid":    str}``
list_snapshotsB

Return all snapshots belonging to a warehouse.

create_snapshotA

Create a new warehouse snapshot.

Args: workspace: Workspace name or GUID. warehouse: Warehouse name or GUID. name: Display name for the new snapshot. description: Optional description. snapshot_dt: Optional ISO-8601 datetime string for the snapshot point-in-time. Naive datetimes (no timezone offset) are interpreted as UTC.

rename_snapshotD

Rename a warehouse snapshot.

delete_snapshotC

Delete a warehouse snapshot.

roll_snapshot_timestampA

Roll a snapshot's timestamp forward (or reset to current).

Args: workspace: Workspace name or GUID. warehouse: Parent warehouse name or GUID (used for the SQL connection). snapshot_name: The snapshot database name to roll. new_dt: Optional ISO-8601 datetime string; defaults to CURRENT_TIMESTAMP. Naive datetimes (no timezone offset) are interpreted as UTC.

list_restore_pointsB

Return all restore points for a warehouse.

get_restore_pointA

Return a single restore point by ID.

Args: workspace: Workspace name or GUID. warehouse: Warehouse name or GUID. restore_point_id: The restore point ID string (e.g. "1726617378000").

create_restore_pointB

Create a restore point for a warehouse at the current timestamp.

Args: workspace: Workspace name or GUID. warehouse: Warehouse name or GUID. name: Optional display name (max 128 chars). description: Optional description (max 512 chars).

update_restore_pointA

Rename and/or update the description of a restore point.

At least one of name or description must be provided.

Args: workspace: Workspace name or GUID. warehouse: Warehouse name or GUID. restore_point_id: The restore point ID string. name: New display name (max 128 chars). description: New description (max 512 chars).

delete_restore_pointA

Delete a user-defined restore point.

System-created restore points cannot be deleted.

Args: workspace: Workspace name or GUID. warehouse: Warehouse name or GUID. restore_point_id: The restore point ID string.

restore_warehouse_in_placeA

Restore a warehouse in-place to a restore point.

WARNING: This is a destructive, long-running operation. The warehouse will be unavailable for approximately 10 minutes while the restore completes.

Args: workspace: Workspace name or GUID. warehouse: Warehouse name or GUID. restore_point_id: The restore point ID string to restore to.

list_viewsA

List SQL views on a warehouse or SQL Analytics Endpoint.

Args: workspace: Workspace name or GUID. item: Warehouse or SQL endpoint name or GUID. schema: When provided, only views in this schema are returned.

read_viewA

Return up to count rows from a view as JSON-serialisable columns + rows.

Args: workspace: Workspace name or GUID. item: Warehouse or SQL endpoint name or GUID. qualified_name: Dot-separated qualified view name, e.g. dbo.vw_sales. count: Maximum number of rows to return (1-10000, default 10).

count_view_rowsA

Return the total row count of a view via SELECT COUNT_BIG(*).

Works on both Fabric Data Warehouses and SQL Analytics Endpoints.

Args: workspace: Workspace name or GUID. item: Warehouse or SQL endpoint name or GUID. qualified_name: Dot-separated qualified view name, e.g. dbo.vw_sales.

get_view_columnsA

Return column metadata for a SQL view via sys.columns.

Works on both Fabric Data Warehouses and SQL Analytics Endpoints.

Args: workspace: Workspace name or GUID. item: Warehouse or SQL endpoint name or GUID. qualified_name: Dot-separated qualified view name, e.g. dbo.vw_sales.

get_viewB

Fetch the full definition of a view (schema.view).

Args: workspace: Workspace name or GUID. item: Warehouse or SQL endpoint name or GUID. qualified_name: Dot-separated qualified view name, e.g. dbo.vw_sales.

create_viewA

Create a new SQL view.

CAUTION: select_body is executed verbatim as DDL. Ensure the body matches the user's intent before calling this tool.

select_body must be a single read-only SELECT or WITH (CTE) statement. The guard is always on and fail-closed: a write keyword (DELETE, DROP, INSERT, etc.) or a semicolon anywhere in the body is rejected, even inside a string literal or quoted identifier. If a legitimate view body contains a write keyword (e.g. a column alias 'DELETE'), rewrite the expression to avoid the keyword.

Args: workspace: Workspace name or GUID. item: Warehouse or SQL endpoint name or GUID. qualified_name: Dot-separated qualified view name, e.g. dbo.vw_sales. select_body: Single read-only SELECT or WITH (CTE) statement for the view body. Write keywords and semicolons are rejected fail-closed, even inside string literals or quoted identifiers.

update_viewA

Redefine a SQL view via CREATE OR ALTER VIEW.

CAUTION: select_body is executed verbatim as DDL. Ensure the body matches the user's intent before calling this tool.

select_body must be a single read-only SELECT or WITH (CTE) statement. The guard is always on and fail-closed: a write keyword (DELETE, DROP, INSERT, etc.) or a semicolon anywhere in the body is rejected, even inside a string literal or quoted identifier. If a legitimate view body contains a write keyword (e.g. a column alias 'DELETE'), rewrite the expression to avoid the keyword.

Args: workspace: Workspace name or GUID. item: Warehouse or SQL endpoint name or GUID. qualified_name: Dot-separated qualified view name, e.g. dbo.vw_sales. select_body: Single read-only SELECT or WITH (CTE) statement for the new view body. Write keywords and semicolons are rejected fail-closed, even inside string literals or quoted identifiers.

drop_viewA

Drop a SQL view.

Args: workspace: Workspace name or GUID. item: Warehouse or SQL endpoint name or GUID. qualified_name: Dot-separated qualified view name, e.g. dbo.vw_sales.

rename_viewA

Rename a SQL view via sp_rename.

Works on both Data Warehouses and SQL Analytics Endpoints.

The new name must be a bare (unqualified) identifier — sp_rename cannot move a view across schemas.

Args: workspace: Workspace name or GUID. item: Warehouse or SQL endpoint name or GUID. qualified_name: Current dot-separated qualified view name, e.g. dbo.vw_sales. new_name: New bare view name (no schema prefix), e.g. vw_revenue.

list_proceduresA

List stored procedures on a warehouse or SQL Analytics Endpoint.

Stored procedures are supported on both Fabric Data Warehouses and SQL Analytics Endpoints.

Args: workspace: Workspace name or GUID. item: Warehouse or SQL endpoint name or GUID. schema: When provided, only procedures in this schema are returned.

get_procedureA

Fetch the full definition of a stored procedure (schema.proc).

Stored procedures are supported on both Fabric Data Warehouses and SQL Analytics Endpoints.

Args: workspace: Workspace name or GUID. item: Warehouse or SQL endpoint name or GUID. qualified_name: Dot-separated qualified procedure name, e.g. dbo.usp_load.

create_procedureA

Create a new stored procedure.

Stored procedures are supported on both Fabric Data Warehouses and SQL Analytics Endpoints.

CAUTION: body is executed verbatim as DDL. Ensure the body matches the user's intent before calling this tool.

Args: workspace: Workspace name or GUID. item: Warehouse or SQL endpoint name or GUID. qualified_name: Dot-separated qualified procedure name, e.g. dbo.usp_load. body: The procedure body (the AS … section).

update_procedureA

Redefine a stored procedure via CREATE OR ALTER PROCEDURE.

Stored procedures are supported on both Fabric Data Warehouses and SQL Analytics Endpoints.

CAUTION: body is executed verbatim as DDL. Ensure the body matches the user's intent before calling this tool.

Args: workspace: Workspace name or GUID. item: Warehouse or SQL endpoint name or GUID. qualified_name: Dot-separated qualified procedure name, e.g. dbo.usp_load. body: The new procedure body (the AS … section).

drop_procedureA

Drop a stored procedure.

Stored procedures are supported on both Fabric Data Warehouses and SQL Analytics Endpoints.

Args: workspace: Workspace name or GUID. item: Warehouse or SQL endpoint name or GUID. qualified_name: Dot-separated qualified procedure name, e.g. dbo.usp_load.

list_functionsA

List T-SQL user-defined functions on a warehouse or SQL Analytics Endpoint.

Scalar UDFs (FN) and inline TVFs (IF) are preview features on Fabric DW as of mid-2026. Function DDL is supported on both Data Warehouses and SQL Analytics Endpoints.

Args: workspace: Workspace name or GUID. item: Warehouse or SQL Analytics Endpoint name or GUID. schema: When provided, only functions in this schema are returned. kind: Filter by function kind — "scalar" (FN only), "inline-tvf" (IF only), or "all" (FN + IF + TF, the default).

get_functionA

Fetch the full definition of a T-SQL user-defined function (schema.fn).

Returns the function definition (from sys.sql_modules) and its parameter list (from sys.parameters). Scalar UDFs and inline TVFs are supported on both Data Warehouses and SQL Analytics Endpoints.

Args: workspace: Workspace name or GUID. item: Warehouse or SQL Analytics Endpoint name or GUID. qualified_name: Dot-separated qualified function name, e.g. dbo.fn_clean_input.

create_functionA

Create a new T-SQL user-defined function.

Scalar UDFs and inline TVFs are preview features on Fabric DW as of mid-2026. Function DDL is supported on both Data Warehouses and SQL Analytics Endpoints.

CAUTION: body is executed verbatim as DDL. Ensure the body matches the user's intent before calling this tool.

The body should include the parameter list, RETURNS clause, and function body (everything that follows CREATE FUNCTION [schema].[name]).

Args: workspace: Workspace name or GUID. item: Warehouse or SQL Analytics Endpoint name or GUID. qualified_name: Dot-separated qualified function name, e.g. dbo.fn_clean_input. body: The function body (parameter list, RETURNS clause, and implementation).

update_functionA

Redefine a T-SQL user-defined function via CREATE OR ALTER FUNCTION.

Note: ALTER FUNCTION cannot change the function kind (e.g. scalar to inline TVF). The body must be compatible with the original function's kind.

Scalar UDFs and inline TVFs are preview features on Fabric DW as of mid-2026. Function DDL is supported on both Data Warehouses and SQL Analytics Endpoints.

CAUTION: body is executed verbatim as DDL. Ensure the body matches the user's intent before calling this tool.

Args: workspace: Workspace name or GUID. item: Warehouse or SQL Analytics Endpoint name or GUID. qualified_name: Dot-separated qualified function name, e.g. dbo.fn_clean_input. body: The new function body (parameter list, RETURNS clause, and implementation).

drop_functionA

Drop a T-SQL user-defined function.

Function DDL is supported on both Data Warehouses and SQL Analytics Endpoints.

Args: workspace: Workspace name or GUID. item: Warehouse or SQL Analytics Endpoint name or GUID. qualified_name: Dot-separated qualified function name, e.g. dbo.fn_clean_input. if_exists: When true, a missing function is treated as a no-op and {"dropped": false} is returned instead of raising an error. Defaults to false.

list_schemasA

List user-defined SQL schemas on a warehouse or SQL Analytics Endpoint.

System schemas (sys, INFORMATION_SCHEMA, db_* fixed-role schemas, guest) are excluded. dbo is included as it is user-writable.

Listing schemas is a read-only operation and works on both Fabric Data Warehouses and SQL Analytics Endpoints.

Args: workspace: Workspace name or GUID. item: Warehouse or SQL Analytics Endpoint name or GUID.

create_schemaA

Create a new SQL schema on a warehouse or SQL Analytics Endpoint.

Both Fabric Data Warehouses and SQL Analytics Endpoints support CREATE SCHEMA per the Microsoft Fabric T-SQL reference.

Args: workspace: Workspace name or GUID. item: Warehouse or SQL Analytics Endpoint name or GUID. name: The schema name. Must be a valid SQL identifier.

delete_schemaA

Drop a SQL schema from a warehouse.

CAUTION: This is a destructive, irreversible operation. The schema will be permanently deleted. If the schema still contains tables or views, the operation will fail unless cascade is True.

CAUTION: When cascade is True, all tables and views in the schema are permanently deleted along with their data. Confirm explicitly with the user before calling with cascade=True.

Both Fabric Data Warehouses and SQL Analytics Endpoints support DROP SCHEMA per the Microsoft Fabric T-SQL reference.

Args: workspace: Workspace name or GUID. item: Warehouse or SQL Analytics Endpoint name or GUID. name: The schema name to drop. cascade: When True, drop all tables and views in the schema first. Defaults to False.

list_tablesA

List SQL tables on a warehouse or SQL Analytics Endpoint.

Args: workspace: Workspace name or GUID. item: Warehouse or SQL endpoint name or GUID. schema: When provided, only tables in this schema are returned.

read_tableA

Return up to count rows from a table as JSON-serialisable columns + rows.

Args: workspace: Workspace name or GUID. item: Warehouse or SQL endpoint name or GUID. qualified_name: Dot-separated qualified table name, e.g. dbo.sales. count: Maximum number of rows to return (1-10000, default 10).

count_table_rowsA

Return the total row count of a table via SELECT COUNT_BIG(*).

Works on both Fabric Data Warehouses and SQL Analytics Endpoints.

Args: workspace: Workspace name or GUID. item: Warehouse or SQL endpoint name or GUID. qualified_name: Dot-separated qualified table name, e.g. dbo.sales.

get_cluster_columnsA

Return the data-clustering columns of a table, ordered by clustering ordinal.

Only supported on Fabric Data Warehouses. SQL Analytics Endpoints raise a ToolError. Returns an empty list when no clustering columns are defined.

Args: workspace: Workspace name or GUID. item: Warehouse name or GUID. qualified_name: Dot-separated qualified table name, e.g. dbo.sales.

get_table_columnsA

Return column metadata for a SQL table via sys.columns.

Works on both Fabric Data Warehouses and SQL Analytics Endpoints.

Args: workspace: Workspace name or GUID. item: Warehouse or SQL endpoint name or GUID. qualified_name: Dot-separated qualified table name, e.g. dbo.sales.

create_tableA

Create a new SQL table via CTAS (CREATE TABLE AS SELECT).

Only supported on Fabric Data Warehouses (not SQL Analytics Endpoints). The service rejects SQL Analytics Endpoints with a ToolError.

CAUTION: select_body is executed verbatim as DDL on the warehouse. Ensure the body matches the user's intent before calling this tool.

select_body must be a single read-only SELECT or WITH (CTE) statement. The guard is always on and fail-closed: a write keyword (DELETE, DROP, INSERT, etc.) or a semicolon anywhere in the body is rejected, even inside a string literal or quoted identifier. If a legitimate query body contains a write keyword (e.g. a column alias 'DELETE'), rewrite the expression to avoid the keyword.

When cluster_by is supplied, the DDL becomes CREATE TABLE … WITH (CLUSTER BY ([c1], [c2])) AS SELECT …. Column existence is not validated for CTAS because the result columns come from the SELECT and are not known ahead of time.

Args: workspace: Workspace name or GUID. item: Warehouse name or GUID. SQL Analytics Endpoints are rejected. qualified_name: Dot-separated qualified table name, e.g. dbo.sales. select_body: Single read-only SELECT or WITH (CTE) statement for the CTAS source. Write keywords and semicolons are rejected fail-closed, even inside string literals or quoted identifiers. cluster_by: Optional list of column names for the CLUSTER BY clause (up to 4).

delete_tableA

Drop a SQL table.

Only supported on Fabric Data Warehouses (not SQL Analytics Endpoints). The service rejects SQL Analytics Endpoints with a ToolError.

CAUTION: This is a destructive, irreversible operation. The table and all its data will be permanently deleted. Confirm with the user before calling.

Args: workspace: Workspace name or GUID. item: Warehouse name or GUID. SQL Analytics Endpoints are rejected. qualified_name: Dot-separated qualified table name, e.g. dbo.sales.

clear_tableA

Truncate a SQL table (remove all rows, keep structure).

Only supported on Fabric Data Warehouses (not SQL Analytics Endpoints). The service rejects SQL Analytics Endpoints with a ToolError.

CAUTION: This is a destructive, irreversible operation. All rows will be permanently deleted. The table structure and schema are preserved. Confirm with the user before calling.

Args: workspace: Workspace name or GUID. item: Warehouse name or GUID. SQL Analytics Endpoints are rejected. qualified_name: Dot-separated qualified table name, e.g. dbo.sales.

create_empty_tableA

Create an empty table from an explicit column spec (DDL only, no data).

Builds CREATE TABLE [schema].[table] (col TYPE [NULL|NOT NULL], …) from the supplied column definitions. No data is read or inserted; this is a pure DDL operation.

Server-side file access is unreliable in MCP deployments, so CSV/Parquet inference is not available via this tool — use the fabric-dw tables create --from-parquet or --from-csv CLI commands instead.

Only supported on Fabric Data Warehouses (not SQL Analytics Endpoints).

When cluster_by is supplied, each column must appear in columns.

Args: workspace: Workspace name or GUID. item: Warehouse name or GUID. qualified_name: Dot-separated qualified table name, e.g. dbo.sales. columns: List of column definitions, each a dict with: name (str) — column identifier; sql_type (str) — Fabric-DW T-SQL type, e.g. "INT", "VARCHAR(255)"; nullable (bool, optional, default true) — whether the column allows NULL. cluster_by: Optional list of column names for the CLUSTER BY clause (up to 4). Each name must appear in columns.

clone_tableA

Create a zero-copy clone of a table using CREATE TABLE … AS CLONE OF ….

Only supported on Fabric Data Warehouses (not SQL Analytics Endpoints).

Args: workspace: Workspace name or GUID. item: Warehouse name or GUID. source: Qualified source table name, e.g. dbo.sales. new_table: Qualified name for the new cloned table, e.g. dbo.sales_clone. at: Optional ISO-8601 UTC timestamp for a point-in-time clone, e.g. 2024-05-20T14:00:00. Must be within the data-retention window (30 days by default). When omitted, the clone reflects the current state of the source table.

get_table_health_metricsA

Return health metrics for a table via sp_get_table_health_metrics.

Only supported on SQL Analytics Endpoints (not Data Warehouses). The proc surfaces Delta/Parquet layout issues such as small files, fragmentation, excessive deletes/updates, and delayed checkpoints.

The stored procedure is Generally Available (announced at Build 2026) but its output column schema is not yet documented by Microsoft. Columns and rows are passed through verbatim.

Args: workspace: Workspace name or GUID. item: SQL Analytics Endpoint name or GUID. Data Warehouses are rejected with a ToolError. qualified_name: Dot-separated qualified table name, e.g. dbo.sales.

rename_tableA

Rename a SQL table via sp_rename (Data-Warehouse-only).

Renames the table in-place within the same schema using T-SQL EXEC sp_rename. Both the current qualified name and the new bare name are passed as bound parameters — no SQL injection is possible.

sp_rename cannot move a table to a different schema, so new_name must be an unqualified (bare) name without a dot.

Args: workspace: Workspace name or GUID. item: Warehouse name or GUID. SQL Analytics Endpoints are rejected. qualified_name: Current dot-separated qualified table name, e.g. dbo.sales. new_name: New table name (unqualified, e.g. sales_v2). Must not contain a dot.

set_cluster_columnsA

Change (or remove) the data-clustering columns of an existing table.

Rebuilds the table via a transactional CTAS-swap:

  1. CREATE TABLE [schema].[__recluster_<hex>] [WITH (CLUSTER BY (...))] AS SELECT * FROM [schema].[orig]

  2. DROP TABLE [schema].[orig]

  3. EXEC sp_rename to restore the original name

All three steps run inside ONE transaction. Any failure rolls back automatically — no orphan temp table is left behind.

CAUTION: This operation copies the full table (runtime is proportional to table size). Dependent views and stored procedures that reference this table by name are NOT automatically updated by sp_rename and may need refreshing after the swap.

Only supported on Fabric Data Warehouses (not SQL Analytics Endpoints).

Args: workspace: Workspace name or GUID. item: Warehouse name or GUID. SQL Analytics Endpoints are rejected. qualified_name: Dot-separated qualified table name, e.g. dbo.sales. cluster_by: New list of column names for the CLUSTER BY clause (up to 4). Pass null or an empty list to remove clustering (rebuilds table without CLUSTER BY).

load_table_from_urlA

Load data into a Data Warehouse table via COPY INTO from a remote URL.

Supported file types: CSV, PARQUET. JSON remote URLs require downloading and converting locally first; use the CLI tables load command for local files (including JSON).

For OneLake or same-tenant URLs, no credential is needed. For secured external URLs (Azure Blob Storage SAS, etc.), supply credential_type and the appropriate secret/identity values.

CAUTION: This operation loads data into the target table. Confirm the source URL and target table before calling.

Note: secret / identity values are accepted but are NEVER logged or included in any debug output.

Args: workspace: Workspace name or GUID. item: Warehouse name or GUID. SQL Analytics Endpoints are rejected. qualified_name: Dot-separated qualified table name, e.g. dbo.sales. url: Source URL (OneLake DFS URL or external Azure Blob URL). file_type: CSV or PARQUET. credential_type: Credential type for the source URL. secret: Credential secret (not logged). identity: Identity for managed-identity or service-principal. delimiter: CSV column delimiter. has_header: Whether the CSV file has a header row. encoding: CSV file encoding. field_quote: CSV field-quote character. row_terminator: CSV row terminator. max_errors: Maximum errors before aborting. rejected_row_location: URL for rejected-row output.

import_table_from_urlA

Load data into an existing Data Warehouse table via COPY INTO from a remote URL.

The target table must already exist and have a compatible schema. For auto-create with schema inference from local files, use the CLI tables load --file --create command instead.

if_exists controls behaviour when the table already exists:

  • "fail" (default): raise an error if the table already exists, or if it does not exist (the table must be created first with create_empty_table or create_table).

  • "append": load rows into the existing table without modification. Raises an error if the table does not exist.

  • "truncate": TRUNCATE the existing table, then load, both inside a single transaction so a failed load leaves the existing rows intact (atomic replace). Requires FABRIC_MCP_ALLOW_DESTRUCTIVE=1. Raises an error if the table does not exist.

  • "replace": not supported for remote URLs (schema inference requires downloading the file). Use "truncate" to keep the current schema, or download locally and use the CLI with --create --if-exists replace.

Supported file types: CSV, PARQUET. JSON remote URLs require downloading and converting locally first; use the CLI tables load command for local files (including JSON).

For OneLake or same-tenant URLs, no credential is needed. For secured external URLs supply credential_type and the appropriate secret/identity values.

CAUTION: truncate is permanently destructive. Confirm the source URL and target table before calling.

Note: secret / identity values are accepted but are NEVER logged or included in any debug output.

Args: workspace: Workspace name or GUID. item: Warehouse name or GUID. SQL Analytics Endpoints are rejected. qualified_name: Dot-separated qualified table name, e.g. dbo.sales. url: Source URL (OneLake DFS URL or external Azure Blob URL). file_type: CSV or PARQUET. if_exists: Policy when the target table already exists. credential_type: Credential type for the source URL. secret: Credential secret (not logged). identity: Identity for managed-identity or service-principal. delimiter: CSV column delimiter. has_header: Whether the CSV file has a header row. encoding: CSV file encoding. field_quote: CSV field-quote character. row_terminator: CSV row terminator. max_errors: Maximum errors before aborting. rejected_row_location: URL for rejected-row output.

list_statisticsA

List statistics on a warehouse or SQL Analytics Endpoint.

Both Data Warehouses and SQL Analytics Endpoints are supported.

Args: workspace: Workspace name or GUID. item: Warehouse or SQL endpoint name or GUID. schema: When provided, only statistics on tables in this schema are returned. table: When provided, only statistics on this table (unqualified name) are returned. user_only: When True, only user-created statistics are returned. auto_only: When True, only auto-created statistics are returned.

show_statisticsA

Show details of a statistic using DBCC SHOW_STATISTICS.

Returns the stat header, density vector, and histogram steps. Both Data Warehouses and SQL Analytics Endpoints are supported.

Args: workspace: Workspace name or GUID. item: Warehouse or SQL endpoint name or GUID. qualified_table: Qualified table name, e.g. dbo.sales. stat_name: The name of the statistic to show. histogram_only: When True, return only the histogram steps.

create_statisticsA

Create a single-column statistic on a table.

Only supported on Data Warehouses (SQL Analytics Endpoints are read-only). Only single-column statistics are supported (Fabric limitation).

Args: workspace: Workspace name or GUID. item: Warehouse name or GUID. SQL Analytics Endpoints are rejected. qualified_table: Qualified table name, e.g. dbo.sales. column: Column name to build the statistic on. stat_name: Name for the new statistic. fullscan: When True (default), use WITH FULLSCAN. Ignored when sample_percent is provided. sample_percent: Sample percentage (1-100). When provided, overrides fullscan and uses WITH SAMPLE n PERCENT.

update_statisticsA

Update an existing statistic via UPDATE STATISTICS.

Only supported on Data Warehouses (SQL Analytics Endpoints are read-only).

Args: workspace: Workspace name or GUID. item: Warehouse name or GUID. SQL Analytics Endpoints are rejected. qualified_table: Qualified table name, e.g. dbo.sales. stat_name: Name of the statistic to update. fullscan: When True (default), use WITH FULLSCAN. Ignored when sample_percent is provided. sample_percent: Sample percentage (1-100). When provided, overrides fullscan and uses WITH SAMPLE n PERCENT.

delete_statisticsA

Drop a statistic via DROP STATISTICS.

CAUTION: This is a destructive, irreversible operation. Only supported on Data Warehouses (SQL Analytics Endpoints are read-only).

Args: workspace: Workspace name or GUID. item: Warehouse name or GUID. SQL Analytics Endpoints are rejected. qualified_table: Qualified table name, e.g. dbo.sales. stat_name: Name of the statistic to drop.

get_warehouse_settingsA

Return the current server-side database settings for a warehouse.

Reads result_set_caching, time_travel_retention_days, and time_travel_retention_cutoff_date from sys.databases.

Both Data Warehouses and SQL Analytics Endpoints are supported.

Args: workspace: Workspace name or GUID. item: Warehouse or SQL Analytics Endpoint name or GUID.

set_result_set_cachingA

Enable or disable result-set caching on a warehouse.

Executes ALTER DATABASE CURRENT SET RESULT_SET_CACHING { ON | OFF } and returns the effective settings read back after the change.

Only supported on Fabric Data Warehouses (not SQL Analytics Endpoints). SQL Analytics Endpoints are rejected with a ToolError.

Args: workspace: Workspace name or GUID. item: Warehouse name or GUID. SQL Analytics Endpoints are rejected. enabled: True to enable result-set caching, False to disable it.

set_time_travel_retentionA

Set the time-travel retention period on a warehouse.

Executes ALTER DATABASE CURRENT SET TIME_TRAVEL_RETENTION_PERIOD = <n> DAYS and returns the effective settings read back after the change.

Only supported on Fabric Data Warehouses (not SQL Analytics Endpoints). SQL Analytics Endpoints are rejected with a ToolError.

Args: workspace: Workspace name or GUID. item: Warehouse name or GUID. SQL Analytics Endpoints are rejected. days: Retention period in days. Must be in the range 1-120 (inclusive).

get_sql_pools_statusA

Return whether custom SQL Pools are enabled for a workspace.

Returns only the workspace-level enabled/disabled switch (customSQLPoolsEnabled). Use list_sql_pools to see the pool list, or get_sql_pool for a single pool's details.

Requires workspace admin role. This tool targets a beta / preview API endpoint that may change before general availability.

list_sql_poolsB

Return the list of custom SQL pools for a workspace.

Requires workspace admin role. This tool targets a beta / preview API.

get_sql_poolA

Return details for a single SQL pool by name.

Args: workspace: Workspace name or GUID. pool_name: The pool name.

Requires workspace admin role. This tool targets a beta / preview API.

create_sql_poolA

Add a new custom SQL pool to a workspace.

Args: workspace: Workspace name or GUID. name: Pool name (must be unique within the workspace). max_percent: Max resource percentage (1-100). is_default: Whether this pool is the default pool. Defaults to false. optimize_for_reads: Enable read optimisation. Defaults to true. classifier_type: Classifier type (e.g. "Application Name"). classifier_values: List of classifier values (e.g. application names).

Requires workspace admin role. This tool targets a beta / preview API.

update_sql_poolA

Update an existing SQL pool. Only the parameters you supply are changed.

Args: workspace: Workspace name or GUID. name: Name of the pool to update. max_percent: New max resource percentage (1-100), or omit to keep current. is_default: Set or clear the default flag, or omit to keep current. optimize_for_reads: Enable/disable read optimisation, or omit to keep current. classifier_type: New classifier type, or omit to keep current. classifier_values: New classifier value list, or omit to keep current.

Requires workspace admin role. This tool targets a beta / preview API.

delete_sql_poolA

Delete an SQL pool from a workspace.

Args: workspace: Workspace name or GUID. pool_name: Name of the pool to delete.

Requires workspace admin role. This tool targets a beta / preview API.

enable_sql_poolsA

Enable custom SQL Pools for a workspace without modifying pool definitions.

Requires workspace admin role. This tool targets a beta / preview API.

disable_sql_poolsA

Disable custom SQL Pools for a workspace, preserving pool configuration.

Re-enabling with enable_sql_pools restores the previously saved configuration.

Requires workspace admin role. This tool targets a beta / preview API.

list_sql_pool_insightsA

Return SQL pool insight events from queryinsights.sql_pool_insights.

Args: workspace: Workspace name or GUID. warehouse: Warehouse or SQL Analytics Endpoint name or GUID. limit: Maximum rows to return (1-10000, default 100). since: Optional ISO-8601 lower bound on timestamp. until: Optional ISO-8601 upper bound on timestamp.

clear_cacheA

Erase cached workspace and item name-to-UUID mappings.

Args: scope: Which portion of the cache to clear.

    - ``"workspaces"`` — clear only workspace name→UUID entries.
    - ``"items"`` — clear only item (warehouse/endpoint) entries.
    - ``"all"`` (default) — clear all entries.

Returns: A dict with keys scope (the value used), workspaces_cleared (number of workspace entries removed), and items_cleared (number of item workspace buckets removed).

generate_dbt_profileA

Generate dbt-fabric project file contents for a Fabric Data Warehouse.

Returns the generated file contents as text strings. Because the MCP server cannot write to the caller's local filesystem, it is the caller's responsibility to write the returned strings to the appropriate files.

Authentication note: dbt-fabric is Entra-only. ServicePrincipal mode emits {{ env_var(...) }} placeholders for tenant_id / client_id / client_secret — no literal secrets are included in the output.

Args: workspace: Workspace name or GUID. item: Warehouse name or GUID. project_name: dbt project name (default: sanitized warehouse name). profile_name: dbt profile name (default: same as project_name). schema: Default schema (default: dbo). target: dbt output target name (default: dev). threads: Number of dbt threads (default: 4). authentication: dbt-fabric authentication string — auto (DefaultAzureCredential), CLI (interactive), or ServicePrincipal. Defaults to the server's auth mode. with_sources: When True, generate a _sources.yml from the warehouse's actual schemas and tables.

Returns: A dict with keys: - profiles_yml: content for profiles.yml. - dbt_project_yml: content for dbt_project.yml. - sources_yml: content for models/staging/_sources.yml. - requirements_txt: content for requirements.txt. - gitignore: content for .gitignore.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

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/sdebruyn/fabric-dw-mcp-cli'

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