MCP Server¶
This page covers installing, configuring, and using udp-cicd as an MCP (Model Context Protocol) server in GitHub Copilot, Claude Code, Claude Desktop, or any MCP-compatible client. The MCP server lets you manage Fabric workspaces conversationally through 14 tools.
1. Install¶
The MCP server ships as a .NET global tool:
2. Configure¶
2.1 GitHub Copilot¶
Add to your project's .vscode/mcp.json:
Or add to your VS Code user settings (settings.json) under "mcp.servers" to use across all projects.
2.2 Claude Code¶
Add to your project's .claude/settings.json:
Or add globally to ~/.claude/settings.json to use across all projects.
2.3 Claude Desktop¶
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
3. Prerequisites¶
| Requirement | Detail |
|---|---|
| .NET SDK | 9.0 or later (required for the global tool) |
| Azure CLI | 2.50 or later, authenticated with az login |
| Fabric capacity | Active capacity (F2 or larger) |
| Workspace role | Admin or Contributor on the target workspace |
| Project files | udp.yml present in your project directory |
Run udp-cicd diag to verify everything is configured correctly.
4. Available tools¶
The server exposes 14 tools:
| Tool | Description | Example prompt |
|---|---|---|
udp_validate |
Validate udp.yml | "Validate my Fabric deployment" |
udp_plan |
Preview deployment changes | "What would change if I deploy to dev?" |
udp_deploy |
Deploy to a target | "Deploy to dev" |
udp_destroy |
Tear down resources | "Destroy the test environment" |
udp_status |
Show deployed resources | "What's deployed in prod?" |
udp_drift |
Detect out-of-band changes | "Check for drift in staging" |
udp_run |
Run a notebook or pipeline | "Run the ingest_to_bronze notebook in dev" |
udp_history |
Show deployment history | "Show me recent deployments" |
udp_diag |
Diagnose issues | "Check if my Fabric setup is working" |
udp_list_templates |
List templates | "What templates are available?" |
udp_list_workspaces |
List workspaces | "Show me all Fabric workspaces" |
udp_list_capacities |
List capacities | "What Fabric capacities do I have?" |
udp_export |
Export items from a workspace | "Export the prod workspace items" |
udp_generate |
Generate udp.yml from a workspace (optionally importing deployed Entra/Azure resources via include_entra / include_azure) |
"Generate a project from my existing workspace, including its Entra groups and Azure resources" |
5. Example conversations¶
"What's in my Fabric workspace?"
The AI calls
udp_statusand responds:"Your dev workspace has 12 items deployed: 3 lakehouses (bronze, silver, gold), 3 notebooks (ingest_to_bronze, transform_to_silver, aggregate_to_gold), 2 pipelines (daily_etl, weekly_refresh), 1 Spark environment, 1 warehouse, 1 SQL analytics endpoint, and 1 data agent. Last deployment was 3 hours ago. No drift detected."
"Deploy my project to dev"
The AI first calls
udp_validateto check your deployment, thenudp_planto preview changes:"Your udp.yml is valid. Here's what will happen: 3 lakehouses will be created, 3 notebooks uploaded, and 2 pipelines configured with schedules. Total: 8 new resources. No existing resources will be modified. Should I proceed with the deployment?"
After you confirm, it calls
udp_deployand reports:"Deployed 8 resources to sales-analytics-dev in 45 seconds. All items created successfully. You can open the workspace at https://app.udp.microsoft.com/..."
"Something changed in prod that I didn't deploy"
The AI calls
udp_driftand responds:"I found drift in 2 items. A notebook 'manual_fix' was added directly in the portal (not in your udp.yml). And the 'daily_etl' pipeline schedule was changed from 6:00 AM to 8:00 AM. Would you like me to update your udp.yml to match, or redeploy to revert the changes?"
"Run the ETL pipeline"
The AI calls
udp_runand responds:"I've submitted the 'daily_etl' pipeline in the dev workspace. Job ID: a3f8c... You can monitor progress in the Fabric portal under Monitoring Hub. I'll check back -- want me to poll the status?"
"Set up a new Fabric project"
The AI calls
udp_list_capacitiesandudp_list_templates, then responds:"You have 2 capacities available: 'Team-Dev' (F8, West US 2) and 'Prod' (F16, East US). I found 4 templates: medallion (bronze/silver/gold lakehouse), starter (single lakehouse + notebook), warehouse (SQL-first with views), and custom (empty scaffold). Which template and capacity would you like to use?"
6. Setting up both MCP servers¶
For full coverage, use udp-cicd-mcp alongside Microsoft's Fabric MCP server. udp-cicd-mcp lets the AI act on your workspace (deploy, plan, status), while Microsoft's Fabric MCP gives the AI knowledge of Fabric APIs and best practices.
6.1 GitHub Copilot (.vscode/mcp.json)¶
{
"servers": {
"udp-cicd": {
"command": "udp-cicd-mcp"
},
"udp": {
"command": "npx",
"args": ["-y", "@anthropic-ai/mcp-server-fetch", "https://github.com/microsoft/mcp"]
}
}
}
Check Microsoft's Fabric MCP repo for the latest install command -- the
argsabove are illustrative.
6.2 Claude Code (.claude/settings.json)¶
{
"mcpServers": {
"udp-cicd": {
"command": "udp-cicd-mcp"
},
"udp": {
"command": "npx",
"args": ["-y", "@anthropic-ai/mcp-server-fetch", "https://github.com/microsoft/mcp"]
}
}
}
6.3 Claude Desktop (claude_desktop_config.json)¶
{
"mcpServers": {
"udp-cicd": {
"command": "udp-cicd-mcp"
},
"udp": {
"command": "npx",
"args": ["-y", "@anthropic-ai/mcp-server-fetch", "https://github.com/microsoft/mcp"]
}
}
}
6.4 What each server provides¶
| MCP Server | Purpose | Example |
|---|---|---|
| udp-cicd-mcp | Manage your Fabric project: deploy, plan, status, run, drift, destroy | "Deploy to dev", "Check for drift" |
| Microsoft Fabric MCP | Fabric API docs, best practices, item schemas | "How do I configure a pipeline trigger?", "What Spark versions does Fabric support?" |
Together, the AI can both understand Fabric and act on your workspace.
7. Troubleshooting¶
| Symptom | Resolution |
|---|---|
udp-cicd-mcp: command not found |
Confirm you installed with dotnet tool install --global udp-cicd-mcp. Check that the .NET global tools directory (~/.dotnet/tools on macOS/Linux, %USERPROFILE%\.dotnet\tools on Windows) is in your PATH. |
| Authentication error | Run az login in your terminal first, or set the AZURE_TENANT_ID, AZURE_CLIENT_ID, and AZURE_CLIENT_SECRET environment variables for service principal authentication. |
| Tools not showing up | Restart your IDE after adding the MCP configuration. Check the MCP server logs for errors. |