Knowledge base for MS365 operations using the @softeria/ms-365-mcp-server.
Execute Microsoft 365 operations by calling Graph API tools for email, calendar, files, Teams, and SharePoint. Use when users request actions like sending emails, creating meetings, or accessing OneDrive files. Requires authentication via device code flow, Azure AD app, or external token.
/plugin marketplace add bennoloeffler/maude-claude-vunds-plugins/plugin install ms365-by-code@maude-claude-vunds-pluginsThis skill inherits all available tools. When active, it can use any tool Claude has access to.
Knowledge base for MS365 operations using the @softeria/ms-365-mcp-server.
| Property | Value |
|---|---|
| Package | @softeria/ms-365-mcp-server |
| Version | 0.29.0 |
| GitHub | https://github.com/softeria/ms-365-mcp-server |
| Transport | stdio (default), HTTP (optional) |
Interactive authentication for personal use:
# Via CLI
npx @softeria/ms-365-mcp-server --login
# Via MCP tool
Use the `login` tool, then `verify-login`
For production/automated use, create an Azure AD app:
export MS365_CLIENT_ID='your-client-id'
export MS365_TENANT_ID='your-tenant-id'
export MS365_CLIENT_SECRET='your-secret' # Optional
For systems with external OAuth management:
MS365_MCP_OAUTH_TOKEN='your-token' npx @softeria/ms-365-mcp-server
| Category | Tools | Description |
|---|---|---|
| 8 tools | Send, read, delete, move emails | |
| Calendar | 7 tools | List, create, update, delete events |
| Files | 7 tools | OneDrive operations |
| Excel | 5 tools | Spreadsheet operations |
| OneNote | 5 tools | Notebook operations |
| Tasks | 6 tools | To Do list management |
| Planner | 5 tools | Planner task management |
| Contacts | 5 tools | Outlook contacts |
| Search | 1 tool | Microsoft Search |
| User | 1 tool | Get current user |
| Category | Tools | Description |
|---|---|---|
| Teams | 15+ tools | Chats, channels, messages |
| SharePoint | 12+ tools | Sites, lists, documents |
| Shared Mailboxes | 4 tools | Shared inbox access |
| Users | 1 tool | Organization user directory |
Tool: send-mail
Parameters:
- to: "recipient@example.com" (required, comma-separated for multiple)
- subject: "Subject line" (required)
- body: "Email content" (required)
- content-type: "text" or "html" (optional)
- cc: "cc@example.com" (optional)
- bcc: "bcc@example.com" (optional)
Tool: list-mail-messages
Parameters:
- top: 10 (optional, number of messages)
- filter: "isRead eq false" (optional, OData filter)
Tool: create-calendar-event
Parameters:
- subject: "Meeting Title" (required)
- start: "2026-01-05T14:00:00" (required, ISO 8601)
- end: "2026-01-05T15:00:00" (required, ISO 8601)
- body: "Description" (optional)
- location: "Conference Room A" (optional)
- attendees: "person@example.com" (optional, comma-separated)
Tool: get-calendar-view
Parameters:
- start-date-time: "2026-01-04T00:00:00Z" (required)
- end-date-time: "2026-01-11T23:59:59Z" (required)
Tool: upload-new-file
Parameters:
- filename: "document.txt" (required)
- content: "File content" (required)
- folder-id: "folder-id" (optional, defaults to root)
Common filters for list operations:
| Filter | Description |
|---|---|
isRead eq false | Unread emails |
from/emailAddress/address eq 'x@y.com' | Emails from specific sender |
receivedDateTime ge 2026-01-01T00:00:00Z | Emails after date |
subject eq 'test' | Exact subject match |
contains(subject, 'meeting') | Subject contains |
npx @softeria/ms-365-mcp-server --preset mail # Only email
npx @softeria/ms-365-mcp-server --preset calendar # Only calendar
npx @softeria/ms-365-mcp-server --preset files # Only OneDrive
npx @softeria/ms-365-mcp-server --preset personal # All personal (no Teams)
npx @softeria/ms-365-mcp-server --preset work # Teams, SharePoint only
npx @softeria/ms-365-mcp-server --read-only
# Disables: send-mail, delete-*, create-*, update-*
npx @softeria/ms-365-mcp-server --toon
# 30-60% fewer tokens in responses
npx @softeria/ms-365-mcp-server --discovery
# Only 2 tools: search-tools, execute-tool
| Error | Cause | Solution |
|---|---|---|
Authorization_RequestDenied | Missing permissions | Check app permissions in Azure |
InvalidAuthenticationToken | Token expired | Re-authenticate with login |
ResourceNotFound | Item doesn't exist | Verify ID is correct |
AccessDenied | No access to resource | Check sharing permissions |
Reference for understanding tool behavior:
| Tool | Graph API |
|---|---|
| send-mail | POST /me/sendMail |
| list-mail-messages | GET /me/messages |
| list-calendar-events | GET /me/events |
| create-calendar-event | POST /me/events |
| list-folder-files | GET /me/drive/root/children |
| upload-new-file | PUT /me/drive/root:/{filename}:/content |