University Microsoft 365 Read-only MCP
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@University Microsoft 365 Read-only MCPShow my last 5 emails in the inbox."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
University Microsoft 365 Read-only MCP
A read-only Model Context Protocol server that exposes a fixed surface of read tools for university Microsoft 365 resources via a Power Automate HTTP-trigger intermediary. The current implementation covers the Outlook mailbox (three tools); other Microsoft 365 apps (Teams, OneDrive, etc.) are added as new features. See SPEC.md for the full specification.
Specification
Architecture
MCP Client
↓ MCP over Streamable HTTP (/mcp)
Remote MCP Server — Cloudflare Workers + Hono (this repo)
↓ HTTP POST { operation, requestId, args }
Power Automate — operation allowlist → fixed Graph endpoints, M365 auth
↓
Microsoft Graph — Outlook mailboxRead-only. Exactly three Outlook tools, three operations, fixed Graph endpoints. The server never authenticates to Graph and never calls Graph directly.
Stateless. A fresh
McpServeris created per request.Auth for
/mcpis delegated to Cloudflare Access (OAuth) in front of the Worker; this app performs no auth itself.
Tools
Tool | Input | Output |
|
|
|
|
|
|
|
|
|
Power Automate protocol
Request (POST JSON):
{ "operation": "list_messages | search_messages | get_message", "requestId": "<uuid>", "args": { ... } }list_messages→args: { top }search_messages→args: { query, top }get_message→args: { messageId }
Response (2xx):
{ "ok": true, "requestId": "<uuid>", "operation": "...", "data": { /* Graph response */ } }The server normalizes data into the tool output schemas below.
Message shapes
type Recipient = { name: string; address: string }
type MessageSummary = {
id: string; subject: string; from: Recipient
receivedDateTime: string; hasAttachments: boolean
importance: 'low' | 'normal' | 'high'; isRead: boolean
bodyPreview: string
}
type MessageDetail = {
id: string; subject: string; from: Recipient
to: Recipient[]; cc: Recipient[]
receivedDateTime: string; hasAttachments: boolean
importance: 'low' | 'normal' | 'high'; isRead: boolean
body: { contentType: 'text' | 'html'; content: string }
}Related MCP server: M365 MCP
Requirements
A Cloudflare account with Wrangler authentication (for deployment)
Cloudflare Access (OAuth) in front of the Worker to protect
/mcpA Power Automate HTTP-trigger flow that accepts
{ operation, requestId, args }and proxies Microsoft Graph read calls (see SPEC §7)
Configuration
Set the required environment variables. For local development, copy
.dev.vars.example to .dev.vars and fill in real values:
POWER_AUTOMATE_URL=https://prod-xxx.logic.azure.com/workflows/xxx/triggers/manual/paths/invokeFor production, set these as Worker secrets/vars (wrangler secret put).
Development
bun install
bun run dev # local Worker (wrangler dev)The MCP endpoint is served at /mcp (protected by Cloudflare Access OAuth in
front of the Worker; this app performs no auth itself). A public info page is
served at /.
Quality checks
bun run typecheck # tsc --noEmit
bun run lint # oxlint
bun run lint:types # oxlint --type-aware
bun run format:check # oxfmt --check
bun run test # vitestDeploy
bun run deploy # wrangler deployThis 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 Servers
- AlicenseAqualityBmaintenanceMCP server for Microsoft Outlook via Graph API. 20 consolidated tools for email, calendar, contacts, folders, rules, categories, and settings with safety controls (dry-run preview, rate limiting, recipient allowlists) and MCP annotations on every tool.2283833MIT
- Alicense-qualityAmaintenanceMCP server for Microsoft 365 via the Microsoft Graph API, providing read-only access to profile, calendar, email, Teams chats, OneDrive files, and meeting transcripts from any MCP client.182MIT
- FlicenseAqualityDmaintenanceA lightweight MCP server for personal Microsoft Outlook/Hotmail accounts, enabling email search, reading, attachment management, and folder operations via Microsoft Graph API with OAuth device-code flow.61
- Flicense-qualityDmaintenanceEnables LLMs and MCP clients to read, search, and manage Microsoft Outlook emails through a standardized interface.
Related MCP Connectors
Read, search, send, organize, draft and schedule email across your inboxes from any MCP client.
Read-only MCP server for ClassQuill, a tutoring-business-management platform.
Outlook Mail (Microsoft 365) MCP Pack
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/hayatosc/microsoft-bypass-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server