teams-outlook-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@teams-outlook-mcpShow me my unread emails from this morning."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
teams-outlook-mcp
MCP server for Microsoft Teams and Outlook over the Graph API.
The token decides what the server offers. The tool list is derived at startup from the scp claim of the access token: a permission that was never consented to produces no tool, and one granted later produces one on the next restart, with no code change. graph_scopes reports what was granted and why anything is missing.
Tools
Tool | Needs |
| nothing |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Images come back as images rather than links, from mail attachments and from the inline images in Teams messages alike, so a screenshot someone posted can actually be read.
Chats are addressed by chat_id or by chat_name: a group chat by its topic, a one-to-one by the other person. A name matching several chats refuses rather than guesses, because a send cannot be taken back.
Every outbound message carries the assistant signature.
Related MCP server: ms-teams-mcp
Install
Needs Node 18 or newer.
npm install
node auth.jsauth.js is a device-code sign-in: it prints a URL and a code, waits, then caches the tokens and prints the scopes that were actually granted.
A scope needing an administrator's approval blocks the whole consent screen, not only itself, so a run can leave one out and come back for it once an admin has granted it:
node auth.js --without Channel.ReadBasic.AllRegister the server with your MCP client as stdio: command node, argument the full path to index.js.
Config
config.json next to index.js, or the matching environment variables. A value left at the example placeholder counts as absent, so a half-filled config.json falls through to the environment instead of sending a placeholder to Entra.
Key | Environment | Meaning |
|
| Your Entra tenant. Required. |
|
| The app registration to sign in against. Required. |
|
| Appended to every message sent. Defaults to a generic one rather than to nothing, so a reader can always tell a program wrote it. |
|
| Where the token cache lives. Defaults to |
|
| Withholds every sending tool whatever the token allows. |
config.json is gitignored. The token cache is deliberately this server's own: another tool refreshing the same cache with a narrower scope list would quietly cost this one its permissions.
Notes
A scope consented after the cache was written never arrives through a refresh. Azure answers
AADSTS65001, and signing in again is the way through; the error says so.Inline images in Teams are not attachments. They live in the message body as absolute Graph
hostedContentsURLs andmessage.attachmentsstays empty. Mail is the other shape: inline images are attachments withisInlineand acontentIdthat the body references ascid:.Graph refuses
$filterand$searchin one request, somail_listdrops the filters when a search is given.Attachments over 4 MB are described rather than inlined.
Tests
npm testCovers the scope gating and the chat name resolution, which are the parts where being wrong is either invisible or expensive.
This server cannot be deployed
Maintenance
Related MCP Connectors
Permissioned access to Outlook, OneDrive and Teams via the user's own Microsoft account
Read email/chat conversations, messages, contacts and teams; draft, send and update threads.
Manage Microsoft 365 email, calendar, contacts and inbox rules via the Graph API with OAuth 2.0.
Messaging tools for AI agents: send messages, manage chats, groups and channels.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with Microsoft Teams, users, chats, files, and organizational data via Microsoft Graph APIs, with added support for creating, updating, listing, and inspecting Teams meetings and calendar events.18 npmMIT
- -licenseNot gradedqualityNot gradedmaintenanceProvides access to Microsoft Teams, Outlook, Calendar, and SharePoint via the Microsoft Graph API, enabling natural language interactions to read and manage messages, emails, events, and files.1-
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to manage Outlook calendars and emails through the Microsoft Graph API, supporting calendar events, email operations, and selective tool control.9 npm1MIT
- AlicenseCqualityCmaintenanceEnables AI assistants to interact with Microsoft 365 and Office services through the Microsoft Graph API, providing tools for email, calendar, files, Teams, SharePoint, and more with configurable permissions and output formats.188MIT