An open-source Model Context Protocol (MCP) server for Microsoft 365, built with .NET 10.
Helix is an MCP server that bridges AI agents with Microsoft 365. It exposes M365 services as MCP tools so AI models like Claude can read your email, send messages, manage attachments, and more — all through the standardized Model Context Protocol.
Built by SAIB Inc.
curl -fsSL https://raw.githubusercontent.com/SAIB-Inc/Helix/main/install.sh | bashThis downloads a self-contained binary to ~/.helix/bin/helix — no .NET SDK required.
To install a specific version:
HELIX_VERSION=0.1.0 curl -fsSL https://raw.githubusercontent.com/SAIB-Inc/Helix/main/install.sh | bashhelix --versionYou need an Azure AD app registration to authenticate with Microsoft 365.
- Go to Azure Portal > App registrations and create a new registration
- Set Supported account types to your preference (single tenant or multi-tenant)
- Under Authentication, enable Allow public client flows (required for device code auth)
- Under API permissions, add the following delegated permissions:
User.ReadMail.Read,Mail.ReadWrite,Mail.SendCalendars.Read,Calendars.ReadWriteSites.Read.All,Sites.ReadWrite.All
- Note your Application (client) ID and Directory (tenant) ID
Set your Azure app credentials via environment variables:
export HELIX__ClientId="your-client-id"
export HELIX__TenantId="your-tenant-id" # optional, defaults to "common"Or create a .env file in your working directory:
HELIX__ClientId=your-client-id
HELIX__TenantId=your-tenant-idAdd to your claude_desktop_config.json:
{
"mcpServers": {
"helix": {
"command": "helix",
"env": {
"HELIX__ClientId": "your-client-id",
"HELIX__TenantId": "your-tenant-id"
}
}
}
}If
helixis not on your PATH, use the full path:~/.helix/bin/helix
| Tool | Description |
|---|---|
login |
Start device code authentication flow |
login-status |
Check if authentication is complete |
logout |
Sign out and clear cached tokens |
get-current-user |
Get the authenticated user's profile |
| Tool | Description |
|---|---|
list-mail-messages |
List messages with filtering, search (KQL), and paging |
get-mail-message |
Get a full message by ID |
send-mail |
Send an email (supports file attachments) |
delete-mail-message |
Delete a message (moves to Deleted Items) |
move-mail-message |
Move a message to a different folder |
update-mail-message |
Update read status, importance, categories, or subject |
| Tool | Description |
|---|---|
create-draft-message |
Create a draft email in the Drafts folder |
send-draft-message |
Send an existing draft by ID |
| Tool | Description |
|---|---|
list-mail-attachments |
List attachments on a message |
get-mail-attachment |
Download an attachment to disk |
add-mail-attachment |
Attach a file from disk to a draft |
delete-mail-attachment |
Remove an attachment |
| Tool | Description |
|---|---|
list-mail-folders |
List all mail folders with unread counts |
list-mail-folder-messages |
List messages in a specific folder |
| Tool | Description |
|---|---|
list-calendars |
List all calendars |
get-calendar-online-meeting-settings |
Get allowed/default online meeting providers for diagnostics |
list-calendar-events |
List events with filtering and paging |
get-calendar-event |
Get a full event by ID |
list-calendar-view |
List events in a date/time range (expands recurring events) |
create-calendar-event |
Create a new event with attendees, location, online meeting |
update-calendar-event |
Update an existing event |
delete-calendar-event |
Delete an event |
respond-calendar-event |
Accept, decline, or tentatively accept an invitation |
| Tool | Description |
|---|---|
search-sites |
Search for SharePoint sites by keyword |
get-site |
Get a site by ID |
list-site-lists |
List all lists in a site |
get-site-list |
Get a list with column definitions |
| Tool | Description |
|---|---|
list-list-items |
List items with field values, filtering, and paging |
get-list-item |
Get a specific item with all fields |
create-list-item |
Create a new item with field values (JSON) |
update-list-item |
Update item fields |
delete-list-item |
Delete an item |
| Tool | Description |
|---|---|
list-site-drives |
List document libraries in a site |
list-drive-children |
List files and folders (root or subfolder) |
search-drive-items |
Search files by name or content across a drive |
get-drive-item |
Get file/folder metadata |
create-drive-folder |
Create a new folder in a document library |
upload-drive-item |
Upload a file (from disk or base64) |
download-drive-item |
Download a file to disk |
| Service | Status |
|---|---|
| Available | |
| Calendar | Available |
| SharePoint | Available |
| Contacts | Planned |
| OneDrive | Planned |
| Teams | Planned |
| Planner / To Do | Planned |
If you prefer to build from source instead of using the installer:
git clone https://github.com/SAIB-Inc/Helix.git
cd Helix
dotnet build
dotnet run --project src/Helix.StdioRequires .NET 10 SDK.
See docs/CONTRIBUTING.md for branch workflow, commit conventions, and design principles.
MIT — see LICENSE.
Built and maintained by SAIB Inc.