Skip to content

an local MCP server you can run on your env, connecting you to Microsoft Graph, and the complete M365 eco system.

Notifications You must be signed in to change notification settings

Aanerud/MCP-Microsoft-Office

Repository files navigation

πŸš€ MCP Microsoft Office - Enterprise-Grade Microsoft 365 Integration

The most comprehensive, secure, and user-focused MCP server for Microsoft 365

Transform how you interact with Microsoft 365 through Claude and other LLMs with enterprise-grade security, comprehensive logging, and seamless multi-user support.

✨ Why This Project is Special

πŸ” User-Centric Security: Every user gets their own isolated, encrypted data space
πŸ“Š Enterprise Logging: 4-tier comprehensive logging system with full observability
πŸ› οΈ 50+ Professional Tools: Complete Microsoft 365 API coverage with validation
⚑ Zero-Config Setup: Automatic project initialization - just npm install and go!
🏒 Multi-User Ready: Session-based isolation with Microsoft authentication
πŸ”§ Developer Friendly: Extensive debugging, monitoring, and error handling


πŸš€ Quick Start (Beginner-Friendly)

1. One-Command Setup ⚑

git clone https://github.com/Aanerud/MCP-Microsoft-Office.git
cd MCP-Microsoft-Office
npm install  # ✨ This does EVERYTHING automatically! ( i hope! )

What happens automatically:

  • βœ… Creates secure database with user isolation
  • βœ… Generates .env configuration file
  • βœ… Sets up all required directories
  • βœ… Initializes logging and monitoring systems
  • βœ… Prepares multi-user session management

2. Add Your Microsoft 365 Credentials πŸ”‘

Edit the auto-generated .env file:

MICROSOFT_CLIENT_ID=your_client_id_here
MICROSOFT_TENANT_ID=your_tenant_id_here

πŸ“‹ Get these from: Azure App Registration Portal

3. Launch Your Server 🎯

npm run dev:web  # Full development mode with comprehensive logging

🌐 Access your server at: http://localhost:3000


πŸ› οΈ Complete Tool Arsenal

πŸ“§ Email Management (9 Tools)

  • getMail / readMail - Retrieve inbox messages with filtering
  • sendMail - Compose and send emails with attachments
  • searchMail - Powerful email search with KQL queries
  • flagMail - Flag/unflag important emails
  • getEmailDetails - View complete email content and metadata
  • markAsRead / markEmailRead - Update read status
  • getMailAttachments - Download email attachments
  • addMailAttachment - Add files to emails
  • removeMailAttachment - Remove email attachments

πŸ“… Calendar Operations (13 Tools)

  • getCalendar / getEvents - View upcoming events with filtering
  • createEvent - Schedule meetings with attendees and rooms
  • updateEvent - Modify existing calendar entries
  • cancelEvent - Remove events from calendar
  • getAvailability - Check free/busy times
  • acceptEvent - Accept meeting invitations
  • tentativelyAcceptEvent - Tentatively accept meetings
  • declineEvent - Decline meeting invitations
  • findMeetingTimes - Find optimal meeting slots
  • getRooms - Find available meeting rooms
  • getCalendars - List all user calendars
  • addAttachment - Add files to calendar events
  • removeAttachment - Remove event attachments

πŸ“ File Management (11 Tools)

  • listFiles - Browse OneDrive and SharePoint files
  • searchFiles - Find files by name or content
  • downloadFile - Retrieve file content
  • uploadFile - Add new files to cloud storage
  • getFileMetadata - View file properties and permissions
  • getFileContent - Read document contents
  • setFileContent / updateFileContent - Modify file contents
  • createSharingLink - Generate secure sharing URLs

πŸ”§ Advanced Configuration

Environment Variables

# Microsoft 365 Configuration
MICROSOFT_CLIENT_ID=your_client_id
MICROSOFT_TENANT_ID=your_tenant_id

# Server Configuration
PORT=3000
NODE_ENV=development

# Security
MCP_ENCRYPTION_KEY=your_32_byte_encryption_key
MCP_TOKEN_SECRET=your_jwt_secret

# Database (Optional - defaults to SQLite)
DATABASE_TYPE=sqlite  # or 'mysql', 'postgresql'
DATABASE_URL=your_database_url

# Logging
LOG_LEVEL=info
LOG_RETENTION_DAYS=30

Database Support

  • βœ… SQLite (Default - Zero configuration)
  • βœ… MySQL (Production ready)
  • βœ… PostgreSQL (Enterprise grade)

Backup & Migration

# Backup user data
npm run backup

# Restore from backup
npm run restore backup-file.sql

# Database migration
npm run migrate

πŸ’‘ Real-World Usage Examples

Natural Language Queries πŸ—£οΈ

# Email Management
"Show me unread emails from last week"
"Send a meeting recap to the project team"
"Find emails about the Q4 budget"

# Calendar Operations  
"What meetings do I have tomorrow?"
"Schedule a 1-on-1 with Sarah next Tuesday at 2pm"
"Find a time when John, Mary, and I are all free"

# File Management
"Find my PowerPoint presentations from last month"
"Share the project proposal with the team"
"Upload the latest budget spreadsheet"

# People & Contacts
"Find contacts in the marketing department"
"Get John Smith's contact information"
"Who are my most frequent email contacts?"

Advanced API Usage πŸ”§

// Direct API calls with full validation
POST /api/v1/mail/send
{
    "to": ["[email protected]"],
    "subject": "Project Update",
    "body": "Here's the latest update...",
    "attachments": [{
        "name": "report.pdf",
        "contentBytes": "base64_encoded_content"
    }]
}

// Calendar event creation with attendees
POST /api/v1/calendar/events
{
    "subject": "Team Standup",
    "start": "2024-01-15T09:00:00Z",
    "end": "2024-01-15T09:30:00Z",
    "attendees": ["[email protected]"],
    "location": "Conference Room A"
}

// File search with advanced filters
GET /api/v1/files?query=presentation&limit=10&type=powerpoint

🚨 Troubleshooting & Support

Common Issues & Solutions

Database Issues πŸ—„οΈ

# Reset database completely
npm run reset-db

# Check database health
curl http://localhost:3000/api/health

# View database logs
tail -f data/logs/database.log

Authentication Problems πŸ”

# Check Microsoft 365 configuration
echo $MICROSOFT_CLIENT_ID
echo $MICROSOFT_TENANT_ID

# Test authentication endpoint
curl http://localhost:3000/api/auth/status

# Clear data
rm -rf data/*

Permission Errors πŸ“

# Fix directory permissions
chmod -R 755 data/
chown -R $USER:$USER data/

# Check disk space
df -h

Advanced Debugging πŸ”

Enable Comprehensive Logging

# Full debug mode
npm run dev:web

# Specific category logging
DEBUG=mail,calendar npm run dev:web

# View real-time logs
curl http://localhost:3000/api/logs?limit=100&level=debug

Performance Monitoring

# Check system metrics
curl http://localhost:3000/api/health

# Monitor API response times
curl -w "@curl-format.txt" http://localhost:3000/api/mail

# Database performance
sqlite3 data/mcp.sqlite ".timer on" "SELECT COUNT(*) FROM user_logs;"

🎯 Production Deployment

Environment Setup

# Production environment variables
NODE_ENV=production
PORT=3000
DATABASE_TYPE=postgresql
DATABASE_URL=postgresql://user:pass@host:5432/mcpdb
MCP_ENCRYPTION_KEY=your_32_byte_production_key
LOG_LEVEL=info
LOG_RETENTION_DAYS=90

Security Hardening

# Generate secure encryption key
openssl rand -hex 32

# Set proper file permissions
chmod 600 .env
chmod 700 data/

# Enable HTTPS (recommended)
HTTPS_ENABLED=true
SSL_CERT_PATH=/path/to/cert.pem
SSL_KEY_PATH=/path/to/key.pem

Monitoring & Alerts

# Health check endpoint
GET /api/health

# User activity monitoring
GET /api/logs?scope=user&limit=1000

# System metrics
GET /api/metrics

πŸ† What Makes This Project Outstanding

πŸ”’ Enterprise-Grade Security

  • Zero Trust Architecture: Every request is authenticated and authorized
  • User Data Isolation: Complete separation between users' data
  • Encryption at Rest: All sensitive data encrypted in database
  • Session Security: Secure session management with automatic cleanup
  • Audit Trail: Complete logging of all user activities

πŸ“Š Comprehensive Observability

  • 4-Tier Logging: From development debugging to user activity tracking
  • Real-Time Monitoring: Live system health and performance metrics
  • Error Tracking: Structured error handling with full context
  • Performance Analytics: Response times, success rates, and usage patterns

πŸ› οΈ Developer Experience

  • Zero Configuration: Automatic setup with npm install
  • Extensive Validation: Joi schemas for all API endpoints
  • Type Safety: Comprehensive parameter validation and transformation
  • Error Handling: Graceful error handling with detailed diagnostics
  • Development Tools: Rich debugging and monitoring capabilities

🏒 Production Ready

  • Multi-Database Support: SQLite, MySQL, PostgreSQL
  • Horizontal Scaling: Session-based architecture supports load balancing
  • Health Checks: Comprehensive health monitoring endpoints
  • Backup & Recovery: Built-in backup and migration tools
  • Security Hardening: Production-ready security configurations

πŸ“š API Documentation

Authentication Endpoints

GET  /api/auth/status     # Check authentication status
POST /api/auth/login      # Initiate Microsoft 365 login
GET  /api/auth/callback   # OAuth callback handler
POST /api/auth/logout     # Logout and cleanup session

Mail API Endpoints

GET    /api/v1/mail              # Get inbox messages
POST   /api/v1/mail/send         # Send email with attachments
GET    /api/v1/mail/search       # Search emails
PATCH  /api/v1/mail/:id/flag     # Flag/unflag email
GET    /api/v1/mail/:id          # Get email details
PATCH  /api/v1/mail/:id/read     # Mark as read/unread

Calendar API Endpoints

GET    /api/v1/calendar          # Get calendar events
POST   /api/v1/calendar/events   # Create new event
PUT    /api/v1/calendar/events/:id # Update event
DELETE /api/v1/calendar/events/:id # Cancel event
GET    /api/v1/calendar/rooms    # Get available rooms

Files API Endpoints

GET    /api/v1/files             # List files
GET    /api/v1/files/search      # Search files
POST   /api/v1/files/upload      # Upload file
GET    /api/v1/files/:id         # Get file metadata
GET    /api/v1/files/:id/content # Download file

People API Endpoints

GET    /api/v1/people            # Get relevant people
GET    /api/v1/people/search     # Search people
GET    /api/v1/people/:id        # Get person details

System Endpoints

GET    /api/health               # System health check
GET    /api/logs                 # Get system/user logs
POST   /api/v1/query             # Natural language query

Comprehensive Audit Trail

  • Authentication Events: Login, logout, token refresh activities
  • Authorization Changes: Permission grants and revocations
  • Data Access: File access, email reads, calendar views
  • Administrative Actions: Configuration changes and system updates

πŸ›‘οΈ Security & Compliance Benefits

Enterprise Security Standards

  • Zero Trust Architecture: Every operation logged and verified
  • Audit Compliance: Complete activity trails for compliance reporting
  • Incident Response: Detailed logs for security incident investigation
  • User Accountability: Clear attribution of all actions to authenticated users

Multi-Tenant Security

  • Data Isolation: Complete separation between different user accounts
  • Session Security: Secure session management with proper cleanup
  • Token Security: JWT tokens with user binding and expiration
  • Access Logging: All access attempts logged with context

πŸ” Log Categories & Structure

Supported Log Categories

  • auth - Authentication and authorization events
  • mail - Email operations and activities
  • calendar - Calendar events and scheduling
  • files - File access and management
  • people - Contact and directory operations
  • graph - Microsoft Graph API interactions
  • storage - Database and storage operations
  • request - HTTP request/response logging
  • monitoring - System monitoring and metrics

Log Entry Structure

{
    "id": "log_entry_uuid",
    "timestamp": "2025-07-06T17:04:23.131Z",
    "level": "info",
    "category": "mail",
    "message": "Email sent successfully",
    "context": {
        "userId": "ms365:[email protected]",
        "operation": "sendMail",
        "duration": 1250,
        "recipientCount": 3
    },
    "sessionId": "session_uuid",
    "deviceId": "device_uuid"
}

πŸš€ Production-Ready Logging

This logging system is production-tested and provides:

  • High Performance: Minimal overhead on API operations
  • Scalability: Efficient storage and retrieval of large log volumes
  • Reliability: Robust error handling and fallback mechanisms
  • Maintainability: Clear separation of concerns and structured data

The logging system ensures complete visibility into system operations while maintaining the highest standards of user privacy and data security.

Multi-User Architecture

Remote Service Design

Claude Desktop ←→ MCP Adapter ←→ Remote MCP Server ←→ Microsoft 365

The MCP server can be deployed as a remote service, allowing multiple users to connect via MCP adapters:

  • Session-Based User Isolation: User sessions are managed by session-service.cjs with unique session IDs
  • Dual Authentication: Supports both browser session and JWT bearer token authentication
  • Remote Server Configuration: MCP adapter connects via MCP_SERVER_URL environment variable
  • OAuth 2.0 Compliance: Supports discovery via /.well-known/oauth-protected-resource endpoint
  • Device Registry: Secure management and authorization of MCP adapter connections

User Isolation & Session Management

Each user's data is completely isolated through session-based architecture:

// From session-service.cjs
async createSession(options = {}) {
    const sessionId = uuid();
    const sessionSecret = crypto.randomBytes(SESSION_SECRET_LENGTH).toString('hex');
    const expiresAt = Date.now() + SESSION_EXPIRY;
    
    const sessionData = {
        session_id: sessionId,
        session_secret: sessionSecret,
        expires_at: expiresAt,
        created_at: Date.now(),
        // User-specific data storage
    };
}

🀝 Contributing & Support

Contributing Guidelines

  1. Fork the repository and create a feature branch
  2. Follow the logging patterns - All new code must implement the 4-tier logging system
  3. Add comprehensive tests for new functionality
  4. Update documentation for any API changes
  5. Ensure security - All user data must be properly isolated

Development Setup

# Clone and setup development environment
git clone https://github.com/Aanerud/MCP-Microsoft-Office.git
cd MCP-Microsoft-Office
npm install

# Run in development mode with full logging
npm run dev:web

# Run tests
npm test

# Check code quality
npm run lint

Support & Community


πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


πŸ™ Acknowledgments

  • Microsoft Graph API for providing comprehensive Microsoft 365 integration
  • Model Context Protocol (MCP) for the innovative LLM integration framework
  • Claude AI for inspiring advanced AI-human collaboration
  • Open Source Community for the amazing tools and libraries that make this possible

⭐ Star this repository if you find it useful!

πŸ”— Share with your team and help them work smarter with Microsoft 365!

About

an local MCP server you can run on your env, connecting you to Microsoft Graph, and the complete M365 eco system.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •