Power Automate와 MCP 서버를 활용해 Claude에게 M365 접근 권한을 부여함
I gave Claude access to my M365 account using Power Automate + a small MCP server
핵심 요약
Power Automate와 MCP 서버를 조합해 Claude가 M365 기능을 직접 수행하도록 구현한 사례.
- MCP 서버 활용 — Power Automate 웹훅을 활용해 Claude가 M365 작업을 수행하도록 연결함.
- 자동화 구현 방식 — 각 M365 작업을 개별 Power Automate 흐름으로 만들고 MCP 서버로 제어함.
- 보안 및 주의사항 — 웹훅 URL은 비밀번호처럼 관리하고, 읽기 전용 작업부터 시작하는 것이 좋음.
- 생산성 향상 — 반복적인 업무를 AI로 자동화하여 업무 효율을 크게 높일 수 있음.
최근 MCP 서버를 만지작거리다가 "멋진 데모지만 다시는 안 쓸 것 같은" 수준이 아니라, 실제로 유용하다고 느껴지는 서버를 드디어 완성했습니다.
문제는 이거였습니다. Claude가 기본적인 Microsoft 365 작업을 대신 해주길 바랐거든요.
- 받은 편지함 읽기
- 초안 작성 및 후속 메일 보내기
- 캘린더 확인
- OneDrive에 메모 저장
- Planner 작업 생성
- Excel에 행 추가
- Word 템플릿 채우기
하지만 저는 테넌트 관리자 권한이 없었고, 개인적인 자동화를 위해 Graph 권한 승인을 받을 생각도 없었습니다.
해결책은 Power Automate였습니다.
모든 작업은 HTTP 트리거가 있는 PA 흐름으로 구성됩니다. PA는 서명된 웹훅 URL을 제공합니다. 흐름은 제가 이미 가지고 있는 권한을 사용하여 제 계정으로 실행됩니다. 그런 다음 해당 웹훅 URL 앞에 작은 FastMCP 서버를 두고 Claude와 연결했습니다.
이제 Claude 채팅에서 다음과 같이 말할 수 있습니다.
- "이 내용 요약해서 메일로 보내줘."
- "내일 캘린더에 뭐 있어?"
- "이 메모를 OneDrive의 /Projects 폴더에 저장해줘."
- "이 후속 조치를 위한 Planner 작업을 만들어줘."
- "이 행을 추적 스프레드시트에 추가해줘."
내부적으로 Claude는 m365_send_email, m365_calendar_read, onedrive_create_file 등과 같은 MCP 도구를 호출할 뿐입니다. MCP 서버는 Power Automate에 JSON을 게시하고, PA가 실제 M365 작업을 수행합니다.
아키텍처는 화려하지 않습니다. 확실히요.
Claude -> MCP tool -> FastMCP server -> PA webhook -> M365 connector
저는 저렴한 VPS에서 MCP 서버를 실행 중입니다. 약 200줄의 파이썬 코드와 흐름 이름 및 URL이 담긴 JSON 설정 파일로 구성되어 있습니다.
이번 작업은 "에이전트 도구 접근"이 항상 완벽한 공식 API 통합을 필요로 하지는 않는다는 좋은 상기 계기가 되었습니다. 때로는 이미 가지고 있는 투박한 엔터프라이즈 도구만으로도 충분합니다.
가장 웃겼던 버그: 흐름을 복제하고 설정에서 URL 업데이트를 깜빡해서 두 개의 도구가 같은 Power Automate 웹훅을 가리키고 있었습니다. 결과적으로 Claude는 "올바른" 도구를 호출한다고 자신했지만, Power Automate는 엉뚱한 짓을 저질렀죠. 매우 교육적이었지만, 그다지 품위 있지는 않았습니다.
편집: (Power Automate Pro가 필요할 수 있습니다. 저는 다른 몇 가지 용도로 이미 사용 중이었습니다.)
구현 예시는 다음과 같습니다. 호출하고 싶은 모든 도구를 다루는 22개의 Power Automate 흐름을 만들고 MCP에 추가했습니다.
-
Power Automate에서 작업당 하나의 흐름을 만듭니다.
예: 메일 보내기, 받은 편지함 읽기, 캘린더 이벤트 생성, OneDrive 파일 쓰기 등. -
각 흐름을 "HTTP 요청을 받았을 때(When an HTTP request is received)"로 시작합니다.
-
해당 흐름이 수락할 JSON 본문을 정의합니다.
메일 보내기의 경우,{ "to": "...", "subject": "...", "body": "..." }와 같은 식입니다.

