MCP server for Microsoft Fabric: workspaces, lakehouses, warehouses, schemas, guarded read-only SQL, notebook jobs, and DAX.
Server has 13 tools with consistent naming (verb_noun pattern) and all have descriptions. However, parameter descriptions are minimal (often 1-2 lines), output schemas are not documented, and error handling lacks recovery guidance. Most tools accept optional workspace/database parameters that could benefit from clearer constraints. The guard() wrapper prevents stack trace leakage but doesn't provide actionable error messages. Schemas are present in FastMCP decorators but lack detail on return types and pagination.
Describe a table's columns via INFORMATION_SCHEMA.
Run a DAX EVALUATE query against a Power BI semantic model.
Get one item's metadata by id.
Get the status of a job instance started by run_notebook.
Report configuration and whether the Fabric API answers.
List items in a workspace. item_type filters, e.g. Lakehouse, Notebook.
Output schemas not documented. Tools return strings (via guard wrapper) but LLMs cannot infer structure of JSON/CSV/table data returned. Downstream tools cannot reliably extract IDs or references for chaining.
Error messages are generic ('Error: <exception>') and do not guide recovery. No distinction between retryable (transient API failure) vs user-fixable (invalid workspace name) vs fatal errors. LLM cannot decide next action.
Optional workspace/database parameters lack constraints. Descriptions say 'Optional workspace ID or name' but do not explain: What happens if omitted? Is there a default? Can both ID and name be passed? LLM must guess.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | <=2025-11-25 | v2 |
List lakehouses in a workspace.
List notebooks in a workspace.
List tables: lakehouse via the REST tables API, database via SQL.
List warehouses in a workspace.
List Fabric workspaces visible to the signed-in identity.
Start a notebook job. Returns the job instance id; does not block.
Run one SQL statement. Read-only unless FABRIC_ALLOW_WRITES is set.
run_sql accepts 'parameters' as Mapping[str, Any] but no description of format, constraints, or SQL injection prevention. LLM cannot safely construct parameterized queries.
List tools (list_workspaces, list_items, list_tables, etc.) do not document pagination, result limits, or total counts. Returning all results could exhaust context window; no guidance on how to iterate.