Giving Claude M365 Access via Power Automate and a FastMCP Server

A developer on r/ClaudeAI shared a practical architecture for giving Claude access to Microsoft 365 without tenant admin privileges. The setup uses Power Automate flows as the execution layer, triggered via webhooks, with a small FastMCP server acting as the bridge.
What It Does
Claude can now perform these M365 actions through MCP tools:
- Read inbox and send emails
- Check calendar
- Save notes to OneDrive under specific folders
- Create Planner tasks
- Append rows to Excel spreadsheets
- Fill Word templates
Architecture
The chain is straightforward:
Claude -> MCP tool call -> FastMCP server -> Power Automate webhook -> M365 connector
Each M365 operation is a separate Power Automate flow with an HTTP trigger. The flows run under the user's account, using already-approved permissions. The FastMCP server (about 200 lines of Python + a JSON config file) routes tool calls to the correct webhook URL.
Setup Overview
- Create Power Automate flows for each action (send email, read calendar, etc.) with an HTTP trigger
- Copy the signed webhook URL from each flow
- Deploy a FastMCP server (fastmcp on PyPI) on a cheap VPS
- Define tools like
m365_send_email,m365_calendar_read,onedrive_create_filethat POST JSON to the webhooks - Point Claude Desktop's MCP config at the server
Practical Lessons
The developer notes that agent tool access doesn't require perfect official API integrations — existing enterprise tools like Power Automate can serve as a pragmatic backend. A funny bug: two MCP tools pointing at the same webhook (due to a forgotten URL update in the config) caused Claude to call the 'right' tool but Power Automate performed the wrong action.
📖 Read the full source: r/ClaudeAI
👀 See Also

Model Routing Baselines for Claude and OpenAI Usage
A developer shares their model routing strategy using Claude Haiku 4.5, Sonnet 4.6, Opus 4.6, and ChatGPT 5.3 Codex for different task types, with fallbacks to GPT-5 Mini and GPT-5.4 when needed.

Guide to Setting Up Safety Layers for Coding with Claude Code
A step-by-step guide shows how to implement defense-in-depth safety layers for coding with Claude Code, covering pre-commit hooks, CLAUDE.md files, local review agents, GitHub Actions CI, and branch protection.

Qwen3.x models fail silently in OpenClaw due to streaming output format mismatch
Qwen3.x models in streaming mode output to the 'reasoning' field instead of 'content', causing OpenClaw to silently fall through to fallback models. A proxy that translates API formats and injects 'think: false' fixes the issue, enabling full tool-call evaluation.

Debugging OpenClaw + Ollama Local Model Timeouts: Five Fixes for Silent Failures
A developer identified five root causes for OpenClaw agents silently timing out with local Ollama models like Gemma 4 26B, including a blocking slug generator, a 38K character system prompt, and hidden timeouts. The fixes involve disabling hooks, modifying configs, and adjusting Ollama settings.