Skip to main content
Glama
Zacccck

Claude-Read-Outlook-Attachments

by Zacccck

M365 Attachment Reader MCP Local

Claude-MCP-Read-Email-Attachments MCP server

Un servidor MCP local stdio para Claude Desktop que lee correos electrónicos de Outlook y sus archivos adjuntos a través de la API de Microsoft Graph.

Estado: Funcional para uso personal local de un solo usuario con Claude Desktop.


Por qué existe esto

El conector integrado de Microsoft 365 de Claude puede listar correos electrónicos, leer cuerpos de mensajes y consultar calendarios. Pero no puede leer el contenido real dentro de los archivos adjuntos de los correos electrónicos.

Eso significa que cuando dices "¿Qué dice el PDF en mi último correo electrónico?", Claude puede ver los metadatos del archivo adjunto, pero no el texto, las tablas, las imágenes o los documentos anidados dentro de él.

Este proyecto llena ese vacío, ejecutándose completamente en tu máquina local a través de stdio, sin necesidad de puntos finales públicos ni túneles.


Related MCP server: Outlook MCP Python

Reconocimiento / Distribución

  • Listado en punkpeye/awesome-mcp-servers, un registro importante de servidores MCP curado por la comunidad.

  • Indexado por Glama con una insignia de puntuación de servidor MCP.

Claude-MCP-Read-Email-Attachments MCP server

Qué hace

Este servidor se ejecuta como un proceso MCP local iniciado por Claude Desktop. Él:

  1. Se autentica con Microsoft 365 mediante el flujo de código de dispositivo

  2. Lista correos electrónicos de Outlook y sus archivos adjuntos a través de Microsoft Graph

  3. Descarga y analiza el contenido de los archivos adjuntos localmente

  4. Devuelve texto estructurado y bloques de imágenes directamente a Claude Desktop

Formatos soportados

Formato

Qué se extrae

PDF

Contenido de texto completo

PDF escaneado

Texto OCR, además de imágenes de página renderizadas opcionales

DOCX

Texto e imágenes incrustadas

DOC

Contenido de texto

PPTX / PPTM / PPSX / POTX

Texto de diapositivas, notas e imágenes incrustadas

PPT

Extracción de texto heredado con el mejor esfuerzo

XLSX / XLS / CSV

Todas las hojas convertidas a CSV

JPG / JPEG / PNG / GIF / WEBP / BMP / TIFF

Devueltos como bloques de imagen MCP para análisis visual

ZIP / RAR / 7Z

Contenido del archivo analizado recursivamente archivo por archivo

MSG

Asunto, remitente, cuerpo y archivos adjuntos incrustados

TXT / MD / JSON / XML / HTML

Texto sin formato

Outlook itemAttachment

Contenido de texto

Herramientas MCP

Herramienta

Descripción

health_check

Comprobar si el servidor está activo

begin_auth

Iniciar el flujo de inicio de sesión con código de dispositivo

auth_status

Comprobar el estado de autenticación

list_recent_messages

Listar correos electrónicos recientes de Outlook

list_email_attachments

Listar archivos adjuntos para un correo electrónico específico

read_email_attachment

Descargar, analizar y devolver el contenido del archivo adjunto


Casos de uso en el mundo real

Operaciones de venta / Retail

"Extrae los últimos 5 correos electrónicos del Panel de Control Diario, lee los archivos adjuntos de Excel y analiza la tendencia de ventas en todas las ubicaciones de las tiendas durante la última semana."

Finanzas / Contabilidad

"Busca el último correo electrónico de nuestro proveedor con 'Factura' en el asunto, lee el archivo adjunto PDF y extrae el monto total, la fecha de vencimiento y las partidas individuales."

"Abre el correo electrónico más reciente de legal@partner.com, lee el archivo adjunto de Word o PowerPoint y resume los términos clave."

RRHH / Reclutamiento

"Busca correos electrónicos de recruiting@company.com con archivos adjuntos, lee cada PDF de currículum y crea una tabla comparativa de candidatos."


Requisitos previos

  • Windows 10/11, macOS o Linux

  • Node.js 20 o posterior

  • Claude Desktop

  • Una cuenta de Microsoft 365 / Outlook

  • Un registro de aplicación de Microsoft Entra (ver Paso 1 a continuación)


Configuración

1. Crear un registro de aplicación de Microsoft Entra

Ve al Centro de administración de Microsoft EntraRegistros de aplicacionesNuevo registro.

  • Nombre: el que quieras, p. ej. m365-mcp-local

  • Tipos de cuenta admitidos: Cuentas en cualquier directorio organizativo y cuentas personales de Microsoft

Luego:

  1. Copia el ID de aplicación (cliente) de la página de Información general

  2. Ve a Autenticación → habilita Permitir flujos de cliente públicoGuardar

  3. Ve a Permisos de APIAgregar un permisoMicrosoft GraphPermisos delegados → agrega User.Read y Mail.ReadConceder consentimiento de administrador

  4. Ve a Manifiesto → busca requestedAccessTokenVersion (puede estar anidado dentro de api) → establécelo en 2Guardar

¿Por qué el paso 4? Cuando tu aplicación admite cuentas personales de Microsoft, Microsoft Entra requiere que los tokens de acceso sean v2. El portal no siempre establece esto automáticamente, y el punto final common fallará con AADSTS50059 si la versión del token sigue siendo null o 1. Si omites este paso, obtendrás errores invalid_grant durante begin_auth.

¿Usando integraciones de API v1? Solo establece esto en 2 si todos tus permisos de Graph/API admiten tokens v2 (todos los permisos delegados de Microsoft Graph lo hacen). Si estás integrando APIs personalizadas que solo aceptan tokens v1, usa M365_TENANT_ID=consumers (solo cuentas personales) o un ID de inquilino específico en lugar de common, y deja requestedAccessTokenVersion en su valor predeterminado.

2. Clonar e instalar

git clone https://github.com/Zacccck/Claude-MCP-Read-Email-Attachments.git
cd Claude-MCP-Read-Email-Attachments
npm install

3. Configurar variables de entorno

Copia el archivo de ejemplo:

cp .env.example .env

Edita .env y completa tu ID de cliente:

M365_CLIENT_ID=your-application-client-id-here
M365_TENANT_ID=common
M365_AUTO_OPEN_BROWSER=true

Referencia de variables:

Variable

Requerido

Descripción

M365_CLIENT_ID

✅ Sí

El ID de aplicación (cliente) de tu aplicación Entra

M365_TENANT_ID

No

El valor predeterminado common funciona para la mayoría de las cuentas

M365_AUTO_OPEN_BROWSER

No

Establece true para abrir automáticamente la página de inicio de sesión de Microsoft

M365_MCP_DATA_DIR

No

Ruta personalizada para la caché de autenticación; se detecta automáticamente si se omite

4. Encuentra tu ruta de Node.js

Necesitarás la ruta completa a node.exe (Windows) o node (macOS/Linux) en el siguiente paso.

# Windows
where.exe node

# macOS / Linux
which node

Salida de ejemplo: C:\Program Files\nodejs\node.exe

5. Abre el archivo de configuración de Claude Desktop

Localiza y abre el archivo de configuración para tu plataforma:

Plataforma

Ruta

Windows (estándar)

%APPDATA%\Claude\claude_desktop_config.json

Windows (Tienda)

%LOCALAPPDATA%\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude\claude_desktop_config.json

macOS

~/Library/Application Support/Claude/claude_desktop_config.json

Si el archivo aún no existe, créalo.

6. Agrega el servidor a Claude Desktop

Agrega la siguiente entrada a claude_desktop_config.json:

{
  "mcpServers": {
    "m365-attachment-reader-local": {
      "command": "C:\\Program Files\\nodejs\\node.exe",
      "args": [
        "C:\\path\\to\\Claude-MCP-Read-Email-Attachments\\server.mjs"
      ],
      "env": {
        "M365_CLIENT_ID": "your-client-id",
        "M365_TENANT_ID": "common",
        "M365_AUTO_OPEN_BROWSER": "true"
      }
    }
  }
}

Consejos:

  • Usa la ruta absoluta completa del Paso 4 para command.

  • Reemplaza args[0] con la ruta real a server.mjs en tu máquina.

  • Si ya tienes otros servidores MCP en la configuración, fusiona esta entrada en el objeto mcpServers existente; no sobrescribas todo el archivo.

7. Reinicia Claude Desktop

Cierra completamente Claude Desktop y vuelve a abrirlo. Claude Desktop inicia el servidor MCP automáticamente; no necesitas ejecutar node server.mjs manualmente.

8. Autentícate con Microsoft 365

En Claude Desktop, escribe:

Please call begin_auth

Se abrirá una ventana del navegador (o recibirás una URL de inicio de sesión + código de dispositivo). Completa el flujo de inicio de sesión de Microsoft y luego verifica:

Please call auth_status

Deberías ver tu cuenta de Microsoft listada como autenticada.

9. Verifica que funciona

Ejecuta una comprobación de estado rápida:

Please call health_check

Luego intenta una solicitud real:

Show me my recent Outlook emails with attachments
Summarize the contents of the attachments from the latest email

Sugerencias de prompts para Claude

Please call begin_auth
Please call auth_status
Show me my recent Outlook emails with attachments
Summarize the contents of the attachments from the email
Find the latest invoice email and extract the total amount, due date, and line items from the PDF attachment

Solución de problemas

Problema

Solución

Claude no puede encontrar las herramientas MCP

Reinicia Claude Desktop completamente. Comprueba que las rutas command y args en la configuración sean correctas y absolutas.

Error invalid_grant con userCode vacío en los registros

Casi siempre es un desajuste de versión de token o tipo de cuenta en la aplicación Entra. Consulta las dos filas siguientes.

AADSTS50059: No tenant-identifying information found

Tu aplicación no admite el punto final common. Abre la aplicación Entra → Autenticación → establece Tipos de cuenta admitidos en Cuentas en cualquier directorio organizativo y cuentas personales de Microsoft, luego guarda.

Property api.requestedAccessTokenVersion is invalid al guardar tipos de cuenta

Abre la aplicación Entra → Manifiesto → establece requestedAccessTokenVersion en 2 → guarda. Luego intenta cambiar el tipo de cuenta nuevamente.

El código de dispositivo no aparece

Asegúrate de que begin_auth se haya llamado correctamente. No ingreses un código manualmente.

Quieres cambiar de cuenta de Microsoft

Reinicia Claude Desktop y llama a begin_auth nuevamente en una ventana de navegador privada.

Ubicación del registro de depuración

<M365_MCP_DATA_DIR>\debug.log: el valor predeterminado es un subdirectorio creado automáticamente junto a server.mjs.


Ejecución manual de desarrollo

Para depurar fuera de Claude Desktop, inicia el servidor manualmente:

cd Claude-MCP-Read-Email-Attachments
node .\server.mjs

Nota: No escribas en esa terminal. Es un proceso MCP stdio y espera un cliente MCP en la entrada/salida estándar.


Docker

Se incluye un Dockerfile para pruebas en contenedores:

docker build -t m365-attachment-reader-mcp-local .
docker run --rm -i `
  -e M365_CLIENT_ID=your-client-id `
  -e M365_TENANT_ID=common `
  -e M365_AUTO_OPEN_BROWSER=false `
  m365-attachment-reader-mcp-local

El contenedor sigue ejecutándose como un servidor stdio. Para el uso diario de Claude Desktop, el enfoque directo de node en el Paso 6 es más sencillo.


Estructura del proyecto

Claude-MCP-Read-Email-Attachments/
├── server.mjs
├── package.json
├── manifest.json
├── server.json
├── glama.json
├── Dockerfile
├── .env.example
├── .gitignore
├── LICENSE
└── README.md

Limitaciones

  • Solo un usuario: una instancia de servidor admite una cuenta de Microsoft a la vez

  • El estado de autenticación está en memoria: reiniciar el servidor requiere volver a autenticarse

  • Debes crear tu propia aplicación Entra y proporcionar tu propio ID de cliente

  • Las imágenes muy grandes pueden reducirse o omitirse para mantenerse dentro de los límites de carga útil de Claude Desktop

  • El análisis de .xls heredado es de mejor esfuerzo y menos confiable que .xlsx

  • No apto para alojamiento público o multiusuario


Licencia

MIT

Available Tools

6 tools
auth_statusMicrosoft 365 Auth StatusA

Check whether Microsoft 365 login for this local MCP process has completed.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior2/5

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

No annotations provided; description only states 'check whether login has completed' without disclosing what 'completed' means, return format, or side effects.

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 10-word sentence, front-loaded with verb and resource, no wasted words.

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?

Minimal for a simple tool; lacks explanation of what 'completed' means or what the output looks like. Without output schema, more detail would help.

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?

No parameters in schema; description adds context about 'local MCP process', which is useful. Baseline 4 for 0 params.

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?

Clearly states the verb 'Check whether' and the resource 'Microsoft 365 login for this local MCP process'. Distinguishes from siblings like begin_auth and health_check.

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?

Implies usage after beginning auth or to check login state, but no explicit when-to-use or when-not-to-use compared to alternatives.

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

begin_authBegin Microsoft 365 AuthA

Start Microsoft 365 device-code login for the local Claude Desktop MCP process.

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 only says 'start' without explaining the device-code flow, user interaction required, or what the tool returns. This lacks transparency about the process and side effects.

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 directly states purpose without unnecessary words. It is front-loaded and efficient.

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's complexity (initiating an authentication flow), the description is insufficient. It omits expected return values, required user action (e.g., entering device code), and how to proceed after the call. An output schema or more descriptive text 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 input schema has zero parameters (100% coverage by schema). For zero-parameter tools, the baseline is 4. The description adds no param-level details, but no details are needed.

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 'Start Microsoft 365 device-code login for the local Claude Desktop MCP process.' It uses a specific verb ('Start') and resource ('Microsoft 365 device-code login'), and distinguishes itself from siblings like 'auth_status' which likely checks authentication state.

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 indicates the tool's function (initiate device-code login) but provides no explicit guidance on when to use it versus alternatives like 'auth_status'. It does not mention prerequisites or when not to use it.

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

health_checkHealth CheckA

Verify that the local Outlook attachment reader MCP server is running and report auth state.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

No annotations provided, but description clearly conveys two behaviors: verifying server running and reporting auth state. Adequate for a simple 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?

Single sentence, front-loaded with key info, no wasted 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?

Simple tool with no parameters or output schema; description covers essential purpose and behavior, though response format is unspecified.

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?

No parameters, schema coverage 100%, baseline score of 4 applies; description adds no parameter info but none needed.

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?

Clearly states the tool verifies server running and reports auth state, with specific verb 'verify' and resource 'server and auth state'. Distinguishes from siblings like auth_status.

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?

Implied usage as a health check before other operations, but no explicit when-not or alternatives guidance.

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

list_email_attachmentsList Email AttachmentsC

List attachments for a specific Outlook email.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageIdYes
mailboxNome

TDQS

C2.7/5.0
Behavior2/5

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

No annotations provided, and the description does not disclose behavioral traits such as pagination, limits, or whether it returns metadata vs. content. The agent has no insight into side effects or safety.

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

Conciseness3/5

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

The description is concise (one sentence) but lacks structure. It is too minimal, omitting critical information that could be front-loaded.

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 absence of annotations, output schema, and parameter descriptions, the single sentence is insufficient. More context about usage and return value is necessary.

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%, and the description does not explain what the messageId parameter represents or the significance of the mailbox parameter (default 'me'). Elaboration on these is needed for correct usage.

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 ('List') and resource ('attachments for a specific Outlook email'). It distinguishes from sibling tools like list_recent_messages (lists emails) and read_email_attachment (reads a single attachment).

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. It does not mention prerequisites (e.g., needing a messageId from list_recent_messages) or when to use read_email_attachment instead.

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

list_recent_messagesList Recent Outlook MessagesB

List recent Outlook emails from Microsoft 365. By default this searches the Inbox, prefers emails with attachments, and can filter by subject or sender name/address.

ParametersJSON Schema
NameRequiredDescriptionDefault
mailboxNome
folderNoinbox
topNo
onlyWithAttachmentsNo
subjectContainsNo
fromContainsNo

TDQS

B3.4/5.0
Behavior3/5

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

Without annotations, description carries full burden. It discloses default search location and preference for attachments, but omits auth needs, rate limits, pagination, and behavior of 'recent'.

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

Conciseness4/5

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

Single sentence, no redundant words. Clear structure, though 'prefers' is slightly ambiguous.

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?

Covers core functionality but lacks details on return format, error handling, and auth. Given 6 params and no output schema, more context is warranted.

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?

With 0% schema description coverage, description adds meaning for most parameters (onlyWithAttachments, subjectContains, fromContains, folder, mailbox) but omits 'top' and uses vague 'prefers'.

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?

Clearly states it lists recent Outlook emails, specifies scope (Inbox default), and mentions filtering by subject and sender. Distinct from sibling attachment tools.

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 versus alternatives like list_email_attachments or read_email_attachment. Does not state prerequisites or exclusions.

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

read_email_attachmentRead Email AttachmentA

Download an Outlook attachment directly from Microsoft Graph and parse it locally. Supports PDF, OCR-scanned PDF, Word, PowerPoint, Excel, images, archives, MSG, and plain text. Large image previews are automatically downscaled to fit MCP payload limits.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageIdYes
attachmentIdYes
mailboxNome

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses supported file formats and automatic downscaling of large image previews, which are important behavioral traits. However, it omits details like auth requirements or rate limits.

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 sentences, no extraneous words. The first sentence states the core purpose, the second adds key details (formats, size handling). Very efficient and front-loaded.

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?

No output schema is provided, so the agent must infer the return format. The description does not explain what the tool returns (e.g., binary data, base64, parsed text) or how the IDs are used. Incomplete for a tool with no annotations and no output schema.

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 has three parameters with no descriptions. The description does not explain what messageId, attachmentId, or mailbox represent or how to obtain them, leaving the agent without guidance despite the schema having 0% 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 clearly states the action (download and parse) and resource (Outlook attachment). It differentiates from sibling tools like list_email_attachments and list_recent_messages by specifying it downloads and parses a single attachment's content.

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 reading attachment content after listing attachments, but does not explicitly state when to use or when not to, nor does it mention alternatives 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.

  1. 6 tool updatesv0.1.0
    • First observedauth_status
    • First observedbegin_auth
    • First observedhealth_check
    • First observedlist_email_attachments
    • First observedlist_recent_messages
    • First observedread_email_attachment

TDQS

B3.4/5.0

Scored across 6 tools

Disambiguation4/5

Tools are mostly distinct: auth_status and begin_auth handle authentication, health_check monitors server, list_recent_messages finds emails, list_email_attachments shows attachments for a specific email, and read_email_attachment downloads/parses attachments. However, list_recent_messages and list_email_attachments could be confused if descriptions are glossed over, as both relate to emails and attachments.

Naming Consistency3/5

Naming patterns are mixed: some tools start with verbs (begin_auth, list_recent_messages, list_email_attachments, read_email_attachment) while others are nouns (auth_status, health_check). The verb+noun pattern is not consistently applied, reducing predictability.

Tool Count5/5

With 6 tools, the server is well-scoped for its purpose. It covers authentication (begin_auth, auth_status), server health (health_check), email discovery (list_recent_messages), attachment listing (list_email_attachments), and attachment reading (read_email_attachment). No extraneous tools.

Completeness4/5

The tool surface covers the core workflow: authenticate, find emails with attachments, list attachments, and read them. Minor gaps include lack of tools for getting email metadata beyond attachments or searching other folders, but these are acceptable for an attachment-focused server.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A Python-based MCP server for Microsoft Outlook integration using Microsoft Graph API, enabling email reading/sending, calendar management, and contact operations through Claude Desktop.
    1
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server that enables Claude to manage Outlook emails, including reading, sending, organizing, drafting, and bulk operations via Microsoft Graph API.
    15
    1
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    A local MCP server that connects Claude Desktop to a personal Hotmail/Outlook.com mailbox via Microsoft Graph API, enabling email management, rule handling, and composing messages.
    25
    MIT