Power Platform Pipeline MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Power Platform Pipeline MCP Serverlist my pipelines"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Power Platform Pipeline MCP Server
A Model Context Protocol (MCP) server that exposes Power Platform Pipeline operations as tools for Copilot Studio agents and any MCP-compatible client.
Features
Category | Tools |
Pipeline Discovery |
|
Deployments |
|
Approvals |
|
Configuration |
|
Architecture
Copilot Studio / MCP Client
│ HTTP (Streamable HTTP transport)
▼
Express HTTP Server (POST /mcp, GET /mcp SSE, DELETE /mcp)
│
McpServer (@modelcontextprotocol/sdk)
│
┌─────┴────────────────────────┐
│ │
Dataverse Web API PAC CLI
(Axios + MSAL OAuth2) (child_process)Prerequisites
Node.js 20+
PAC CLI installed and on
PATH— required fordeploy_solution. Install via:dotnet tool install --global Microsoft.PowerApps.CLI.ToolEntra ID App Registration with:
Client credentials (client ID + secret)
API permissions:
Dynamics CRM → user_impersonation(delegated) or assigned a system administrator role in the target environment as an application userThe same service principal is used for all Dataverse calls AND the
UpdateApprovalStatusapproval action — this is a Microsoft requirement
Setup
1. Clone and install
git clone https://github.com/MattCollins-Jones/power-platform-pipeline-mcp.git
cd power-platform-pipeline-mcp
npm install2. Configure environment variables
cp .env.example .env
# Edit .env with your valuesVariable | Description |
| App registration client ID |
| App registration client secret |
| Entra ID tenant ID |
| Environment root URL, e.g. |
| Port to listen on (default: |
3. Authenticate PAC CLI (development)
For local development, authenticate the PAC CLI manually before starting the server:
pac auth create \
--kind ServicePrincipal \
--applicationId $AZURE_CLIENT_ID \
--clientSecret $AZURE_CLIENT_SECRET \
--tenant $AZURE_TENANT_ID \
--environment $DATAVERSE_URL4. Build and start
npm run build
npm startOr for development with hot-reload:
npm run devDocker
Build and run with Docker (PAC CLI auth is handled by docker-entrypoint.sh):
docker build -t pp-pipeline-mcp .
docker run -p 3000:3000 \
-e AZURE_CLIENT_ID=... \
-e AZURE_CLIENT_SECRET=... \
-e AZURE_TENANT_ID=... \
-e DATAVERSE_URL=https://yourorg.crm.dynamics.com \
pp-pipeline-mcpAzure App Service / Container Apps Deployment
Build the Docker image and push to Azure Container Registry (ACR):
az acr build --registry <your-acr> --image pp-pipeline-mcp:latest .Create a Container App or App Service instance pointing to the image.
Set the four required environment variables as application settings.
The
docker-entrypoint.shwill authenticate PAC CLI on each container start.
Tip: Use Managed Identity with a federated credential to avoid storing the client secret.
Connecting from Copilot Studio
Deploy the server to a publicly accessible HTTPS endpoint (e.g.
https://your-app.azurewebsites.net).In Copilot Studio, go to Settings → AI Capabilities → Model Context Protocol.
Add a new MCP server with the URL:
https://your-app.azurewebsites.net/mcpAll 12 tools will be discovered automatically and made available to your agent.
Tool Reference
list_pipelines
Lists all deployment pipelines in the environment. No parameters required.
get_pipeline_stages
Parameter | Type | Description |
|
| GUID of the pipeline from |
deploy_solution
Triggers a PAC CLI deployment. PAC CLI must be authenticated on the server.
Parameter | Type | Description |
|
| Unique name of the solution |
|
| Target stage GUID from |
|
| Current version, e.g. |
|
| Version after deploy, e.g. |
|
| Source environment URL |
get_deployment_status
Parameter | Type | Description |
|
| GUID of the stage run |
get_deployment_history
Parameter | Type | Description |
|
| Stage GUID to query |
|
| Optional solution filter |
|
| Max records (1–50, default 20) |
list_pending_approvals
Parameter | Type | Description |
|
| Optional stage filter |
approve_deployment
Parameter | Type | Description |
|
| Stage run to approve |
|
| Optional comments |
reject_deployment
Parameter | Type | Description |
|
| Stage run to reject |
|
| Reason for rejection |
list_environment_variables
Parameter | Type | Description |
|
| Solution unique name |
set_environment_variable
Parameter | Type | Description |
|
| Definition GUID |
|
| New value |
|
| Existing value GUID (omit to create) |
list_connection_references
Parameter | Type | Description |
|
| Solution unique name |
update_connection_reference
Parameter | Type | Description |
|
| Connection reference GUID |
|
| Target connection ID |
Security Notes
Store
AZURE_CLIENT_SECRETin Azure Key Vault and reference it as an App Service secret — never commit it to source control.The service principal must be added as an Application User in the Power Platform Admin Centre with the appropriate security role for each environment it operates in.
The
UpdateApprovalStatusDataverse action requires the caller to be the service principal that owns the pipeline connection — this server satisfies that requirement automatically.
Project Structure
src/
index.ts — MCP server entry point, Express HTTP transport
auth/
msalClient.ts — MSAL token acquisition (client credentials)
clients/
dataverseClient.ts — Axios Dataverse Web API client with auth interceptor
pacCliClient.ts — child_process wrapper for PAC CLI
tools/
pipelines.ts — list_pipelines, get_pipeline_stages
deployments.ts — deploy_solution, get_deployment_status, get_deployment_history
approvals.ts — approve_deployment, reject_deployment, list_pending_approvals
configuration.ts — env vars, connection references
types/
index.ts — Shared TypeScript interfacesThis server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/MattCollins-Jones/power-platform-pipeline-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server