Power Platform Pipeline MCP Server

Power Platform Pipeline MCP Server

Exposes Power Platform Pipeline operations as MCP tools for Copilot Studio agents, enabling pipeline discovery, deployments, approvals, and configuration management.

Category
访问服务器

README

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 list_pipelines, get_pipeline_stages
Deployments deploy_solution, get_deployment_status, get_deployment_history
Approvals list_pending_approvals, approve_deployment, reject_deployment
Configuration list_environment_variables, set_environment_variable, list_connection_references, update_connection_reference

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

  1. Node.js 20+
  2. PAC CLI installed and on PATH — required for deploy_solution. Install via:
    dotnet tool install --global Microsoft.PowerApps.CLI.Tool
    
  3. Entra 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 user
    • The same service principal is used for all Dataverse calls AND the UpdateApprovalStatus approval 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 install

2. Configure environment variables

cp .env.example .env
# Edit .env with your values
Variable Description
AZURE_CLIENT_ID App registration client ID
AZURE_CLIENT_SECRET App registration client secret
AZURE_TENANT_ID Entra ID tenant ID
DATAVERSE_URL Environment root URL, e.g. https://yourorg.crm.dynamics.com
PORT Port to listen on (default: 3000)

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_URL

4. Build and start

npm run build
npm start

Or for development with hot-reload:

npm run dev

Docker

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-mcp

Azure App Service / Container Apps Deployment

  1. Build the Docker image and push to Azure Container Registry (ACR):
    az acr build --registry <your-acr> --image pp-pipeline-mcp:latest .
    
  2. Create a Container App or App Service instance pointing to the image.
  3. Set the four required environment variables as application settings.
  4. The docker-entrypoint.sh will 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

  1. Deploy the server to a publicly accessible HTTPS endpoint (e.g. https://your-app.azurewebsites.net).
  2. In Copilot Studio, go to Settings → AI Capabilities → Model Context Protocol.
  3. Add a new MCP server with the URL: https://your-app.azurewebsites.net/mcp
  4. All 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
pipelineId string GUID of the pipeline from list_pipelines

deploy_solution

Triggers a PAC CLI deployment. PAC CLI must be authenticated on the server.

Parameter Type Description
solutionName string Unique name of the solution
stageId string Target stage GUID from get_pipeline_stages
currentVersion string Current version, e.g. 1.0.0.0
newVersion string Version after deploy, e.g. 1.0.0.1
environment string Source environment URL

get_deployment_status

Parameter Type Description
deploymentStageRunId string GUID of the stage run

get_deployment_history

Parameter Type Description
stageId string Stage GUID to query
solutionName string? Optional solution filter
top number? Max records (1–50, default 20)

list_pending_approvals

Parameter Type Description
pipelineStageId string? Optional stage filter

approve_deployment

Parameter Type Description
deploymentStageRunId string Stage run to approve
approvalComments string? Optional comments

reject_deployment

Parameter Type Description
deploymentStageRunId string Stage run to reject
approvalComments string Reason for rejection

list_environment_variables

Parameter Type Description
solutionUniqueName string Solution unique name

set_environment_variable

Parameter Type Description
environmentVariableDefinitionId string Definition GUID
newValue string New value
environmentVariableValueId string? Existing value GUID (omit to create)

list_connection_references

Parameter Type Description
solutionUniqueName string Solution unique name

update_connection_reference

Parameter Type Description
connectionReferenceId string Connection reference GUID
connectionId string Target connection ID

Security Notes

  • Store AZURE_CLIENT_SECRET in 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 UpdateApprovalStatus Dataverse 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 interfaces

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选