MCP Hub
Back to servers

Fabric Data Engineering MCP Server

Provides full execution and management capabilities for Microsoft Fabric Data Engineering workloads, including notebooks, pipelines, Lakehouses, and Spark jobs. It enables users to trigger runs, monitor status, manage workspace items, and configure job schedules through natural language.

Updated
Feb 4, 2026

Fabric Data Engineering MCP Server

A secure Model Context Protocol (MCP) server for Microsoft Fabric Data Engineering operations. Execute notebooks, pipelines, Spark jobs, and manage Lakehouses through a standardized interface.

Version

v1.0.1 - Security-hardened release

Features

  • Workspace Management: List workspaces and items
  • Notebook Operations: Run, monitor, and cancel notebook executions
  • Pipeline Operations: Execute and manage data pipelines
  • Lakehouse Management: Create, delete, and load data into Lakehouses
  • Spark Jobs: Run Spark job definitions
  • Scheduling: Create and manage schedules for notebooks, pipelines, and Spark jobs
  • Health Check: Monitor server health and connectivity

Security Features

This release includes comprehensive security hardening:

  • Input Validation: UUID format validation for all resource IDs
  • Parameter Limits: Max 50 parameters per execution, 1KB per value
  • Rate Limiting: Configurable per-category rate limits
  • Audit Logging: Structured JSON logs for compliance (SOC 2, HIPAA)
  • Error Sanitization: Credentials never exposed in error messages
  • Read-Only Mode: Disable destructive operations
  • Path Traversal Protection: Sanitized file paths for OneLake operations

Installation

npm install fabric-data-engineering-mcp

Or run directly with npx:

npx fabric-data-engineering-mcp

Configuration

Required Environment Variables

Authentication requires one of the following configurations:

Option 1: Service Principal (Recommended for Production)

export AZURE_TENANT_ID="your-tenant-id"
export AZURE_CLIENT_ID="your-client-id"
export AZURE_CLIENT_SECRET="your-client-secret"
export FABRIC_AUTH_METHOD="client_credentials"

Option 2: Azure CLI (Development)

az login
# No additional env vars needed, uses FABRIC_AUTH_METHOD="default"

Option 3: Interactive Browser

export AZURE_TENANT_ID="your-tenant-id"
export AZURE_CLIENT_ID="your-client-id"
export FABRIC_AUTH_METHOD="interactive"

Optional Environment Variables

VariableDefaultDescription
FABRIC_DEBUGfalseEnable verbose error messages
FABRIC_READ_ONLYfalseDisable destructive operations
FABRIC_AUDIT_LOGtrueEnable audit logging to stderr
FABRIC_RATE_LIMITtrueEnable rate limiting
FABRIC_RATE_LIMIT_GLOBAL100Max requests per minute (global)
FABRIC_RATE_LIMIT_WRITE20Max write operations per minute
FABRIC_RATE_LIMIT_DELETE10Max delete operations per minute
FABRIC_TIMEOUT_MS30000HTTP request timeout
FABRIC_LRO_TIMEOUT_MS300000Long-running operation timeout
FABRIC_MAX_RETRIES3Max retry attempts
FABRIC_TOKEN_REFRESH_BUFFER_MINUTES2Token refresh buffer

Claude Desktop Configuration

Add to your Claude Desktop configuration file:

{
  "mcpServers": {
    "fabric-data-engineering": {
      "command": "npx",
      "args": ["-y", "fabric-data-engineering-mcp@1.0.1"],
      "env": {
        "AZURE_TENANT_ID": "your-tenant-id",
        "AZURE_CLIENT_ID": "your-client-id",
        "AZURE_CLIENT_SECRET": "your-secret",
        "FABRIC_DEBUG": "false",
        "FABRIC_READ_ONLY": "false",
        "NODE_ENV": "production"
      }
    }
  }
}

Production Configuration (Recommended)

{
  "mcpServers": {
    "fabric-data-engineering": {
      "command": "npx",
      "args": ["-y", "fabric-data-engineering-mcp@1.0.1"],
      "env": {
        "AZURE_TENANT_ID": "your-tenant-id",
        "AZURE_CLIENT_ID": "your-client-id",
        "AZURE_CLIENT_SECRET": "your-secret",
        "FABRIC_DEBUG": "false",
        "FABRIC_READ_ONLY": "false",
        "FABRIC_AUDIT_LOG": "true",
        "FABRIC_RATE_LIMIT": "true",
        "FABRIC_TIMEOUT_MS": "30000",
        "NODE_ENV": "production"
      }
    }
  }
}

Available Tools

Workspace Tools

ToolDescription
workspace_listList all accessible workspaces
workspace_getGet details of a specific workspace
workspace_items_listList items in a workspace

Notebook Tools

ToolDescription
notebook_listList notebooks in a workspace
notebook_runExecute a notebook (max 50 parameters)
notebook_run_statusCheck notebook run status
notebook_run_cancelCancel a running notebook

Pipeline Tools

ToolDescription
pipeline_listList pipelines in a workspace
pipeline_runExecute a pipeline (max 50 parameters)
pipeline_run_statusCheck pipeline run status
pipeline_run_cancelCancel a running pipeline

Lakehouse Tools

ToolDescription
lakehouse_listList Lakehouses in a workspace
lakehouse_getGet Lakehouse details
lakehouse_createCreate a new Lakehouse
lakehouse_deleteDelete a Lakehouse
lakehouse_tables_listList tables in a Lakehouse
lakehouse_table_loadLoad data into a table

Spark Tools

ToolDescription
spark_job_listList Spark job definitions
spark_job_runExecute a Spark job
spark_job_statusCheck Spark job status
spark_job_cancelCancel a running Spark job

Scheduler Tools

ToolDescription
schedule_listList schedules for an item
schedule_createCreate a new schedule
schedule_deleteDelete a schedule
schedule_enableEnable a schedule
schedule_disableDisable a schedule

Health Tools

ToolDescription
health_checkCheck server health and connectivity

Input Validation

All resource IDs must be valid UUID v4 format:

xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx

Where:

  • x is a hexadecimal digit (0-9, a-f)
  • y is one of 8, 9, a, or b

Parameter Limits

LimitValue
Max parameters per execution50
Max parameter value length1,024 characters
Max total parameter size1 MB
Max display name length256 characters
Max description length4,096 characters

Rate Limiting

Default rate limits (per minute):

CategoryDefault Limit
Read operations60/min
Write/Execute operations20/min
Delete operations10/min
Global (all operations)100/min

Override with environment variables:

export FABRIC_RATE_LIMIT_GLOBAL=200
export FABRIC_RATE_LIMIT_WRITE=50
export FABRIC_RATE_LIMIT_DELETE=20

Audit Logging

When enabled (FABRIC_AUDIT_LOG=true), structured JSON logs are written to stderr:

{
  "timestamp": "2024-01-15T09:00:00.000Z",
  "type": "audit",
  "correlationId": "1705312800000-abc123def",
  "toolName": "notebook_run",
  "action": "success",
  "workspaceId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "resourceId": "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy",
  "resourceType": "Notebook",
  "durationMs": 1234
}

Log Fields

FieldDescription
timestampISO 8601 timestamp
typeAlways "audit"
correlationIdUnique request identifier
toolNameName of the tool invoked
action"invoke", "success", or "failure"
workspaceIdWorkspace ID (if applicable)
resourceIdResource ID (if applicable)
resourceTypeType of resource
durationMsExecution time in milliseconds
errorCodeError code (on failure)
errorMessageSanitized error message (on failure)

Read-Only Mode

Enable read-only mode to disable all destructive operations:

export FABRIC_READ_ONLY=true

Disabled tools in read-only mode:

  • lakehouse_create, lakehouse_delete, lakehouse_table_load
  • notebook_run, notebook_run_cancel
  • pipeline_run, pipeline_run_cancel
  • spark_job_run, spark_job_cancel
  • schedule_create, schedule_delete, schedule_enable, schedule_disable

Error Handling

Errors are sanitized to prevent credential leakage:

  • In production (FABRIC_DEBUG=false): Generic error messages
  • In debug mode (FABRIC_DEBUG=true): Detailed but sanitized messages

Sensitive data patterns that are redacted:

  • client_secret=***
  • Bearer ***
  • password=***
  • JWT tokens
  • Long hex strings (potential secrets)

Development

# Install dependencies
npm install

# Run in development mode
npm run dev

# Build for production
npm run build

# Type check
npm run typecheck

# Security audit
npm audit

Azure Permissions

The service principal or user must have the following permissions in Microsoft Fabric:

OperationRequired Role
List/Get workspacesViewer
List itemsViewer
Run notebooks/pipelinesContributor
Create/Delete LakehousesContributor
Manage schedulesContributor

Security Best Practices

  1. Use Service Principals: Avoid interactive auth in production
  2. Enable Read-Only Mode: When write access isn't needed
  3. Enable Audit Logging: For compliance and monitoring
  4. Pin Dependencies: Use exact versions in package.json
  5. Rotate Secrets: Regularly rotate client secrets
  6. Use Azure Key Vault: Store secrets securely
  7. Monitor Logs: Integrate with SIEM for alerting

Troubleshooting

Authentication Errors

# Enable debug mode for detailed errors
export FABRIC_DEBUG=true

Common issues:

  • AADSTS700016: Application not found - check CLIENT_ID
  • AADSTS7000215: Invalid secret - check CLIENT_SECRET
  • AADSTS50076: MFA required - use Azure CLI auth

Rate Limit Errors

Reduce request frequency or increase limits:

export FABRIC_RATE_LIMIT_GLOBAL=200

Timeout Errors

Increase timeout for long operations:

export FABRIC_TIMEOUT_MS=60000
export FABRIC_LRO_TIMEOUT_MS=600000

Changelog

v1.0.1 (Security Release)

  • Security: Fixed ReDoS vulnerability in MCP SDK (GHSA-8r9q-7v3j-jr4g)
  • Security: Fixed DNS rebinding vulnerability (GHSA-w48q-cv73-mx4w)
  • Security: Added UUID validation for all resource IDs
  • Security: Added parameter count and size limits
  • Security: Implemented error message sanitization
  • Security: Added rate limiting at tool layer
  • Security: Added audit logging for compliance
  • Security: Added read-only mode
  • Feature: Added health_check tool
  • Fix: Reduced token refresh buffer from 5 to 2 minutes
  • Fix: Pinned all dependency versions

v1.0.0

  • Initial release

License

MIT

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Run tests and security audit
  4. Submit a pull request

Support

For issues and feature requests, please open a GitHub issue.

Reviews

No reviews yet

Sign in to write a review