mcp-fabric-api
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PORT | No | Port number for HTTP mode. Default is 3000. | 3000 |
| LOG_LEVEL | No | Set to 'debug' for verbose logging. Default is normal level. | |
| TRANSPORT | No | Transport type. Set to 'http' for HTTP mode (remote deployment). | |
| AUTH_METHOD | No | Authentication method: 'default' (Azure CLI), 'device-code', 'client-secret', or 'interactive-browser'. Default is 'default'. | default |
| AZURE_CLIENT_ID | No | Azure application (client) ID. Required for device-code and client-secret methods. | |
| AZURE_TENANT_ID | No | Azure directory (tenant) ID. Required for device-code and client-secret methods. | |
| AZURE_CLIENT_SECRET | No | Azure client secret. Required for client-secret method. | |
| WRITABLE_WORKSPACES | No | Comma-separated glob patterns for workspaces allowed write operations. Default blocks all writes. Example: '*-Dev,*-Test,Sandbox*' or '*' for all. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| workspace_listA | List all accessible Fabric workspaces |
| workspace_getB | Get details of a specific workspace |
| workspace_createA | Create a new Fabric workspace |
| workspace_updateB | Update a workspace's name or description |
| workspace_deleteB | Delete a workspace |
| workspace_list_itemsA | List all items in a workspace, optionally filtered by type |
| lakehouse_listA | List all lakehouses in a workspace |
| lakehouse_getB | Get details of a specific lakehouse including SQL endpoint and OneLake paths |
| lakehouse_createA | Create a new lakehouse in a workspace (long-running operation). Schemas are enabled by default (preview). |
| lakehouse_updateB | Update a lakehouse's name or description |
| lakehouse_deleteB | Delete a lakehouse |
| lakehouse_list_tablesA | List all tables in a lakehouse. For schema-enabled lakehouses, automatically falls back to querying INFORMATION_SCHEMA via the SQL endpoint. |
| lakehouse_load_tableA | Load data into a lakehouse table from a file path (long-running operation). Not supported for schema-enabled lakehouses — use sql_endpoint_execute_query with COPY INTO or notebooks instead. |
| lakehouse_create_shortcutA | Create a OneLake shortcut in a lakehouse at any level (file, folder, table, or schema). For schema-enabled lakehouses (preview): set path='Tables' and name to the desired schema name to create a schema shortcut that imports all Delta tables from the target as a new schema. For table-level shortcuts within a schema: set path='Tables/'. Supports targets: OneLake, ADLS Gen2, Amazon S3, Google Cloud Storage, S3 Compatible, Dataverse, Azure Blob Storage, OneDrive/SharePoint. |
| lakehouse_get_sql_endpointC | Get the SQL endpoint details for a lakehouse |
| lakehouse_get_definitionA | Get the definition of a lakehouse (long-running). Writes definition files to the specified output directory. |
| lakehouse_update_definitionA | Update a lakehouse's definition (long-running). Accepts definition parts inline or a directory path. |
| lakehouse_list_shortcutsA | List all OneLake shortcuts in a lakehouse |
| lakehouse_get_shortcutB | Get details of a specific OneLake shortcut in a lakehouse |
| lakehouse_delete_shortcutA | Delete a OneLake shortcut from a lakehouse |
| warehouse_listA | List all warehouses in a workspace |
| warehouse_getA | Get details of a specific warehouse including connection string and provisioning status |
| warehouse_createA | Create a new warehouse in a workspace (long-running operation) |
| warehouse_updateB | Update a warehouse's name or description |
| warehouse_deleteB | Delete a warehouse |
| warehouse_get_sql_endpointB | Get the SQL connection details for a warehouse |
| warehouse_list_tablesA | List all tables in a warehouse |
| warehouse_get_definitionA | Get the definition of a warehouse (long-running). Writes definition files to the specified output directory. |
| warehouse_update_definitionA | Update a warehouse's definition (long-running). Accepts definition parts inline or a directory path. |
| notebook_listA | List all notebooks in a workspace |
| notebook_getB | Get details of a specific notebook |
| notebook_createA | Create a new notebook in a workspace (long-running operation) |
| notebook_updateA | Update a notebook's name or description |
| notebook_deleteC | Delete a notebook |
| notebook_get_definitionA | Get the content/definition of a notebook (long-running). Writes definition files to the specified output directory. |
| notebook_update_definitionA | Update the content/definition of a notebook (long-running). Reads definition files from the specified directory. |
| notebook_runC | Run a notebook on demand |
| notebook_get_run_statusA | Get the status of a notebook run |
| notebook_cancel_runA | Cancel a running notebook execution |
| notebook_attach_environmentA | Attach a Fabric Environment to a notebook so it uses that environment's compute/libraries. Mutates the notebook definition metadata (no local files involved). |
| notebook_detach_environmentA | Remove the attached environment from a notebook by deleting the environment binding from its definition metadata. |
| pipeline_listA | List all data pipelines in a workspace |
| pipeline_getC | Get details of a specific data pipeline |
| pipeline_createB | Create a new data pipeline in a workspace |
| pipeline_updateA | Update a pipeline's name or description |
| pipeline_deleteC | Delete a data pipeline |
| pipeline_runC | Run a data pipeline on demand |
| pipeline_get_run_statusB | Get the status of a pipeline run |
| pipeline_cancel_runA | Cancel a running pipeline execution |
| pipeline_list_runsA | List all run instances for a pipeline |
| pipeline_list_schedulesA | List all schedules for a pipeline |
| pipeline_create_scheduleC | Create a schedule for a pipeline |
| pipeline_update_scheduleB | Update an existing pipeline schedule |
| pipeline_delete_scheduleB | Delete a pipeline schedule |
| pipeline_get_definitionA | Get the definition of a data pipeline (long-running). Writes definition files to the specified output directory. |
| pipeline_update_definitionB | Update a data pipeline's definition (long-running). Reads definition files from the specified directory. |
| semantic_model_listA | List all semantic models in a workspace |
| semantic_model_get_detailsA | Get details (name, ID, description, etc.) of a specific semantic model — does not return the definition |
| semantic_model_create_bimA | Create a new semantic model with a BIM/JSON definition (long-running). Reads the model.bim JSON from the specified file path. |
| semantic_model_create_tmdlA | Create a new semantic model with a TMDL definition (long-running). Reads .tmdl and .pbism files from the specified directory. |
| semantic_model_update_detailsA | Update a semantic model's name or description — does not modify the definition |
| semantic_model_deleteB | Delete a semantic model |
| semantic_model_refreshC | Trigger a refresh of a semantic model via the Power BI API |
| semantic_model_execute_daxA | Execute a DAX query against a semantic model via the Power BI API |
| semantic_model_get_bimA | Get the full definition of a semantic model in TMSL/BIM JSON format (long-running). Writes the decoded model.bim to the specified output file path and returns the path. |
| semantic_model_get_tmdlA | Get the definition of a semantic model in TMDL format (human-readable, LLM-friendly). Writes all TMDL files to the specified output directory preserving the folder structure and returns the list of files written. |
| semantic_model_update_bimA | Update a semantic model's full definition from TMSL/BIM JSON (long-running). Reads the model.bim JSON from the specified file path. |
| semantic_model_update_tmdlA | Update a semantic model's definition from TMDL files (long-running). Reads .tmdl and .pbism files from the specified directory. |
| semantic_model_get_refresh_historyA | Get the refresh history of a semantic model via the Power BI API |
| semantic_model_take_overC | Take over ownership of a semantic model via the Power BI API |
| semantic_model_get_datasourcesB | Get the data sources of a semantic model via the Power BI API |
| report_listA | List all reports in a workspace |
| report_getC | Get details of a specific report |
| report_create_definitionA | Create a new report in a workspace (long-running operation). Reads PBIR definition files from the specified directory. |
| report_updateB | Update a report's name or description |
| report_deleteB | Delete a report |
| report_cloneC | Clone a report via the Power BI API |
| report_exportA | Export a report to a file format (PDF, PPTX, PNG, etc.) via the Power BI API. Returns an export ID to check status. |
| report_get_export_statusB | Get the status of a report export operation via the Power BI API |
| report_get_definitionA | Get the full definition of a report (PBIR or PBIR-Legacy format). Writes all definition files (report.json, pages, visuals, etc.) to the specified output directory and returns the list of files written. |
| report_update_definitionA | Update a report's full definition (PBIR or PBIR-Legacy). Reads definition files from the specified directory. |
| report_rebindA | Rebind a report to a different semantic model/dataset via the Power BI API |
| report_get_pagesA | Get the list of pages in a report via the Power BI API |
| report_get_datasourcesA | Get the data sources used by a report via the Power BI API |
| dataflow_listA | List all Dataflow Gen2 items in a workspace |
| dataflow_getA | Get details of a specific Dataflow Gen2 item |
| dataflow_createA | Create a new Dataflow Gen2 item in a workspace |
| dataflow_updateA | Update a Dataflow Gen2 item's name or description |
| dataflow_deleteA | Delete a Dataflow Gen2 item |
| dataflow_refreshA | Trigger a refresh of a Dataflow Gen2 item |
| dataflow_get_refresh_statusB | Get the status of a dataflow refresh job |
| dataflow_get_definitionA | Get the definition of a Dataflow Gen2 item (long-running). Writes definition files to the specified output directory. |
| eventhouse_listA | List all eventhouses in a workspace |
| eventhouse_getB | Get details of a specific eventhouse |
| eventhouse_createA | Create a new eventhouse in a workspace (long-running operation) |
| eventhouse_updateA | Update an eventhouse's name or description |
| eventhouse_deleteA | Delete an eventhouse |
| eventhouse_get_sql_endpointA | Get the query service URI and connection details for an eventhouse |
| eventhouse_execute_kqlC | Execute a KQL query against an eventhouse's KQL database |
| eventstream_listA | List all eventstreams in a workspace |
| eventstream_getB | Get details of a specific eventstream |
| eventstream_createA | Create a new eventstream in a workspace (long-running operation) |
| eventstream_updateB | Update an eventstream's name or description |
| eventstream_deleteB | Delete an eventstream |
| eventstream_get_definitionA | Get the definition of an eventstream (long-running). Writes definition files to the specified output directory and returns the list of files written. |
| eventstream_update_definitionA | Update the definition of an eventstream (long-running). Reads definition files from the specified directory. |
| reflex_listA | List all Reflex (Activator) items in a workspace |
| reflex_getB | Get details of a specific Reflex (Activator) item |
| reflex_createB | Create a new Reflex (Activator) item in a workspace |
| reflex_updateA | Update a Reflex (Activator) item's name or description |
| reflex_deleteB | Delete a Reflex (Activator) item |
| reflex_get_definitionA | Get the definition of a Reflex (Activator) item (long-running). Writes definition files to the specified output directory and returns the list of files written. |
| reflex_update_definitionA | Update a Reflex (Activator) item's definition (long-running). Accepts definition parts inline or a directory path. |
| graphql_api_listA | List all GraphQL API items in a workspace |
| graphql_api_getB | Get details of a specific GraphQL API item |
| graphql_api_createB | Create a new GraphQL API item in a workspace |
| graphql_api_updateA | Update a GraphQL API item's name or description |
| graphql_api_deleteB | Delete a GraphQL API item |
| graphql_api_get_definitionA | Get the GraphQL schema definition of a GraphQL API item (long-running). Writes definition files (.graphql, etc.) to the specified output directory and returns the list of files written. |
| graphql_api_execute_queryB | Execute a GraphQL query against a GraphQL API endpoint. Uses the Power BI scope token. |
| sql_endpoint_listA | List all SQL endpoints in a workspace |
| sql_endpoint_getB | Get details of a specific SQL endpoint, including connection string |
| sql_endpoint_get_connection_stringA | Get the TDS connection string for a SQL endpoint |
| sql_endpoint_execute_queryA | Execute a T-SQL query against a lakehouse or warehouse SQL endpoint |
| variable_library_listA | List all variable libraries in a workspace |
| variable_library_getA | Get details of a specific variable library, including its active value set name |
| variable_library_createA | Create a new variable library in a workspace (long-running). Optionally provide a directory containing the definition files (variables.json, settings.json, valueSets/*.json). |
| variable_library_updateB | Update a variable library's name, description, or active value set |
| variable_library_deleteB | Delete a variable library |
| variable_library_get_definitionA | Get the definition of a variable library (long-running). Writes all definition files (variables.json, settings.json, valueSets/*.json, .platform) to the specified output directory and returns the list of files written. |
| variable_library_update_definitionB | Update a variable library's definition (long-running). Reads definition files (variables.json, settings.json, valueSets/*.json, .platform) from the specified directory. |
| git_get_connectionB | Get the Git connection details for a workspace |
| git_get_statusA | Get the Git status of items in a workspace (shows sync state between workspace and remote) |
| git_connectB | Connect a workspace to a Git repository (Azure DevOps or GitHub) |
| git_disconnectA | Disconnect a workspace from its Git repository |
| git_initialize_connectionA | Initialize a Git connection after connecting (long-running). Chooses whether workspace or remote content takes precedence. |
| git_commit_to_gitA | Commit workspace changes to the connected Git repository (long-running) |
| git_update_from_gitA | Update workspace from the connected Git repository (long-running) |
| git_get_credentialsA | Get the Git credentials configuration for the current user in a workspace |
| git_update_credentialsB | Update the Git credentials configuration for the current user in a workspace |
| deployment_pipeline_listA | List all deployment pipelines accessible to the user |
| deployment_pipeline_getB | Get details of a specific deployment pipeline |
| deployment_pipeline_createC | Create a new deployment pipeline |
| deployment_pipeline_updateB | Update a deployment pipeline's name or description |
| deployment_pipeline_deleteC | Delete a deployment pipeline |
| deployment_pipeline_list_stagesC | List all stages in a deployment pipeline |
| deployment_pipeline_list_stage_itemsA | List all items in a specific deployment pipeline stage |
| deployment_pipeline_assign_workspaceB | Assign a workspace to a deployment pipeline stage |
| deployment_pipeline_unassign_workspaceA | Unassign a workspace from a deployment pipeline stage |
| deployment_pipeline_deployA | Deploy items from one stage to another in a deployment pipeline (long-running) |
| deployment_pipeline_list_operationsA | List operations (deployment history) for a deployment pipeline |
| deployment_pipeline_get_operationB | Get details of a specific deployment pipeline operation |
| mirrored_database_listA | List all mirrored databases in a workspace |
| mirrored_database_getC | Get details of a specific mirrored database |
| mirrored_database_createA | Create a new mirrored database in a workspace (long-running) |
| mirrored_database_updateB | Update a mirrored database's name or description |
| mirrored_database_deleteA | Delete a mirrored database |
| mirrored_database_get_definitionA | Get the definition of a mirrored database (long-running). Writes definition files to the specified output directory. |
| mirrored_database_update_definitionA | Update a mirrored database's definition (long-running). Accepts definition parts inline or a directory path. |
| mirrored_database_start_mirroringC | Start mirroring for a mirrored database |
| mirrored_database_stop_mirroringB | Stop mirroring for a mirrored database |
| mirrored_database_get_mirroring_statusB | Get the mirroring status of a mirrored database |
| mirrored_database_get_tables_mirroring_statusA | Get the mirroring status of individual tables in a mirrored database |
| kql_database_listA | List all KQL databases in a workspace |
| kql_database_getC | Get details of a specific KQL database |
| kql_database_createA | Create a new KQL database in a workspace (long-running). Requires a parent eventhouse. |
| kql_database_updateA | Update a KQL database's name or description |
| kql_database_deleteB | Delete a KQL database |
| kql_database_get_definitionB | Get the definition of a KQL database (long-running). Writes definition files to the specified output directory. |
| kql_database_update_definitionA | Update a KQL database's definition (long-running). Accepts definition parts inline or a directory path. |
| ml_model_listB | List all ML models in a workspace |
| ml_model_getB | Get details of a specific ML model |
| ml_model_createA | Create a new ML model in a workspace (long-running) |
| ml_model_updateA | Update an ML model's name or description |
| ml_model_deleteB | Delete an ML model |
| ml_experiment_listA | List all ML experiments in a workspace |
| ml_experiment_getA | Get details of a specific ML experiment |
| ml_experiment_createB | Create a new ML experiment in a workspace (long-running) |
| ml_experiment_updateB | Update an ML experiment's name or description |
| ml_experiment_deleteA | Delete an ML experiment |
| copy_job_listA | List all copy jobs in a workspace |
| copy_job_getB | Get details of a specific copy job |
| copy_job_createB | Create a new copy job in a workspace |
| copy_job_updateA | Update a copy job's name or description |
| copy_job_deleteB | Delete a copy job |
| copy_job_get_definitionA | Get the definition of a copy job (long-running). Writes definition files to the specified output directory. |
| copy_job_update_definitionB | Update a copy job's definition (long-running). Accepts definition parts inline or a directory path. |
| copy_job_runC | Run a copy job on demand |
| copy_job_get_run_statusA | Get the status of a copy job run |
| copy_job_cancel_runB | Cancel a running copy job |
| copy_job_list_runsA | List all run instances for a copy job |
| external_data_share_listA | List all external data shares for an item |
| external_data_share_getA | Get details of a specific external data share |
| external_data_share_createA | Create a new external data share for an item |
| external_data_share_revokeC | Revoke an external data share |
| environment_listA | List all environments in a workspace |
| environment_getA | Get metadata of a specific environment including its publish state |
| environment_get_definitionA | Get the environment public definition (long-running). Writes definition files to the specified output directory. |
| environment_createA | Create a new environment in a workspace. Optionally seed with a definition by passing definitionDirectoryPath. |
| environment_updateA | Update an environment's display name or description |
| environment_update_definitionB | Override the environment public definition (long-running). Reads definition files from the specified directory. |
| environment_deleteC | Delete an environment |
| environment_publishA | Trigger an environment publish to make staging changes effective (long-running) |
| environment_cancel_publishA | Cancel an ongoing environment publish operation |
| environment_list_staging_librariesA | List staging libraries (published + pending) for an environment |
| environment_export_staging_external_librariesA | Export the staging external libraries as an environment.yml file. Writes the yaml to disk. |
| environment_import_staging_external_librariesA | Upload an environment.yml file to replace the environment's external libraries list. Reads yaml from a file. |
| environment_upload_staging_custom_libraryA | Upload a custom library file (.jar, .py, .whl, .tar.gz, max 100MB) into environment staging. Reads the file from disk. |
| environment_delete_staging_custom_libraryA | Delete a custom library from environment staging by full filename (e.g., samplelibrary.jar) |
| environment_remove_staging_external_libraryA | Remove a single external library from environment staging (one at a time) |
| environment_get_staging_spark_computeA | Get the staging Spark compute configuration for an environment |
| environment_update_staging_spark_computeA | Update the staging Spark compute configuration (pool, cores, memory, runtimeVersion, sparkProperties). Set a sparkProperty value to null to remove it. |
| environment_list_published_librariesA | List published (currently effective) libraries for an environment |
| environment_get_published_spark_computeA | Get the published (currently effective) Spark compute configuration |
| environment_export_published_external_librariesA | Export the published external libraries as an environment.yml file. Writes the yaml to disk. |
| auth_get_current_accountA | Show the current Azure identity, tenant, and token expiry by decoding the Fabric JWT |
| auth_list_available_accountsA | List Azure subscriptions and tenants the local user has logged into via 'az login'. Reads local CLI state only — does not query Entra ID or list other users. |
| auth_switch_tenantA | Switch to a different Azure tenant. Acquires a new token to verify access; rolls back on failure. |
| auth_clear_token_cacheA | Clear cached authentication tokens to force re-acquisition on next API call |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 219 tools
Most tools are clearly distinguished by a resource prefix and action verb, making the majority of the 219 tools easy to tell apart. Some ambiguity exists around SQL endpoint access (sql_endpoint_get vs lakehouse_get_sql_endpoint vs warehouse_get_sql_endpoint) and semantic model definition format variants (get_bim vs get_tmdl vs get_details), but the descriptions largely resolve these cases.
The naming convention is highly consistent throughout: resource_action in snake_case, with predictable verbs like list, get, create, update, delete, run, and cancel. Even format-specific variants like semantic_model_create_bim vs semantic_model_create_tmdl follow the same structural pattern. This makes the tool surface very predictable despite its size.
219 tools is an extreme count that far exceeds the 3-15 tool range considered well-scoped and exceeds the 50+ threshold for extreme mismatch. Even for a broad Microsoft Fabric API, this single server creates severe context bloat, high selection overhead, and poor agent usability. The surface should be split into multiple focused MCP servers or dramatically consolidated.
The tool set covers a very broad Fabric domain: CRUD for nearly every item type, definition management, run/status/cancel operations, git integration, deployment pipelines, environment management, and auth. Minor gaps exist, such as missing dataflow_update_definition and graphql_api_update_definition, but these can be worked around with recreate or direct API usage. No critical dead ends block common workflows.