Power Automate MCP
Power Automate MCP
로컬 MCP 서버로, AI 에이전트가 개인 Power Automate 클라우드 흐름을 검사하고 편집할 수 있게 해줍니다. — 관리자 동의나 유료 구독 없이 자신의 Microsoft 계정으로 인증합니다.
이 프로젝트는 호스팅 대안들이 Microsoft가 이미 계정에 무료로 노출하는 API를 감싸는 데 월 사용료를 청구하기 때문에 존재합니다. 이 저장소는 해당 API가 실제로 작동하는 방식을 리버스 엔지니어링한 내용을, 작동하는 도구로 패키징한 문서입니다. 개인 프로젝트, 있는 그대로 제공 — 의존하기 전에 안정성 참고 사항을 읽으세요.
흥미로운 부분: IT 부서에 문의하지 않고 인증하는 방법
코드에서 Power Automate를 관리하는 모든 튜토리얼은 Entra ID에 앱을 등록하고 관리자에게 Dynamics CRM user_impersonation 또는 Flows.Manage.All에 대한 동의를 받으라고 안내합니다. 잠긴 기업 테넌트에서는 그 요청이 시작부터 불가능합니다 — 상시 서비스 주체를 부여하는 일이고, 관리자들은 (당연히) 거절합니다.
이 프로젝트는 Microsoft가 대화형 도구용으로 제공하는 퍼블릭 퍼스트파티 클라이언트 ID를 사용하여 그 문제를 완전히 우회합니다:
51f81489-12ee-4a9e-aaae-a2591f45987d ("Dynamics 365 Example Client", of XrmToolBox fame)OAuth 2.0 디바이스 코드 그랜트를 통해 진행되는 이것은 위임된 로그인입니다: 토큰은 사용자의 신원과 권한을 담고 있으며, 승인할 서비스 주체가 없고 동의 화면도 나타나지 않습니다. 포털에서 이미 가지고 있는 권한만으로 랩톱에서 Power Automate와 통신할 수 있습니다 — 그 이상도 이하도 아닙니다.
토큰 대상(audience)에는 기록해 둘 만한, 쉽게 드러나지 않는 특이점이 하나 있습니다:
https://service.flow.microsoft.com//user_impersonation
^^ two slashes, on purpose레거시 리소스 URI는 슬래시로 끝나고 v2 범위 구문은 /user_impersonation을 추가하여 이중 슬래시가 만들어집니다. 일부 테넌트는 슬래시 하나짜리 형태를 거부합니다. 그 문자열 하나가 정상 작동하는 로그인과 알 수 없는 AADSTS 오류를 가르는 차이입니다.
또 다른 흥미로운 부분: 서로 다른 흐름을 보는 두 API
두 개의 REST 백엔드가 있으며 서로 교체할 수 없습니다:
|
| |
상태 | 문서화 안 됨, 지원 안 됨 | 공식, 문서화됨 ( |
개인 흐름 확인 | 예 | 아니요 — Dataverse 없으면 404 |
솔루션 흐름 확인 | 예 | 예 |
사용 용도 | 전부 (개인 흐름) | 연결만 됨, 휴면 상태 |
가장 많은 조사가 필요했던 교훈: 지원되는 API는 개인 흐름을 전혀 볼 수 없습니다. 흐름이 Dataverse 솔루션에 있어야 합니다. 따라서 일반 사용자가 포털에서 만드는 흐름을 관리하는 모든 도구 — 유료 MCP를 포함해 — 는 선택의 여지 없이 지원되지 않는 서비스 API를 사용할 수밖에 없습니다. 이 프로젝트는 그 트레이드오프를 숨기지 않고 명시적으로 드러냅니다.
src/client/flow-api.ts는 두 기본 URL을 하나의 스위치 뒤에 보관하므로, 나중에 솔루션으로 이동하는 흐름(또는 서비스 API가 결국 깨지는 미래)은 재작성이 아니라 상수 하나만 바꾸면 되는 변경입니다.
안정성 참고 사항 (읽어보세요)
api.flow.microsoft.com은 Microsoft가 문서화하지 않았고 지원하지 않는 API입니다. 공지 없이 형태가 바뀌거나 사라질 수 있으며, 그렇게 되면 이 도구도 깨집니다. 유료 서비스가 청구하는 비용은 바로 사용자를 대신해 그 위험을 떠안는 대가입니다. 스스로 고치는 개인 도구라면 괜찮은 거래입니다. 중요한 업무를 담당하는 용도라면 그렇지 않습니다. 그에 맞게 선택하세요.
모든 작업은 사용자로서 실행됩니다. 계정 접근 권한을 잃으면 도구가 작동을 멈춥니다 — 그 뒤에는 서비스 ID가 없습니다.
설치
요구 사항: Node 18+ (내장 fetch용) 및 pnpm. Power Automate를 사용할 수 있는 Microsoft 회사/학교 계정 — 그게 전부입니다.
git clone https://github.com/karenrebecag/PowerAutomate_MCP.git
cd PowerAutomate_MCP
pnpm install
pnpm build자격 증명 — 한 번만 로그인
편집할 구성 파일도, 붙여 넣을 비밀 키도 없습니다. 인증은 자신의 Microsoft 계정에 대한 대화형 디바이스 코드 로그인입니다:
pnpm loginURL과 짧은 코드를 출력합니다:
Power Automate MCP — sign in
1. Open: https://microsoft.com/devicelogin
2. Code: ABCD-EFGH
Waiting for you to finish signing in...URL을 열고 코드를 입력한 다음, 관리하려는 흐름이 있는 계정으로 로그인하고 승인하세요. 성공하면 리프레시 토큰이 .pa-token에 기록됩니다(권한 0600, gitignore 처리됨). 서버는 이 토큰에서 수명이 짧은 액세스 토큰을 자동으로 발급합니다 — 만료될 때까지(~90일간 활동이 없으면) 다시 묻지 않습니다. 계정을 전환하거나 만료된 토큰에서 복구하려면 pnpm login을 다시 실행하기만 하면 됩니다.
선택적 환경 변수
변수 | 기본값 | 설정하는 경우 |
|
| 계정이 여러 테넌트에 속한 경우 특정 테넌트 GUID로 고정합니다. |
| 패키지 옆의 | 리프레시 토큰을 다른 곳에 저장합니다. |
검증 (선택 사항이지만 권장)
pnpm probe는 Phase 0을 실행합니다 — 사용자의 테넌트에 대해 모든 읽기 엔드포인트를 호출하고 실제 응답을 scratch/에 덤프합니다(gitignore 처리됨). 사용자 환경에서 라우트가 404를 반환하면 사용 중에 발견하는 대신 여기서 확인할 수 있습니다. 이 명령이 수행하는 작업 중 쓰기는 없습니다.
pnpm probeMCP 클라이언트에 등록
서버를 클라이언트 구성에 추가하세요. Claude Code의 경우 ~/.mcp.json입니다:
{
"mcpServers": {
"power-automate": {
"command": "node",
"args": ["/absolute/path/to/PowerAutomate_MCP/dist/index.js"]
}
}
}dist/index.js에 대한 절대 경로를 사용하세요. 서버는 자신의 위치를 기준으로 .pa-token을 찾으므로 클라이언트에 작업 디렉터리나 환경 변수를 설정할 필요가 없습니다. 클라이언트를 다시 시작하면(또는 서버를 다시 연결하면) 일곱 개의 도구가 나타납니다. 클라이언트 없이 터미널에서 빠르게 확인하려면:
printf '%s\n%s\n%s\n' \
'{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"c","version":"1"}}}' \
'{"jsonrpc":"2.0","method":"notifications/initialized"}' \
'{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}' \
| node dist/index.js도구
도구 | 쓰기? | 기능 |
| 아니요 | 계정이 볼 수 있는 모든 환경. 환경 ID는 여기서 시작하세요. |
| 아니요 | 환경의 클라우드 흐름(요약 필드). |
| 아니요 | 전체 편집 가능한 정의 + 연결 참조. |
| 아니요 | 최근 실행 기록: 상태, 코드, 타이밍. |
| 아니요 | 한 실행의 작업별 분석; 실패한 작업에 대해 입력/출력 링크를 따라갑니다. 디버깅 뷰. |
| 예 | 흐름 시작 / 중지. |
| 예 | 정의 객체에서 흐름 생성 또는 편집. |
일반적인 사용 흐름
list_environments → grab the environment ID
list_flows(environmentId) → find the flow you want, grab its ID
get_flow(env, flowId) → read the definition
… edit the definition object …
create_or_update_flow(env, flowId, definition) → preview (dryRun on)
create_or_update_flow(env, flowId, definition, dryRun:false) → apply두 쓰기 도구 모두 명시적으로 동의하기 전에는(dryRun: false / confirm: true) 어떤 것도 변경하지 않습니다. 이를 귀찮은 일이 아니라 기능으로 여기세요 — 잘못된 정의 하나가 운영 중인 자동화를 망가뜨릴 수 있습니다.
프로젝트 구조
src/
auth/ device-code login + silent refresh (the interesting bit)
client/ thin HTTP wrapper over the two REST backends
tools/ one file per MCP tool (added after Phase 0 confirms shapes)
server.ts MCP server wiring
index.ts stdio transport entry point
scripts/
probe-endpoints.ts Phase 0 reconnaissance — run before trusting any tool상태
작동 중입니다. 일곱 개의 도구(읽기 다섯 개, 쓰기 두 개)는 각각 실제 테넌트를 대상으로 한 Phase 0 프로브가 포착한 실제 응답 형태에 맞춰 타입이 지정되어 있습니다. pnpm verify(타입체크 + 린트 + 포맷 + 테스트)는 통과 상태입니다. list_connections는 v1에서 의도적으로 제외되었습니다 — 해당 라우트는 다른 공급자 경로 아래에 있으며, 추측으로 내놓기보다는 버려졌습니다. 어차피 연결 참조는 get_flow 안에서 볼 수 있습니다.
라이선스 및 의도
개인적이고 교육적인 리버스 엔지니어링 프로젝트입니다. 다른 사람들이 이 API가 어떻게 작동하는지 배우고 그 위에 자신만의 개인 도구를 만들 수 있도록 공유합니다. Microsoft와 제휴하거나 보증하지 않습니다. 자신의 계정과 조직의 정책 범위 내에서 사용하세요.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.
Self-hosted MCP gateway: turn any API, database or MCP server into AI connectors — no code.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/karenrebecag/PowerAutomate_MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server