An open-source MCP server to perform operations on Microsoft Fabric, like administration and management of Fabric capacities. At this moment, this repo has an initial set of tools to manage Capacities, but it will be expanded to further support additional tools and Fabric administration workloads.
- Exposes Fabric admin operations as MCP tools;
- Uses secure, yet flexible, authentication mechanisms for Azure and Fabric, like Service Principal and Managed Identities;
- FastAPI + FastMCP for a modern, async, extensible backend;
You can use any MCP Client to interact with this MCP server. Below, is a sample showing how to interact with it using GitHub Copilot on VSCode as a MCP Client:
This example demonstrates how the MCP tools are exposed and can be accessed for managing Microsoft Fabric resources.
server.py— Main entry point to start the MCP servercommon.py— Shared utilities and loggingsrc/capacity/— Logic to interact with Fabric and expose then as MCP toolsrequirements.txt— Python dependencies
-
Install dependencies:
pip install -r requirements.txt
-
Set up authentication:
- The server uses
DefaultAzureCredentialfor secure Azure API access. - You can authenticate using:
- Azure CLI: Run
az loginin your terminal. - Managed Identity: If running in Azure, ensure the managed identity has the required permissions.
- Service Principal: Create a
.envfile in the project root with applicable variables (see "Using a Service Principal for Authentication" section below for details).
- Azure CLI: Run
- The server uses
-
Run the MCP server locally:
python server.py
-
Prepare your environment variables:
- Copy
env.exampleto.envand fill in your Azure credentials.
- Copy
-
Build the Docker image:
docker build -t fabric-admin-mcp . -
Run the Docker container:
docker run --env-file .env -p 8000:8000 fabric-admin-mcp
-
Access the MCP server:
- The server will start at http://127.0.0.1:8000/mcp/.
-
Test with VS Code as a Client:
- Open the Command Palette (
Ctrl+Shift+P), search for "MCP: Connect to Server", and enterhttp://127.0.0.1:8000/mcp/(change the address if running it remotely). - You can now use MCP tools exposed by this server directly from VS Code using Agent Mode.
- Open the Command Palette (
- Python 3.8+;
- Azure credentials with proper access to the backend (Azure/Fabric admin)/
-
Create a Service Principal (if you don't have one):
az ad sp create-for-rbac --name <your-app-name> --role Contributor --scopes /subscriptions/<your-subscription-id>
Note the
appId(Client ID),tenant, andpassword(Client Secret) from the output. -
Create a
.envfile in the project root: Copy.env.exampleto.envand fill in your values:AZURE_CLIENT_ID=your-service-principal-client-id AZURE_TENANT_ID=your-tenant-id AZURE_CLIENT_SECRET=your-service-principal-client-secret
-
Authorize the Service Principal: Ensure the Service Principal has appropriate permissions. For example, at least
Contributorat subscription or Resource Group level to manage Fabric Capacities. Additional Admin API access will be required for additional tools yet to be developed. -
Run the server: The server will automatically use these credentials for authentication via
DefaultAzureCredential.
- Add option to deploy as a Docker image.
- Add option to deploy as an Azure Function.
- Add tools for additional Fabric management operations, such as Workspace management and reviewing capacity settings.
- Improve documentation and provide more usage examples.
- Add automated tests and CI/CD pipeline for deployments.
