Skip to main content
Glama
Zacccck

Claude-Read-Outlook-Attachments

by Zacccck

M365 Attachment Reader MCP Local

Claude-MCP-Read-Email-Attachments MCP server

Ein lokaler stdio MCP-Server für Claude Desktop, der Outlook-E-Mails und deren Anhänge über die Microsoft Graph API liest.

Status: Funktional für den persönlichen Einzelbenutzer-Einsatz lokal mit Claude Desktop.


Warum existiert dieses Projekt?

Claudes integrierter Microsoft 365-Connector kann E-Mails auflisten, Nachrichtentexte lesen und Kalender überprüfen. Er kann jedoch nicht den tatsächlichen Inhalt von E-Mail-Anhängen lesen.

Das bedeutet, wenn Sie sagen: „Was steht in dem PDF in meiner neuesten E-Mail?“, kann Claude die Metadaten des Anhangs sehen, aber nicht den Text, die Tabellen, Bilder oder eingebetteten Dokumente darin.

Dieses Projekt schließt diese Lücke – es läuft vollständig auf Ihrem lokalen Computer über stdio, ohne dass öffentliche Endpunkte oder Tunnel erforderlich sind.


Related MCP server: Outlook MCP Python

Anerkennung / Verbreitung

  • Gelistet in punkpeye/awesome-mcp-servers, einem wichtigen, von der Community kuratierten Verzeichnis für MCP-Server.

  • Indexiert von Glama mit einem MCP-Server-Score-Badge.

Claude-MCP-Read-Email-Attachments MCP server

Was es tut

Dieser Server läuft als lokaler MCP-Prozess, der von Claude Desktop gestartet wird. Er:

  1. Authentifiziert sich bei Microsoft 365 über den Device-Code-Flow

  2. Listet Outlook-E-Mails und deren Anhänge über Microsoft Graph auf

  3. Lädt Anhangsinhalte lokal herunter und analysiert sie

  4. Gibt strukturierte Text- und Bildblöcke direkt an Claude Desktop zurück

Unterstützte Formate

Format

Was wird extrahiert

PDF

Vollständiger Textinhalt

Gescannte PDF

OCR-Text sowie optional gerenderte Seitenbilder

DOCX

Text und eingebettete Bilder

DOC

Textinhalt

PPTX / PPTM / PPSX / POTX

Folientext, Notizen und eingebettete Bilder

PPT

Legacy-Textextraktion nach bestem Bemühen

XLSX / XLS / CSV

Alle Tabellenblätter in CSV konvertiert

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

Rückgabe als MCP-Bildblöcke zur visuellen Analyse

ZIP / RAR / 7Z

Archivinhalte werden rekursiv Datei für Datei analysiert

MSG

Betreff, Absender, Textkörper und eingebettete Anhänge

TXT / MD / JSON / XML / HTML

Rohtext

Outlook itemAttachment

Textinhalt

MCP-Tools

Tool

Beschreibung

health_check

Überprüft, ob der Server aktiv ist

begin_auth

Startet den Device-Code-Login-Flow

auth_status

Überprüft den Authentifizierungsstatus

list_recent_messages

Listet aktuelle Outlook-E-Mails auf

list_email_attachments

Listet Anhänge für eine bestimmte E-Mail auf

read_email_attachment

Lädt den Anhang herunter, analysiert ihn und gibt den Inhalt zurück


Praxisbeispiele

Einzelhandel / Vertrieb

„Rufe die letzten 5 täglichen Dashboard-E-Mails ab, lies die Excel-Anhänge und analysiere den Verkaufstrend über alle Standorte hinweg in der letzten Woche.“

Finanzen / Buchhaltung

„Finde die neueste E-Mail unseres Anbieters mit 'Rechnung' im Betreff, lies den PDF-Anhang und extrahiere den Gesamtbetrag, das Fälligkeitsdatum und die Einzelposten.“

Recht / Vertragsprüfung

„Öffne die aktuellste E-Mail von legal@partner.com, lies den Word- oder PowerPoint-Anhang und fasse die wichtigsten Bedingungen zusammen.“

Personalwesen / Recruiting

„Finde E-Mails von recruiting@company.com mit Anhängen, lies jedes Lebenslauf-PDF und erstelle eine Vergleichstabelle der Kandidaten.“


Voraussetzungen

  • Windows 10/11, macOS oder Linux

  • Node.js 20 oder neuer

  • Claude Desktop

  • Ein Microsoft 365 / Outlook-Konto

  • Eine Microsoft Entra-App-Registrierung (siehe Schritt 1 unten)


Einrichtung

1. Microsoft Entra-App-Registrierung erstellen

Gehen Sie zum Microsoft Entra Admin CenterApp-RegistrierungenNeue Registrierung.

  • Name: Beliebig, z. B. m365-mcp-local

  • Unterstützte Kontotypen: Konten in einem beliebigen Organisationsverzeichnis und persönliche Microsoft-Konten

Dann:

  1. Kopieren Sie die Anwendungs-ID (Client-ID) von der Übersichtsseite

  2. Gehen Sie zu Authentifizierung → aktivieren Sie Öffentliche Client-Flows zulassenSpeichern

  3. Gehen Sie zu API-BerechtigungenBerechtigung hinzufügenMicrosoft GraphDelegierte Berechtigungen → fügen Sie User.Read und Mail.Read hinzu → Administratoreinwilligung erteilen

  4. Gehen Sie zu Manifest → suchen Sie requestedAccessTokenVersion (kann innerhalb von api verschachtelt sein) → setzen Sie es auf 2Speichern

Warum Schritt 4? Wenn Ihre App persönliche Microsoft-Konten unterstützt, erfordert Microsoft Entra, dass Zugriffstoken v2 sind. Das Portal setzt dies nicht immer automatisch, und der common-Endpunkt schlägt mit AADSTS50059 fehl, wenn die Token-Version noch null oder 1 ist. Wenn Sie diesen Schritt überspringen, erhalten Sie während begin_auth invalid_grant-Fehler.

Verwendung von v1-API-Integrationen? Setzen Sie dies nur auf 2, wenn alle Ihre Graph/API-Berechtigungen v2-Token unterstützen (alle delegierten Microsoft Graph-Berechtigungen tun dies). Wenn Sie benutzerdefinierte APIs integrieren, die nur v1-Token akzeptieren, verwenden Sie M365_TENANT_ID=consumers (nur persönliche Konten) oder eine spezifische Mandanten-ID anstelle von common und lassen Sie requestedAccessTokenVersion auf dem Standardwert.

2. Klonen und Installieren

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

3. Umgebungsvariablen konfigurieren

Kopieren Sie die Beispieldatei:

cp .env.example .env

Bearbeiten Sie .env und tragen Sie Ihre Client-ID ein:

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

Variablenreferenz:

Variable

Erforderlich

Beschreibung

M365_CLIENT_ID

✅ Ja

Die Anwendungs-ID (Client-ID) Ihrer Entra-App

M365_TENANT_ID

Nein

Standard common funktioniert für die meisten Konten

M365_AUTO_OPEN_BROWSER

Nein

Auf true setzen, um die Microsoft-Login-Seite automatisch zu öffnen

M365_MCP_DATA_DIR

Nein

Benutzerdefinierter Pfad für Auth-Cache; wird automatisch erkannt, wenn weggelassen

4. Node.js-Pfad finden

Sie benötigen den vollständigen Pfad zu node.exe (Windows) oder node (macOS/Linux) für den nächsten Schritt.

# Windows
where.exe node

# macOS / Linux
which node

Beispielausgabe: C:\Programme\nodejs\node.exe

5. Konfigurationsdatei von Claude Desktop öffnen

Suchen und öffnen Sie die Konfigurationsdatei für Ihre Plattform:

Plattform

Pfad

Windows (Standard)

%APPDATA%\Claude\claude_desktop_config.json

Windows (Store)

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

macOS

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

Falls die Datei noch nicht existiert, erstellen Sie sie.

6. Server zu Claude Desktop hinzufügen

Fügen Sie den folgenden Eintrag zu claude_desktop_config.json hinzu:

{
  "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"
      }
    }
  }
}

Tipps:

  • Verwenden Sie den vollständigen absoluten Pfad aus Schritt 4 für command.

  • Ersetzen Sie args[0] durch den tatsächlichen Pfad zu server.mjs auf Ihrem Computer.

  • Wenn Sie bereits andere MCP-Server in der Konfiguration haben, führen Sie diesen Eintrag in das bestehende mcpServers-Objekt zusammen – überschreiben Sie nicht die gesamte Datei.

7. Claude Desktop neu starten

Beenden Sie Claude Desktop vollständig und öffnen Sie es erneut. Claude Desktop startet den MCP-Server automatisch – Sie müssen node server.mjs nicht manuell ausführen.

8. Mit Microsoft 365 authentifizieren

Geben Sie in Claude Desktop ein:

Please call begin_auth

Ein Browserfenster öffnet sich (oder Sie erhalten eine Login-URL + Device-Code). Schließen Sie den Microsoft-Login-Flow ab und überprüfen Sie dann:

Please call auth_status

Sie sollten Ihr Microsoft-Konto als authentifiziert aufgelistet sehen.

9. Überprüfen, ob es funktioniert

Führen Sie einen schnellen Health-Check durch:

Please call health_check

Versuchen Sie dann eine echte Anfrage:

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

Empfohlene Claude-Prompts

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

Fehlerbehebung

Problem

Lösung

Claude findet keine MCP-Tools

Starten Sie Claude Desktop vollständig neu. Überprüfen Sie, ob die Pfade für command und args in der Konfiguration korrekt und absolut sind.

invalid_grant-Fehler mit leerem userCode in den Logs

Fast immer ein Token-Versions- oder Kontotyp-Konflikt in der Entra-App. Siehe die nächsten zwei Zeilen.

AADSTS50059: No tenant-identifying information found

Ihre App unterstützt den common-Endpunkt nicht. Öffnen Sie die Entra-App → Authentifizierung → setzen Sie Unterstützte Kontotypen auf Konten in einem beliebigen Organisationsverzeichnis und persönliche Microsoft-Konten, dann speichern.

Property api.requestedAccessTokenVersion is invalid beim Speichern der Kontotypen

Öffnen Sie die Entra-App → Manifest → setzen Sie requestedAccessTokenVersion auf 2 → speichern. Versuchen Sie dann erneut, den Kontotyp zu ändern.

Device-Code wird nicht angezeigt

Stellen Sie sicher, dass begin_auth erfolgreich aufgerufen wurde. Geben Sie keinen Code manuell ein.

Microsoft-Konten wechseln

Starten Sie Claude Desktop neu und rufen Sie begin_auth erneut in einem privaten Browserfenster auf.

Speicherort der Debug-Logs

<M365_MCP_DATA_DIR>\debug.log — standardmäßig ein Unterverzeichnis, das automatisch neben server.mjs erstellt wird.


Manueller Entwicklungsstart

Für das Debugging außerhalb von Claude Desktop starten Sie den Server manuell:

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

Hinweis: Tippen Sie nicht in dieses Terminal. Es ist ein stdio-MCP-Prozess und erwartet einen MCP-Client auf der Standardeingabe/-ausgabe.


Docker

Ein Dockerfile ist für containerisiertes Testen enthalten:

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

Der Container läuft weiterhin als stdio-Server. Für den täglichen Gebrauch mit Claude Desktop ist der direkte node-Ansatz in Schritt 6 einfacher.


Projektstruktur

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

Einschränkungen

  • Nur Einzelbenutzer — eine Serverinstanz unterstützt jeweils ein Microsoft-Konto

  • Auth-Status ist im Arbeitsspeicher — ein Neustart des Servers erfordert eine erneute Authentifizierung

  • Sie müssen Ihre eigene Entra-App erstellen und Ihre eigene Client-ID bereitstellen

  • Sehr große Bilder können herunterskaliert oder übersprungen werden, um innerhalb der Payload-Limits von Claude Desktop zu bleiben

  • Legacy .xls-Parsing erfolgt nach bestem Bemühen und ist weniger zuverlässig als .xlsx

  • Nicht geeignet für öffentliches oder Multi-User-Hosting


Lizenz

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