Claude Code to Outlook via pywin32 — no MCP, no permission, no problem. A developer working on a locked-down enterprise Windows machine built a Python bridge using pywin32 to let Claude Code read and draft Outlook emails without MCP servers or Azure app registration. The single-file tool exposes Outlook COM commands as CLI subcommands returning JSON, enabling Claude to chain operations like reading threads and drafting replies directly from the conversation. The approach avoids COM object lifetime issues, API rate limits, and protocol overhead compared to MCP servers. I work on a locked-down enterprise Windows machine. Can't register an Azure app. Can't install browser extensions. Managed device — IT controls what's approved. I still needed Claude Code to read and draft my emails. The fix turned out to be simpler than I expected. Outlook Desktop on Windows exposes a COM interface. It's been there since the 90s. Any program running on the same machine can connect to it, provided Outlook is open and signed in. That's the whole authentication model: if Outlook is running, you're in. pywin32 wraps this interface in Python: python import win32com.client outlook = win32com.client.Dispatch "Outlook.Application" inbox = outlook.GetNamespace "MAPI" .GetDefaultFolder 6 One import. One dispatch call. You're talking to Outlook and you have access to almost anything you can do with a mouse and keyboard. Claude wrote a single Python file — outlook bridge.py — that exposes Outlook commands as CLI subcommands and returns JSON. Claude Code calls it via Bash: python outlook bridge.py list --count 10 --pretty python outlook bridge.py search "renewal" --folder inbox python outlook bridge.py reply