View as Markdown

Outlook Integration

Manage Outlook mail, calendars, and contacts

The Outlook integration provides access to manage Outlook mail, calendars, and contacts through the Integrate MCP server.

Installation

The Outlook integration is included with the SDK:

import { outlookIntegration } from "integrate-sdk/server";

Setup

1. Create an Outlook OAuth App

  1. Go to Azure Portal — App Registrations
  2. Create a new OAuth application
  3. Configure your redirect URI
  4. Note your Client ID and Client Secret

2. Configure the Integration on Your Server

Add the Outlook integration to your server configuration. The integration automatically reads OUTLOOK_CLIENT_ID and OUTLOOK_CLIENT_SECRET from your environment variables:

import { createMCPServer, outlookIntegration } from "integrate-sdk/server";
 
export const { client: serverClient } = createMCPServer({
  apiKey: process.env.INTEGRATE_API_KEY,
  integrations: [
    outlookIntegration({
    }),
  ],
});

You can override the environment variables by passing explicit values:

outlookIntegration({
  clientId: process.env.CUSTOM_OUTLOOK_ID,
  clientSecret: process.env.CUSTOM_OUTLOOK_SECRET,
});

3. Client-Side Usage

The default client automatically includes all integrations. You can use it directly:

import { client } from "integrate-sdk";
 
await client.authorize("outlook");
const result = await client.outlook.listMessages({});
 
console.log(result);

If you're using a custom client, add the integration to the integrations array:

import { createMCPClient, outlookIntegration } from "integrate-sdk";
 
const customClient = createMCPClient({
  integrations: [outlookIntegration()],
});

Configuration Options

export interface OutlookIntegrationConfig {
  /** Microsoft OAuth client ID (defaults to OUTLOOK_CLIENT_ID env var) */
  clientId?: string;

Tools

outlook_accept_event

Accept a calendar event invitation

export interface OutlookAcceptEventParams {
    /** Event ID to accept */
    event_id: string;

outlook_create_draft

Create a draft message (not sent)

export interface OutlookCreateDraftParams {
    /** Email subject */
    subject: string;

outlook_create_event

Create a new calendar event

export interface OutlookCreateEventParams {
    /** Event subject/title */
    subject: string;

outlook_decline_event

Decline a calendar event invitation

export interface OutlookDeclineEventParams {
    /** Event ID to decline */
    event_id: string;

outlook_delete_event

Delete a calendar event

export interface OutlookDeleteEventParams {
    /** Event ID to delete */
    event_id: string;

outlook_delete_message

Delete a message permanently

export interface OutlookDeleteMessageParams {
    /** Message ID to delete */
    message_id: string;

outlook_find_meeting_times

Find available meeting times for a set of attendees

export interface OutlookFindMeetingTimesParams {
    /** Comma-separated attendee email addresses */
    attendees: string;

outlook_forward_message

Forward a message to one or more recipients

export interface OutlookForwardMessageParams {
    /** Message ID to forward */
    message_id: string;

outlook_get_contact

Get a specific contact by ID

export interface OutlookGetContactParams {
    /** Contact ID */
    contact_id: string;

outlook_get_event

Get a specific calendar event by ID

export interface OutlookGetEventParams {
    /** Event ID */
    event_id: string;

outlook_get_message

Get a specific message by ID

export interface OutlookGetMessageParams {
    /** Message ID */
    message_id: string;

outlook_get_schedule

Get free/busy schedule for a set of users or resources

export interface OutlookGetScheduleParams {
    /** Comma-separated email addresses to fetch schedules for */
    schedules: string;

outlook_list_calendars

List all calendars for the authenticated user

No parameters.

outlook_list_contacts

List contacts in the address book

export interface OutlookListContactsParams {
    /** Number of contacts to return */
    top?: number;

outlook_list_events

List calendar events

export interface OutlookListEventsParams {
    /** Number of events to return */
    top?: number;

outlook_list_mail_folders

List mail folders in the mailbox

export interface OutlookListMailFoldersParams {
    /** Number of folders to return */
    top?: number;

outlook_list_messages

List messages in the mailbox

export interface OutlookListMessagesParams {
    /** Number of messages to return */
    top?: number;

outlook_mark_message_read

Mark a message as read or unread

export interface OutlookMarkMessageReadParams {
    /** Message ID */
    message_id: string;

outlook_move_message

Move a message to another folder

export interface OutlookMoveMessageParams {
    /** Message ID to move */
    message_id: string;

outlook_reply_all_message

Reply all to a message

export interface OutlookReplyAllMessageParams {
    /** Message ID to reply all to */
    message_id: string;

outlook_reply_message

Reply to a message

export interface OutlookReplyMessageParams {
    /** Message ID to reply to */
    message_id: string;

outlook_search_messages

Search messages by keyword query

export interface OutlookSearchMessagesParams {
    /** Search query string */
    query: string;

outlook_send_message

Send a new email message

export interface OutlookSendMessageParams {
    /** Comma-separated recipient email addresses */
    to: string;

outlook_tentatively_accept_event

Tentatively accept a calendar event invitation

export interface OutlookTentativelyAcceptEventParams {
    /** Event ID to tentatively accept */
    event_id: string;

outlook_update_event

Update an existing calendar event

export interface OutlookUpdateEventParams {
    /** Event ID to update */
    event_id: string;

Notes

  • Category: Communication
  • Authentication mode: OAuth