How to integrate Outlook MCP with OpenCode

Trusted by teams at
AWS
Glean
Zoom
Airtable

30 min · no commitment · see it on your stack

Outlook logo
OpenCode logo
divider

How to integrate Outlook MCP with OpenCode

This guide explains how to connect Outlook MCP to OpenCode using Composio Connect, which simplifies OAuth, API changes, and reliability concerns.

There are two ways to set this up:

Also integrate Outlook with

Why use Composio?

Composio provides a single MCP server or CLI tool that exposes a set of meta-tools, allowing you to:

  • Connect to 1,000+ apps with on-demand tool loading, so you do not fill your LLM context window with unnecessary tool definitions.
  • Use programmatic tool calling through a remote Bash tool, letting LLMs write their own code to handle complex tool chaining. This reduces back-and-forth for frequent tool calls.
  • Handle large tool responses outside the LLM context to keep conversations lean.

Connect Outlook with OpenCode

Option 1: Using Composio CLI

1. Install Composio CLI

Install the Composio CLI, authenticate, and initialize your project:

bash
# Install the Composio CLI
curl -fsSL https://composio.dev/install | bash

# Authenticate with Composio
composio login

During login, you will be redirected to the sign-in page. Finish the flow and you are all set.

Composio CLI authorization screen

2. Authorize Outlook

Once the CLI is installed, it is essentially done. Give OpenCode access to your apps with these steps:

  1. Launch OpenCode.
  2. Prompt it to "Authenticate with Outlook Composio".
  3. Complete the authentication and authorization flow, and your Outlook integration is all set.
  4. Start asking anything you want.

Option 2: Using Composio MCP

You can also connect Outlook to OpenCode by adding Composio as an MCP server through the OpenCode CLI.

1. Add the Composio MCP server

bash
opencode mcp add

This launches an interactive prompt.

2. Fill in the fields

FieldValue
Namecomposio
Typeremote
URLhttps://connect.composio.dev/mcp
Require OAuthYes
Have client IDNo
OpenCode MCP server interactive prompt for Composio

Alternatively, you can skip the interactive prompt and paste the configuration directly into your OpenCode config file.

Open your global OpenCode config:

bash
open ~/.config/opencode/opencode.json

Add this under the mcp key and save the file.

bash
{
  "mcp": {
    "composio": {
      "type": "remote",
      "url": "https://connect.composio.dev/mcp",
      "enabled": true
    }
  }
}

3. Authenticate

Authenticate the Composio MCP server you just added:

bash
opencode mcp auth composio

This opens a browser session. Authorize Composio and you are done.

Composio browser authorization for OpenCode MCP

4. Verify installation

bash
opencode mcp list

5. Connect Outlook with OpenCode

Now, in the chat, ask the agent to connect to Outlook or give it any Outlook-related task.

For example, ask it to:

  • "Download latest attachments from your inbox"
  • "Create new calendar for project deadlines"
  • "Add rule to move newsletters to folder"

It will prompt you to authenticate and authorize access to Outlook.

That is it. Composio tools are now available in OpenCode, and your Outlook account is ready to use.

Supported Tools & Triggers

Tools
Triggers
Add mail attachmentTool to add an attachment to an email message.
Create calendarTool to create a new calendar in the signed-in user's mailbox.
Create contact folderTool to create a new contact folder in the user's mailbox.
Create Email RuleCreate email rule filter with conditions and actions
Create mail folderTool to create a new mail folder.
Create master categoryTool to create a new category in the user's master category list.
Delete mail folderDelete a mail folder from the user's mailbox.
Download Outlook attachmentDownloads a specific file attachment from an email message in a microsoft outlook mailbox; the attachment must contain 'contentbytes' (binary data) and not be a link or embedded item.
Get mailbox settingsTool to retrieve mailbox settings.
Get mail deltaTool to retrieve incremental changes (delta) of messages in a mailbox.
Get mail tipsTool to retrieve mail tips such as automatic replies and mailbox full status.
Get master categoriesTool to retrieve the user's master category list.
Get supported languagesTool to retrieve supported languages in the user's mailbox.
Get supported time zonesTool to retrieve supported time zones in the user's mailbox.
List Outlook calendarsTool to list calendars in the signed-in user's mailbox.
List event attachmentsTool to list attachments for a specific outlook calendar event.
List Outlook attachmentsLists metadata (like name, size, and type, but not `contentbytes`) for all attachments of a specified outlook email message.
List event remindersTool to retrieve reminders for events occurring within a specified time range.
Add event attachmentAdds an attachment to a specific outlook calendar event.
Create Calendar EventCreates a new outlook calendar event, ensuring `start datetime` is chronologically before `end datetime`.
Create contactCreates a new contact in a microsoft outlook user's contacts folder.
Create email draftCreates an outlook email draft with subject, body, recipients, and an optional attachment.
Create a draft replyCreates a draft reply in the specified user's outlook mailbox to an existing message (identified by a valid `message id`), optionally including a `comment` and cc/bcc recipients.
Delete ContactPermanently deletes an existing contact, using its `contact id` (obtainable via 'list user contacts' or 'get contact'), from the outlook contacts of the user specified by `user id`.
Delete Calendar EventDeletes an existing calendar event, identified by its unique `event id`, from a specified user's microsoft outlook calendar, with an option to send cancellation notifications to attendees.
Get contactRetrieves a specific outlook contact by its `contact id` from the contacts of a specified `user id` (defaults to 'me' for the authenticated user).
Get contact foldersTool to retrieve a list of contact folders in the signed-in user's mailbox.
Get calendar eventRetrieves the full details of a specific calendar event by its id from a user's outlook calendar, provided the event exists.
Get email messageRetrieves a specific email message by its id from the specified user's outlook mailbox.
Get Outlook profileRetrieves the microsoft outlook profile for a specified user.
Get scheduleRetrieves free/busy schedule information for specified email addresses within a defined time window.
List Outlook contactsRetrieves a user's microsoft outlook contacts, from the default or a specified contact folder.
List eventsRetrieves events from a user's outlook calendar via microsoft graph api, supporting pagination, filtering, property selection, sorting, and timezone specification.
List mail foldersTool to list a user's top-level mail folders.
List MessagesRetrieves a list of email messages from a specified mail folder in an outlook mailbox, with options for filtering (including by conversationid to get all messages in a thread), pagination, and sorting; ensure 'user id' and 'folder' are valid, and all date/time strings are in iso 8601 format.
Move message to folderMove a message to another folder within the specified user's mailbox.
Reply to EmailSends a plain text reply to an outlook email message, identified by `message id`, allowing optional cc and bcc recipients.
Search Outlook messagesSearches messages in a microsoft 365 or enterprise outlook account mailbox, supporting filters for sender, subject, attachments, pagination, and sorting by relevance or date.
Send emailSends an email with subject, body, recipients, and an optional attachment via microsoft graph api; attachments require a non-empty file with valid name and mimetype.
Update calendar eventUpdates specified fields of an existing outlook calendar event.
Update ContactUpdates an existing outlook contact, identified by `contact id` for the specified `user id`, requiring at least one other field to be modified.
Update email messageUpdates specified properties of an existing email message; `message id` must identify a valid message within the specified `user id`'s mailbox.
Update mailbox settingsTool to update mailbox settings for the signed-in user.

Way Forward

Now that Outlook is connected, extend your setup by connecting the other apps you already use every day, so your agent can run true cross-app workflows end to end.

  • Connect Calendar to turn threads into scheduled meetings automatically.
  • Connect Slack or Teams to post summaries, approvals, and alerts where your team works.
  • Connect Notion, Linear, Jira, or Asana to convert requests into tickets, tasks, and docs.
  • Connect Drive, Dropbox, or OneDrive to fetch, file, and share attachments without manual steps.

Start with one workflow you do repeatedly, then keep adding apps as you find new handoffs. With everything behind a single MCP endpoint, your agent can coordinate multiple tools safely and reliably in one conversation.

How to build Outlook MCP Agent with another framework

FAQ

What are the differences in Tool Router MCP and Outlook MCP?

With a standalone Outlook MCP server, the agents and LLMs can only access a fixed set of Outlook tools tied to that server. However, with the Composio Tool Router, agents can dynamically load tools from Outlook and many other apps based on the task at hand, all through a single MCP endpoint.

Can I use Tool Router MCP with OpenCode?

Yes, you can. OpenCode fully supports MCP integration. You get structured tool calling, message history handling, and model orchestration while Tool Router takes care of discovering and serving the right Outlook tools.

Can I manage the permissions and scopes for Outlook while using Tool Router?

Yes, absolutely. You can configure which Outlook scopes and actions are allowed when connecting your account to Composio. You can also bring your own OAuth credentials or API configuration so you keep full control over what the agent can do.

How safe is my data with Composio Tool Router?

All sensitive data such as tokens, keys, and configuration is fully encrypted at rest and in transit. Composio is SOC 2 Type 2 compliant and follows strict security practices so your Outlook data and credentials are handled as safely as possible.

Used by agents from

Context
Letta
glean
HubSpot
Agent.ai
Altera
DataStax
Entelligence
Rolai
Context
Letta
glean
HubSpot
Agent.ai
Altera
DataStax
Entelligence
Rolai
Context
Letta
glean
HubSpot
Agent.ai
Altera
DataStax
Entelligence
Rolai

Never worry about agent reliability

We handle tool reliability, observability, and security so you never have to second-guess an agent action.