A comprehensive MCP server that connects Claude with Microsoft 365 services through the Microsoft Graph API and Power Automate API. Requires configuration of Azure app credentials via environment variables in a .env file.
The M365 Assistant MCP Server MCP server is a publicly available project. Review the upstream repository for installation instructions, supported tools, compatibility, permissions, and current maintenance status.
Configuration
Configuration, transport, authentication, and runtime requirements vary by project. Open the repository before connecting and use the smallest set of credentials and permissions required.
AIHawk is an LLM-based tool that writes application documents and drives a browser AI client. Requires Python 3.12 and Chrome. It uses local YAML config files in data_folder/ (created from data_folder_example/) for user resume, work preferences, and OpenAI API key.
30.3Kstars0forks
Obsidian 的 MCP 服务器
MarkusPfundstein
Community
用于与 Obsidian 通过本地 REST API 社区插件交互的 MCP 服务器。需要预先安装并运行 Obsidian REST API 社区插件。通过环境变量或服务器配置,使用 Obsidian API 密钥、主机和端口来配置服务器。
3Kstars0forks
Office-Word-MCP-Server
GongRzhe
Community
用于创建、读取和操作 Microsoft Word 文档的 MCP 服务器。该服务器通过标准化接口支持 AI 助手与 Word 文档进行交互,提供丰富的文档编辑功能。
A comprehensive MCP (Model Context Protocol) server that connects Claude with Microsoft 365 services through the Microsoft Graph API and Power Automate API.
Supported Services
Outlook - Email, calendar, folders, and rules
OneDrive - Files, folders, search, and sharing
Power Automate - Flows, environments, and run history
Account type: "Accounts in any organizational directory and personal Microsoft accounts"
Redirect URI: Web → http://localhost:3333/auth/callback
Click "Register"
Copy the "Application (client) ID" for your .env file
App Permissions
Go to "API permissions" under Manage
Click "Add a permission" → "Microsoft Graph" → "Delegated permissions"
Add these permissions:
offline_access
User.Read
Mail.Read, Mail.ReadWrite, Mail.Send
Calendars.Read, Calendars.ReadWrite
Files.Read, Files.ReadWrite
Click "Add permissions"
For Power Automate (optional):
Requires additional Azure AD configuration with Flow API scope
See Power Automate section below for details
Client Secret
Go to "Certificates & secrets" → "Client secrets"
Click "New client secret"
Add description and select expiration
Copy the VALUE (not the Secret ID)
Configuration
1. Environment Variables
cp .env.example .env
Edit .env:
# Get these values from Azure Portal > App Registrations > Your App
MS_CLIENT_ID=your-application-client-id-here
MS_CLIENT_SECRET=your-client-secret-VALUE-here
MS_TENANT_ID=your-tenant-id-here
USE_TEST_MODE=false
Important Notes:
Use MS_CLIENT_ID and MS_CLIENT_SECRET in the .env file
Set MS_TENANT_ID for single-tenant apps to avoid /common endpoint errors
For Claude Desktop config, you'll use OUTLOOK_CLIENT_ID and OUTLOOK_CLIENT_SECRET
Always use the client secret VALUE, never the Secret ID
Power Automate requires a separate token with the Flow API scope. Configure additional Azure AD permissions for https://service.flow.microsoft.com//.default scope.
Limitations:
Only solution-aware flows are accessible
Only manual trigger flows can be run via API
Requires environment ID for most operations
Troubleshooting
Common Issues
"Cannot find module"
npm install
"Port 3333 in use"
npx kill-port 3333
npm run auth-server
"Invalid client secret" (AADSTS7000215)
Use the secret VALUE, not the Secret ID
"Authentication required"
Delete ~/.outlook-mcp-tokens.json and re-authenticate
Testing
# Run with MCP Inspector
npm run inspect
# Run in test mode (mock data)
npm run test-mode
# Run Jest tests
npm test