Skip to main content
Glama
Zacccck

Claude-Read-Outlook-Attachments

by Zacccck

M365 Attachment Reader MCP Local

Claude-MCP-Read-Email-Attachments MCP server

Microsoft Graph API를 통해 Outlook 이메일과 첨부 파일을 읽는 Claude Desktop용 로컬 stdio MCP 서버입니다.

상태: Claude Desktop을 사용하는 개인 단일 사용자 로컬 환경에서 정상 작동합니다.


이 프로젝트의 목적

Claude의 내장 Microsoft 365 커넥터는 이메일 목록을 가져오고, 본문을 읽고, 캘린더를 확인할 수 있습니다. 하지만 이메일 첨부 파일 내부의 실제 콘텐츠는 읽을 수 없습니다.

즉, "최근 이메일에 있는 PDF 내용이 뭐야?"라고 물어보면 Claude는 첨부 파일 메타데이터는 볼 수 있지만, 그 안에 포함된 텍스트, 표, 이미지, 중첩된 문서는 읽지 못합니다.

이 프로젝트는 그 간극을 메워줍니다. 퍼블릭 엔드포인트나 터널링 없이 완전히 로컬 머신에서 stdio를 통해 실행됩니다.


Related MCP server: Outlook MCP Python

인정 / 배포

  • 커뮤니티에서 관리하는 주요 MCP 서버 레지스트리인 punkpeye/awesome-mcp-servers에 등재되었습니다.

  • MCP 서버 점수 배지와 함께 Glama에 인덱싱되었습니다.

Claude-MCP-Read-Email-Attachments MCP server

기능

이 서버는 Claude Desktop에 의해 시작되는 로컬 MCP 프로세스로 실행됩니다. 다음 기능을 수행합니다:

  1. 기기 코드 흐름(device code flow)을 통해 Microsoft 365 인증

  2. Microsoft Graph를 통해 Outlook 이메일 및 첨부 파일 목록 조회

  3. 로컬에서 첨부 파일 콘텐츠 다운로드 및 파싱

  4. 구조화된 텍스트 및 이미지 블록을 Claude Desktop으로 직접 반환

지원 형식

형식

추출 내용

PDF

전체 텍스트 콘텐츠

스캔된 PDF

OCR 텍스트 및 선택적 렌더링 페이지 이미지

DOCX

텍스트 및 포함된 이미지

DOC

텍스트 콘텐츠

PPTX / PPTM / PPSX / POTX

슬라이드 텍스트, 노트 및 포함된 이미지

PPT

최선의 레거시 텍스트 추출

XLSX / XLS / CSV

모든 시트를 CSV로 변환

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

시각적 분석을 위해 MCP 이미지 블록으로 반환

ZIP / RAR / 7Z

아카이브 콘텐츠를 파일별로 재귀적으로 파싱

MSG

제목, 발신자, 본문 및 포함된 첨부 파일

TXT / MD / JSON / XML / HTML

원시 텍스트

Outlook itemAttachment

텍스트 콘텐츠

MCP 도구

도구

설명

health_check

서버 활성 상태 확인

begin_auth

기기 코드 로그인 흐름 시작

auth_status

인증 상태 확인

list_recent_messages

최근 Outlook 이메일 목록 조회

list_email_attachments

특정 이메일의 첨부 파일 목록 조회

read_email_attachment

첨부 파일 다운로드, 파싱 및 콘텐츠 반환


실제 활용 사례

소매 / 영업 운영

"지난 5일간의 대시보드 이메일을 가져와서 Excel 첨부 파일을 읽고, 지난주 모든 매장 위치의 매출 추세를 분석해 줘."

재무 / 회계

"제목에 '송장(Invoice)'이 포함된 공급업체의 최신 이메일을 찾아서 PDF 첨부 파일을 읽고, 총액, 기한, 품목을 추출해 줘."

법률 / 계약 검토

"legal@partner.com에서 온 가장 최근 이메일을 열어서 Word 또는 PowerPoint 첨부 파일을 읽고 핵심 내용을 요약해 줘."

인사 / 채용

"recruiting@company.com에서 온 첨부 파일이 있는 이메일을 찾아서 각 이력서 PDF를 읽고 지원자 비교 표를 만들어 줘."


사전 요구 사항

  • Windows 10/11, macOS 또는 Linux

  • Node.js 20 이상

  • Claude Desktop

  • Microsoft 365 / Outlook 계정

  • Microsoft Entra 앱 등록 (아래 1단계 참조)


설정

1. Microsoft Entra 앱 등록

Microsoft Entra 관리 센터앱 등록새 등록으로 이동합니다.

  • 이름: 원하는 이름 (예: m365-mcp-local)

  • 지원되는 계정 유형: 모든 조직 디렉터리의 계정 및 개인 Microsoft 계정

그 다음:

  1. 개요 페이지에서 애플리케이션(클라이언트) ID를 복사합니다.

  2. 인증공용 클라이언트 흐름 허용 활성화 → 저장

  3. API 권한권한 추가Microsoft Graph위임된 권한User.ReadMail.Read 추가 → 관리자 동의 부여

  4. 매니페스트requestedAccessTokenVersion을 찾아 (보통 api 내부에 중첩됨) 2로 설정 → 저장

4단계 이유는 무엇인가요? 앱이 개인 Microsoft 계정을 지원할 때, Microsoft Entra는 액세스 토큰이 v2여야 합니다. 포털에서 자동으로 설정되지 않는 경우가 있으며, 토큰 버전이 여전히 null 또는 1이면 common 엔드포인트가 AADSTS50059 오류와 함께 실패합니다. 이 단계를 건너뛰면 begin_auth 중에 invalid_grant 오류가 발생합니다.

v1 API 통합을 사용 중인가요? 모든 Graph/API 권한이 v2 토큰을 지원하는 경우에만 이를 2로 설정하세요 (모든 Microsoft Graph 위임 권한은 지원합니다). v1 토큰만 허용하는 사용자 지정 API를 통합하는 경우 common 대신 M365_TENANT_ID=consumers (개인 계정 전용) 또는 특정 테넌트 ID를 사용하고 requestedAccessTokenVersion은 기본값으로 두세요.

2. 복제 및 설치

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

3. 환경 변수 구성

예제 파일을 복사합니다:

cp .env.example .env

.env를 편집하고 클라이언트 ID를 입력합니다:

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

변수 참조:

변수

필수

설명

M365_CLIENT_ID

✅ 예

Entra 앱의 애플리케이션(클라이언트) ID

M365_TENANT_ID

아니요

대부분의 계정에서 기본값 common이 작동함

M365_AUTO_OPEN_BROWSER

아니요

Microsoft 로그인 페이지를 자동으로 열려면 true로 설정

M365_MCP_DATA_DIR

아니요

인증 캐시를 위한 사용자 지정 경로; 생략 시 자동 감지

4. Node.js 경로 찾기

다음 단계에서 node.exe(Windows) 또는 node(macOS/Linux)의 전체 경로가 필요합니다.

# Windows
where.exe node

# macOS / Linux
which node

출력 예시: C:\Program Files\nodejs\node.exe

5. Claude Desktop 설정 파일 열기

플랫폼에 맞는 설정 파일을 찾아 엽니다:

플랫폼

경로

Windows (표준)

%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

파일이 아직 없으면 생성하세요.

6. Claude Desktop에 서버 추가

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

팁:

  • command에는 4단계에서 얻은 전체 절대 경로를 사용하세요.

  • args[0]을 머신에 있는 server.mjs의 실제 경로로 바꾸세요.

  • 이미 다른 MCP 서버가 설정되어 있다면, 이 항목을 기존 mcpServers 객체에 병합하세요. 전체 파일을 덮어쓰지 마세요.

7. Claude Desktop 재시작

Claude Desktop을 완전히 종료하고 다시 엽니다. Claude Desktop이 자동으로 MCP 서버를 시작하므로 node server.mjs를 수동으로 실행할 필요가 없습니다.

8. Microsoft 365 인증

Claude Desktop에서 다음을 입력합니다:

Please call begin_auth

브라우저 창이 열립니다(또는 로그인 URL + 기기 코드가 표시됩니다). Microsoft 로그인 흐름을 완료한 후 확인합니다:

Please call auth_status

인증된 Microsoft 계정이 나열되는 것을 볼 수 있습니다.

9. 작동 확인

빠른 상태 확인을 실행합니다:

Please call health_check

그런 다음 실제 요청을 시도해 봅니다:

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

추천 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

문제 해결

문제

해결 방법

Claude가 MCP 도구를 찾을 수 없음

Claude Desktop을 완전히 재시작하세요. 설정의 commandargs 경로가 정확하고 절대 경로인지 확인하세요.

로그에 빈 userCode와 함께 invalid_grant 오류 발생

거의 항상 Entra 앱의 토큰 버전 또는 계정 유형 불일치 문제입니다. 다음 두 행을 참조하세요.

AADSTS50059: No tenant-identifying information found

앱이 common 엔드포인트를 지원하지 않는 경우입니다. Entra 앱 → 인증지원되는 계정 유형모든 조직 디렉터리의 계정 및 개인 Microsoft 계정으로 설정하고 저장하세요.

계정 유형 저장 시 Property api.requestedAccessTokenVersion is invalid 오류

Entra 앱 → 매니페스트requestedAccessTokenVersion2로 설정 → 저장하세요. 그 후 계정 유형 변경을 다시 시도하세요.

기기 코드가 표시되지 않음

begin_auth가 성공적으로 호출되었는지 확인하세요. 코드를 수동으로 입력하지 마세요.

Microsoft 계정을 전환하고 싶음

Claude Desktop을 재시작하고 개인 브라우저 창에서 begin_auth를 다시 호출하세요.

디버그 로그 위치

<M365_MCP_DATA_DIR>\debug.log — 기본적으로 server.mjs 옆에 자동 생성된 하위 디렉터리입니다.


수동 개발 실행

Claude Desktop 외부에서 디버깅하려면 서버를 수동으로 시작하세요:

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

참고: 해당 터미널에 직접 입력하지 마세요. stdio MCP 프로세스이며 표준 입력/출력에서 MCP 클라이언트를 기다립니다.


Docker

컨테이너화된 테스트를 위해 Dockerfile이 포함되어 있습니다:

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

컨테이너는 여전히 stdio 서버로 실행됩니다. 일상적인 Claude Desktop 사용에는 6단계의 직접 node 방식이 더 간단합니다.


프로젝트 구조

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

제한 사항

  • 단일 사용자 전용 — 서버 인스턴스 하나당 하나의 Microsoft 계정만 지원합니다.

  • 인증 상태는 메모리에 저장됨 — 서버를 재시작하면 다시 인증해야 합니다.

  • 직접 Entra 앱을 생성하고 클라이언트 ID를 제공해야 합니다.

  • 매우 큰 이미지는 Claude Desktop 페이로드 제한을 준수하기 위해 축소되거나 건너뛸 수 있습니다.

  • 레거시 .xls 파싱은 최선의 노력을 다하지만 .xlsx보다 신뢰성이 낮습니다.

  • 퍼블릭 또는 다중 사용자 호스팅에는 적합하지 않습니다.


라이선스

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