Skip to main content
Glama
hayatosc

University Microsoft 365 Read-only MCP

by hayatosc

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 mailbox
  • Read-only. Exactly three Outlook tools, three operations, fixed Graph endpoints. The server never authenticates to Graph and never calls Graph directly.

  • Stateless. A fresh McpServer is created per request.

  • Auth for /mcp is delegated to Cloudflare Access (OAuth) in front of the Worker; this app performs no auth itself.

Tools

Tool

Input

Output

outlook_list_messages

{ limit?: number } (default 5, 1–100)

{ messages: MessageSummary[] }

outlook_search_messages

{ query: string, limit?: number } (default 10, 1–100)

{ messages: MessageSummary[] }

outlook_get_message

{ messageId: string }

MessageDetail

Power Automate protocol

Request (POST JSON):

{ "operation": "list_messages | search_messages | get_message", "requestId": "<uuid>", "args": { ... } }
  • list_messagesargs: { top }

  • search_messagesargs: { query, top }

  • get_messageargs: { 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

  • Bun

  • A Cloudflare account with Wrangler authentication (for deployment)

  • Cloudflare Access (OAuth) in front of the Worker to protect /mcp

  • A 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/invoke

For 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         # vitest

Deploy

bun run deploy       # wrangler deploy
F
license - not found
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    A
    quality
    B
    maintenance
    MCP 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.
    22
    838
    33
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    A 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.
    6
    1
  • F
    license
    -
    quality
    D
    maintenance
    Enables LLMs and MCP clients to read, search, and manage Microsoft Outlook emails through a standardized interface.

View all related MCP servers

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

View all MCP Connectors

Latest Blog Posts

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