Skip to main content
Glama
lanSall

Outlook MCP

by lanSall

Outlook MCP

Blank repo no more — this is a local stdio MCP server for Microsoft Outlook via Microsoft Graph.

What you need on your PC

  1. Node.js 18+ (node -v)

  2. Your Azure app Application (client) ID and Directory (tenant) ID

  3. Azure app settings:

    • AuthenticationAllow public client flows = Yes (required for device-code login)

    • API permissions → Microsoft Graph Delegated:

      • User.Read

      • Mail.ReadWrite

      • Mail.Send

      • Calendars.Read

      • offline_access (usually included automatically)

    • Grant admin consent if your tenant requires it

A client secret is not required for this server (device-code / public client). If you previously pasted a secret in chat, rotate/delete it in Azure anyway.

Related MCP server: outlook-mcp-server

Install (on your Windows machine)

From this folder (MCPProject / this repo):

npm install

Optional one-time login test in a terminal:

$env:MS_CLIENT_ID="your-client-id"
$env:MS_TENANT_ID="your-tenant-id"
npm run login

Open the URL printed in the terminal, enter the code, sign in with your Microsoft account.

Cursor mcp.json config

Use this (Desktop). Point at the folder (uses package.json "main") or the entry file:

{
  "mcpServers": {
    "outlook-mcp": {
      "command": "node",
      "args": ["C:\\Users\\lance\\OneDrive\\MCPProject\\src\\index.js"],
      "env": {
        "MS_CLIENT_ID": "your-client-id",
        "MS_TENANT_ID": "your-tenant-id"
      }
    }
  }
}

Keep your OrCAD / MATLAB entries as they are. Do not put client secrets in chat or commit them.

After saving:

  1. Cursor → Settings → Tools & MCP

  2. Confirm outlook-mcp is connected (green)

  3. Ask the agent to run outlook_login (or call any mail tool — first use triggers device code on stderr)

  4. Complete the browser sign-in when prompted

Tokens are cached at %USERPROFILE%\.outlook-mcp\msal-cache.json.

Tools

Tool

Purpose

outlook_login

Device-code sign-in

outlook_auth_status

Check sign-in

outlook_sign_out

Clear cached tokens

outlook_get_profile

Who am I

outlook_list_emails

List folder messages

outlook_get_email

Read one message

outlook_search_emails

Search mailbox

outlook_send_email

Send mail

outlook_create_draft

Create draft

outlook_list_calendar

Upcoming events

Cloud Agents note

This stdio server runs on your Windows PC. Cursor Cloud Agents will not see it unless you also add a separate Cloud/HTTP MCP. For Desktop Agent chat on your machine, this config is enough.

Troubleshooting

Symptom

Fix

Missing MS_CLIENT_ID

Add it under env in mcp.json

Device code never appears

Check MCP server logs in Cursor; run npm run login in a terminal

AADSTS7000218 / public client errors

Enable Allow public client flows on the app

AADSTS65001 / consent

Add Graph delegated permissions; admin consent if needed

Wrong account type

Set tenant to common or consumers for personal Microsoft accounts

Available Tools

10 tools
outlook_auth_statusA

Check whether Outlook/Microsoft Graph is signed in.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden. It discloses that the tool 'checks' status, implying a non-destructive read operation. However, it does not elaborate on return format or side effects, leaving minor gaps for a tool that likely returns a boolean or status object.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence with no unnecessary words. It perfectly fits the simplicity of the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a status-check tool with no parameters and no output schema, the description provides all necessary context. It fully explains the tool's purpose without requiring additional details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the description correctly avoids parameter details. The baseline for no parameters is 4, and the description adds no confusion by mentioning parameters that don't exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function with a specific verb ('Check') and resource ('Outlook/Microsoft Graph is signed in'). It distinguishes itself from sibling tools by focusing on authentication status rather than actions like login, send, or list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for verifying sign-in status, but it does not explicitly mention when to use it versus alternatives like outlook_login or provide exclusions. The context is clear enough for a simple status check, but guidance is minimal.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

outlook_create_draftA

Create an email draft in Outlook (does not send).

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNo
toYes
bodyYes
subjectYes
bodyTypeNoText

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses the key behavioral trait that no email is actually sent, which is critical for avoiding confusion with the send tool. However, it omits other important behavioral context such as authentication requirements, return values, or storage of the draft.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence: 'Create an email draft in Outlook (does not send).' Every word adds value, the main action comes first, and the clarification about sending is kept brief. No redundant or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no annotations, no output schema, and five parameters with an enum, the description is too sparse. It fails to mention return values, whether authentication is required, or how the draft is stored, leaving the agent with insufficient context for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate by explaining parameter meanings. It does not mention any of the five parameters (to, cc, subject, body, bodyType) or their constraints. While the parameter names are self-explanatory, the description adds no semantic value beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action ('Create an email draft') and resource ('in Outlook'), and explicitly notes it does not send, distinguishing it from the sibling outlook_send_email tool. The purpose is unambiguous and specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by stating it creates a draft and does not send, which suggests it should be used when the user wants a draft rather than a sent email. However, it does not explicitly mention alternatives like 'use outlook_send_email to send', so the guidance is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

outlook_get_emailA

Get a single email by id, including body by default.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesMessage id from outlook_list_emails or outlook_search_emails
includeBodyNo

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the transparency burden. It discloses the default inclusion of the body, which is useful, but it omits potential error behavior, authentication prerequisites, and the full response structure. The added detail about includeBody provides some value beyond the basic action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that delivers the core action and key default behavior without any filler. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, with only two parameters and no output schema, but the description could be more complete. It does not mention the return format (e.g., which email fields are included beyond body) or any prerequisites like authentication, which are relevant given the sibling authentication tools. It covers the basic purpose but leaves some contextual gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50% (only id has a description). The description adds meaning for includeBody via 'including body by default', which clarifies the parameter's effect. However, it does not compensate for the lack of schema description on includeBody beyond the default, nor does it elaborate on the id parameter beyond the schema's existing explanation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get'), the resource ('a single email'), and the scope ('by id'). It distinguishes itself from sibling list/search tools by focusing on a single item retrieval, making its purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when a specific email ID is available, but it does not explicitly state when to choose this tool over outlook_list_emails or outlook_search_emails. The schema's id description hints at the source, but the tool description itself offers no explicit when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

outlook_get_profileA

Get the signed-in user's Outlook / Microsoft 365 profile.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses that it retrieves a profile but does not mention authentication requirements, error conditions, or what exactly the profile contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, immediately states action and resource, no superfluous words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter getter with no output schema, the description is adequate but could specify what profile fields are returned or authentication expectations. However, it's sufficiently complete for a simple read operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters with 100% coverage by virtue of being empty. Description needs no parameter details; baseline 4 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses specific verb 'Get' and resource 'the signed-in user's Outlook / Microsoft 365 profile', clearly distinguishing it from sibling tools that handle emails, calendar, or auth.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives; does not mention any prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

outlook_list_calendarB

List upcoming calendar events.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
daysNo

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of disclosing behavioral traits. It only says 'List', implying a read-only operation, but does not explain authentication requirements, rate limits, side effects, or the exact scope of 'upcoming'. This lack of detail leaves the agent guessing about the tool's behavior beyond the basic action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that states the core function without redundancy. Every word earns its place, and the structure is appropriate for the tool's simplicity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite the tool's simplicity, the description omits critical details: the meaning of the parameters, the format or scope of returned events, and any authentication expectations. With no output schema or parameter explanations, the description is insufficient for an agent to invoke the tool correctly beyond a basic guess.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema defines two parameters (top and days) with defaults and bounds but no descriptions. The tool description does not explain what these parameters control or how they relate to 'upcoming events'. Since schema coverage is 0%, the description fails to compensate for the missing parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists upcoming calendar events, using a specific verb and resource. It distinguishes itself from sibling tools like outlook_list_emails and outlook_get_profile, which handle different domains. The word 'upcoming' adds temporal scope, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, no prerequisites (e.g., authentication), and no exclusions. It merely states what the tool does without context on when it is appropriate or how it fits with sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

outlook_list_emailsB

List recent emails from a mail folder (default: inbox).

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
folderNoMail folder id or well-known name: inbox, sentitems, drafts, deleteditemsinbox
unreadOnlyNo

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden for behavioral disclosure. It only mentions 'recent' and 'default: inbox' but omits ordering, pagination, filtering, or authentication implications. The tool's read-only nature is implied but not stated, and no caveats like rate limits or response size are disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, crisp sentence without filler. It efficiently communicates the core function and default folder, earning its place with zero waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has three parameters, no output schema, and no annotations, yet the description explains none of the parameters beyond folder and provides no return format details. Given the moderate complexity, the description is too sparse; it does not explain the effects of 'top' or 'unreadOnly', nor when to use this over search.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33% (only folder is described). The tool description does not clarify the 'top' or 'unreadOnly' parameters, nor does it elaborate on folder values beyond what the schema already says. It adds minimal semantic value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'list' and the resource 'recent emails' within a mail folder, defaulting to inbox. It distinguishes itself from sibling tools like outlook_get_email (single email) and outlook_search_emails (search-based).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for viewing recent emails in a folder, but provides no explicit guidance on when to choose this instead of search_emails or get_email. No exclusions or alternative scenarios are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

outlook_loginA

Start Microsoft device-code login for Outlook. Returns a URL and code (also printed to stderr). Open the URL, enter the code, and sign in.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoForce a fresh login even if a cached token exists

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and does disclose non-obvious behavior: it returns a URL and code, and also prints the code to stderr. It could add details about token caching or session persistence, but the core interactive flow is transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences front-load the purpose and then provide actionable steps. Every word earns its place, with no repetition of schema content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an interactive login tool with one optional parameter and no output schema, the description sufficiently covers what is returned (URL and code) and the required user action. It lacks explicit error/timeout handling, but overall the context is complete for invoking and guiding the user.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter 'force' is fully described in the schema with a default and explanation, giving 100% schema coverage. The description itself adds no parameter-level detail, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific action, 'Start Microsoft device-code login for Outlook,' clearly identifying the resource and purpose. This distinguishes it from sibling tools like outlook_auth_status and outlook_sign_out.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear usage context: call this to begin login, then open the provided URL and enter the code. It does not explicitly name alternatives or exclusions, but the login initiation is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

outlook_search_emailsB

Search mailbox messages with a free-text query.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
queryYesSearch text, e.g. from:boss@contoso.com invoice

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the search action but does not reveal expected output format, result limits, sort order, or that this is a read-only operation, which is significant for an email search tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that immediately conveys the essential action. It contains no fluff or redundant information, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, no annotations, and only a terse description, the tool lacks crucial context such as return value structure, pagination behavior, and whether authentication is required. Given that the tool takes two parameters and performs a search, this level of detail is insufficient for reliable invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers the 'query' parameter with an example, but the 'top' parameter lacks any description. The tool description adds only the phrase 'free-text query,' which slightly clarifies the query parameter but does not explain the 'top' parameter's meaning or default behavior, leaving a gap in schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description begins with a specific verb 'search' and clearly identifies the resource as 'mailbox messages.' It also specifies the mechanism ('free-text query'), which distinguishes it from sibling tools like outlook_list_emails that likely enumerate messages without a search term.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention that it should be used for keyword-based searching as opposed to listing all emails, nor does it indicate any exclusions or prerequisites such as authentication.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

outlook_send_emailC

Send an email immediately from the signed-in mailbox.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNo
toYes
bodyYes
subjectYes
bodyTypeNoText

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It only mentions sending from the signed-in mailbox, but does not disclose irreversibility, potential errors, response behavior, or required permissions beyond the implicit auth. This is a significant gap for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no filler words. It is front-loaded with the action ('Send an email') and includes a relevant qualifier ('immediately'), making it well-structured for its length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 5 parameters, no output schema, and no annotations, the description is far from complete. It lacks critical information about return values, error handling, and parameter guidance, making it insufficient for an agent to invoke the tool confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, but it mentions no parameters at all. The schema provides names and types but no detailed semantics, and the description adds no meaning to 'to', 'subject', 'body', 'cc', or 'bodyType'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Send') and resource ('email') with a clear scope ('from the signed-in mailbox'). It clearly states the action but does not explicitly differentiate from the sibling tool 'outlook_create_draft', though 'immediately' hints at the distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The word 'immediately' implies a usage context (send now vs. draft for later), but the description does not explicitly state when to use this tool instead of alternatives like 'outlook_create_draft'. There are no when-not-to-use instructions or named alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

outlook_sign_outA

Clear cached Microsoft tokens for this MCP server.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the core behavior—clearing cached tokens—but with no annotations, it carries the full burden. It does not explain side effects (e.g., requiring re-authentication) or whether server-side tokens are also invalidated, leaving ambiguity about its impact.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with no filler. It efficiently communicates the action and scope, earning the maximum score for conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless tool with no output schema, the description is largely complete: it states the action and scope. However, it omits any context about the user's expectations after sign-out (e.g., whether they need to log in again), which would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and the schema coverage is 100% (trivially). The description does not need to explain parameter semantics, so the baseline of 4 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('Clear') and resource ('cached Microsoft tokens'), and the scope ('for this MCP server'). It distinguishes from sibling tools like outlook_login and outlook_auth_status by describing the sign-out/cleanup action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit guidance on when to use this tool versus alternatives. It does not mention that this should be used when a user wants to log out or switch accounts, nor does it note any exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 10 tool updatesv1.0.0
    • First observedoutlook_auth_status
    • First observedoutlook_create_draft
    • First observedoutlook_get_email
    • First observedoutlook_get_profile
    • First observedoutlook_list_calendar
    • First observedoutlook_list_emails
    • First observedoutlook_login
    • First observedoutlook_search_emails
    • First observedoutlook_send_email
    • First observedoutlook_sign_out

TDQS

A3.6/5.0
Disambiguation5/5

Each tool targets a distinct action or resource: auth login, status, sign out; profile retrieval; email list, get, search, send, draft; calendar list. No two tools overlap in purpose, so an agent can unambiguously select the right one.

Naming Consistency4/5

All tools share the 'outlook_' prefix and mostly follow verb_noun naming (list_emails, get_email, send_email, create_draft). 'auth_status' and 'sign_out' deviate slightly from the pattern, but overall the style is consistent and readable.

Tool Count5/5

10 tools is a well-scoped set for an Outlook MCP server covering auth, profile, email, and calendar. Each tool serves a clear function without unnecessary bloat or redundancy.

Completeness3/5

Core email and auth workflows are covered, but obvious gaps exist: no create/update/delete for calendar events, no email delete/reply/move, and no update for drafts. The domain is only partially addressed, falling short of full lifecycle coverage.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A local MCP server that connects Codex to Microsoft Graph and Gmail for reading and managing personal mail and calendar accounts.
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    A lightweight MCP server for personal Microsoft Outlook/Hotmail accounts, enabling email search, reading, attachment management, and folder operations via Microsoft Graph API with OAuth device-code flow.
    6
    1
    -
  • F
    license
    A
    quality
    B
    maintenance
    An MCP server that enables reading and managing Microsoft 365 / Outlook emails through Microsoft Graph API, allowing users to list, search, send, draft, and authenticate using device code flow.
    17
    -
  • A
    license
    A
    quality
    A
    maintenance
    Local-first Microsoft Outlook MCP server: a single Go binary that manages calendar events and mail through the Microsoft Graph API over stdio, with tokens stored in the OS keychain and no Entra ID app registration required. Exposes four aggregate tools (calendar, mail, account, system) dispatched by an operation verb, with multi-account support and read-only and mail-gating modes.
    4
    41
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/lanSall/MCPProject'

If you have feedback or need assistance with the MCP directory API, please join our Discord server