프로토타입 · 미리 보기: 공식 레지스트리의 모든 서버를 담고 있으며 30분마다 동기화해요. 리뷰와 계정 기능은 다음 단계에서 열려요.
PopNx MCPAI를 쓰는 사람을 위한 MCP 서버 · 쉬운 말로 설명해요

MSGraph MCP

제작자: timfurlong버전 0.5.1i★ –i내 컴퓨터에서 실행
레지스트리 이름io.github.timfurlong/msgraph-mcp

설치

개요

제작자가 쓴 설명(영어 원문)

MCP server for Microsoft Graph: Outlook mail and calendar, plus read-only Microsoft Teams

PopNx MCP의 세 기둥

이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.

할 수 있는 일

이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.

  • 연결 방식: 내 컴퓨터에서 실행
  • 전송 방식: stdio
  • 카테고리: 채팅 및 이메일
  • 입력해야 할 값: MSGRAPH_MCP_CLIENT_ID, MSGRAPH_MCP_TENANT_ID

설치

쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.

설치하기 전에

  • 기본 점검: 1개 중 1개 통과
  • 내 컴퓨터에서 내 사용자 계정의 권한(파일, 네트워크, 앱)으로 실행돼요.
  • 직접 입력할 값: MSGRAPH_MCP_CLIENT_ID, MSGRAPH_MCP_TENANT_ID, MSGRAPH_MCP_TOKEN_CACHE_PATH

필요한 것

  • PyPIPython의 uv 설치(uvx 명령어용)

어떤 앱을 쓰세요?

위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.

Claude Desktop → Settings → Developer → Edit Config를 열고 claude_desktop_config.json에 이 내용을 붙여 넣으세요

{
  "mcpServers": {
    "msgraph": {
      "command": "uvx",
      "args": [
        "msgraph-mcp-server"
      ],
      "env": {
        "MSGRAPH_MCP_CLIENT_ID": "your-value",
        "MSGRAPH_MCP_TENANT_ID": "your-value",
        "MSGRAPH_MCP_TOKEN_CACHE_PATH": "your-value"
      }
    }
  }
}

터미널에서 이 명령어를 실행하세요

claude mcp add msgraph --env MSGRAPH_MCP_CLIENT_ID=your-value --env MSGRAPH_MCP_TENANT_ID=your-value --env MSGRAPH_MCP_TOKEN_CACHE_PATH=your-value -- uvx msgraph-mcp-server

실행하기 전에 빈 값을 채워 주세요.

Cursor에서 열기

또는 설정을 직접 복사하기

프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요

{
  "mcpServers": {
    "msgraph": {
      "command": "uvx",
      "args": [
        "msgraph-mcp-server"
      ],
      "env": {
        "MSGRAPH_MCP_CLIENT_ID": "your-value",
        "MSGRAPH_MCP_TENANT_ID": "your-value",
        "MSGRAPH_MCP_TOKEN_CACHE_PATH": "your-value"
      }
    }
  }
}

브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.

VS Code에서 열기

또는 설정을 직접 복사하기

프로젝트의 .vscode/mcp.json에 붙여 넣으세요

{
  "servers": {
    "msgraph": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "msgraph-mcp-server"
      ],
      "env": {
        "MSGRAPH_MCP_CLIENT_ID": "your-value",
        "MSGRAPH_MCP_TENANT_ID": "your-value",
        "MSGRAPH_MCP_TOKEN_CACHE_PATH": "your-value"
      }
    }
  }
}

브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.

이 서버는 내 컴퓨터에서 실행되는데, ChatGPT는 인터넷에 있는 서버에만 연결할 수 있어요. 다른 앱을 고르세요.

선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.

직접 입력할 값

  • MSGRAPH_MCP_CLIENT_ID 필수 env
    Client ID of your Entra (Azure AD) app registration
  • MSGRAPH_MCP_TENANT_ID 필수 env
    Entra tenant ID (or 'common' / 'organizations' / 'consumers')
  • MSGRAPH_MCP_TOKEN_CACHE_PATH env
    Override the token cache location (default ~/.msgraph-mcp/token_cache.bin)

이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.

할 수 있는 일

내 컴퓨터에서 실행돼요. 설치하면 AI 앱에 도구 목록이 나타나요.

기본 점검i

누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 6일 점검

  • ✓ 통과

    제작자와 저장소 일치

    레지스트리 이름이 GitHub 계정 timfurlong 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요

  • … 아직 점검 안 함

    계속 관리되고 있음

    아직 GitHub에서 이 저장소를 읽어 오지 않았어요

  • … 아직 점검 안 함

    라이선스 있음

    아직 GitHub에서 이 저장소를 읽어 오지 않았어요

  • – 해당 없음

    엔드포인트 응답

    내 컴퓨터에서 실행되는 서버라 인터넷 엔드포인트가 없어요

  • – 해당 없음

    OAuth로 로그인

    내 컴퓨터에서 실행되며, 대신 로컬 설정을 사용해요

  • … 아직 점검 안 함

    도구 설명에 숨겨진 지시 없음

    내 컴퓨터에서 실행돼요. 도구 목록은 인터넷 엔드포인트가 있는 서버에서만 읽을 수 있어요

채팅 및 이메일 카테고리의 다른 서버와 비교i

  • 이 카테고리의 다른 서버 1762개 중 0%보다 스타가 많아요
  • 이 카테고리의 다른 서버 1762개 중 35%보다 최근에 레지스트리에 공개됐어요
  • 기본 점검 결과가 이 카테고리의 다른 서버 1762개 중 100%와 같거나 더 좋아요

레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.

자주 묻는 질문

MSGraph MCP, 안전한가요?

해당하는 기본 점검 1개 중 1개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.

어떤 키나 코드가 필요한가요?

입력해야 할 값: MSGRAPH_MCP_CLIENT_ID, MSGRAPH_MCP_TENANT_ID

내 컴퓨터에서 실행되나요, 클라우드에서 실행되나요?

내 컴퓨터에서 실행돼요. AI 앱이 필요할 때 실행하고, 데이터는 제작자의 서버를 거치지 않아요(서버 자체가 온라인 서비스를 호출하는 경우는 제외).

아직 관리되고 있나요?

GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(0.5.1)은 2개월 전 레지스트리에 올라왔어요.

어떤 앱에서 쓸 수 있나요?

Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. 내 컴퓨터에 Python (uv)도 있어야 해요.

대신 쓸 수 있는 건 뭐가 있나요?

같은 카테고리에는: Vexa, emailmd, MCP WhatsApp Cloud

대안

같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.

카드 보는 법:★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i

Vexa

제작자: Vexa-ai

Meeting bot and transcripts for Google Meet, Teams and Zoom. Live or after, speakers labelled.

클라우드에서 실행★ 2,949Apache-2.02개월 전 업데이트
설치

emailmd

제작자: anypost

Render markdown into email-safe HTML, lint drafts for deliverability problems, and preview emails.

컴퓨터 또는 클라우드★ 1,385MIT30일 전 업데이트
설치

MCP WhatsApp Cloud

제작자: codespar

MCP server for WhatsApp Cloud API (Meta) — messages, media, and templates via Graph API

내 컴퓨터에서 실행★ 277MIT5개월 전 업데이트
설치

제작자의 README

README 열기

제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.

MSGraph MCP

A Model Context Protocol (MCP) server for Microsoft Graph. It exposes Microsoft Outlook mail and calendar, plus read-only Microsoft Teams message history, to AI agents via the Microsoft Graph SDK. It acts as the signed-in user, using delegated permissions and MSAL device code flow, so it can only reach what that user can reach.

Install

You need Python ≥ 3.11 and an Entra (Azure AD) app registration. The app registration takes about ten minutes and may need an administrator, so do that first: see the Entra setup section below.

uv tool install msgraph-mcp-server   # or: pip install msgraph-mcp-server

The package is msgraph-mcp-server. It installs three commands: msgraph-mcp and its alias msgraph-mcp-server, which both start the stdio server, plus msgraph-mcp-login for the one-time sign-in.

Setup

1. Set your Entra app credentials.

export MSGRAPH_MCP_CLIENT_ID=<your app's client ID>

export MSGRAPH_MCP_TENANT_ID= # or: common / organizations / consumers

2. Sign in once. This prints a URL and a code; visit the URL and enter the code. No client secret is involved or stored.

msgraph-mcp-login

running via uvx instead of installing: uvx --from msgraph-mcp-server msgraph-mcp-login

A token cache is written to ~/.msgraph-mcp/token_cache.bin.

3. Wire the server into your MCP host.

Claude Code:

claude mcp add msgraph \

--env MSGRAPH_MCP_CLIENT_ID=$MSGRAPH_MCP_CLIENT_ID \ --env MSGRAPH_MCP_TENANT_ID=$MSGRAPH_MCP_TENANT_ID \ -- msgraph-mcp

Any other host, over stdio:

{

"mcpServers": { "msgraph": { "command": "msgraph-mcp", "args": [], "env": { "MSGRAPH_MCP_CLIENT_ID": " ", "MSGRAPH_MCP_TENANT_ID": " " } } } }

To run without installing, use "command": "uvx" with "args": ["msgraph-mcp-server"]. Note that uvx does not put msgraph-mcp-login on your PATH, so sign in with the uvx --from form shown in step 2.

MSGRAPH_MCP_TOKEN_CACHE_PATH optionally overrides the cache location. All three variables can also come from a .env file in the working directory; the process environment wins over it.

Entra setup

The app registration requires:

  • Account type: single tenant (multi-tenant works too; set MSGRAPH_MCP_TENANT_ID to common, organizations, or consumers)
  • Redirect URI (public client): https://login.microsoftonline.com/common/oauth2/nativeclient
  • Allow public client flows: Yes, under Authentication → Advanced settings. Device code flow fails without it.
  • Delegated permissions (Microsoft Graph):
  • Mail: Mail.ReadWrite, Mail.ReadWrite.Shared, Mail.Send
  • Rules: MailboxSettings.ReadWrite (Graph requires this for the messageRules endpoints)
  • Calendar: Calendars.ReadWrite, Calendars.ReadWrite.Shared
  • Identity: User.Read
  • Teams: Chat.Read, Team.ReadBasic.All, Channel.ReadBasic.All, ChannelMessage.Read.All

ChannelMessage.Read.All always needs tenant admin consent, and the *.Shared permissions may need it depending on your tenant.

The scope list is all-or-nothing. Sign-in requests every scope at once, so without admin consent for ChannelMessage.Read.All the login fails outright and mail and calendar are unavailable too. For the same reason, adding scopes later means re-running msgraph-mcp-login; until you do, *every* tool fails with NotAuthenticatedError, not just the ones needing the new scope.

Tools

GroupTools
Utilwhoami
Mail — readlist_messages, search_messages, get_message, list_attachments, download_attachment
Mail — writesend_message, create_draft, reply_message, reply_all_message, forward_message, update_message, delete_message
Mail — folderslist_folders, create_folder, update_folder, delete_folder, move_message
Mail — actionsarchive_message, mark_read, mark_unread, flag_message, unflag_message
Mail — batchbatch_archive_messages, batch_move_messages, batch_mark_read, batch_mark_unread, batch_flag_messages, batch_unflag_messages
Mail — ruleslist_rules, get_rule, create_rule, update_rule, delete_rule
Calendarlist_calendars, list_events, get_event, create_event, update_event, delete_event, cancel_event, respond_to_event, find_meeting_times
Teams (read)list_chats, list_chat_messages, list_joined_teams, list_channels, list_channel_messages, list_message_replies, download_hosted_content

Behavior shared across tools:

  • Trimmed responses. Results are reshaped for agents, and message and event bodies are replaced by a short snippet. Pass include_body=true to get_message, list_chat_messages, list_channel_messages, or list_message_replies for the full body, which for Teams is also what surfaces Adaptive Card content. Pass include_raw=true to any tool returning a Graph object to get the full payload alongside the trimmed one; the batch_* tools return per-message status only and do not accept it.
  • Other mailboxes. Every mail and calendar tool takes an optional mailbox (email or user ID) to target a shared or delegated mailbox. Omit it for your own. Teams tools are read-only, cover only your own chats, and take no mailbox.
  • Pagination. List and search tools take limit (1-100, default 25) and page_token, except list_channel_messages and list_message_replies, which Graph caps at 50. list_folders, list_rules, list_attachments, and list_calendars return the whole collection and take neither. On list_joined_teams and list_channels, limit is applied after fetching because Graph rejects $top there, so it saves tokens rather than round-trips.
  • Batch actions. The batch_* tools apply one action to up to 1000 messages via Graph's $batch endpoint, returning a per-message result plus a {total, succeeded, failed} summary.
  • Downloads. download_attachment and download_hosted_content return images as native MCP image blocks the agent can view. Pass save_path (a file, or an existing directory) to write bytes to disk and get back a path instead.
  • Finding mail. list_messages defaults to the inbox; pass folder_id for another folder, unread_only=true, or a raw OData filter for predicates KQL cannot express. search_messages passes your query to Graph's $search as KQL.

Outgoing attachments are capped at 3 MB total per message; chunked upload is not supported. SharePoint-backed Teams file attachments cannot be downloaded, only inline hosted content.

Security

The token cache holds your refresh token, which can mint access tokens for your mail, calendar, and Teams data. Treat the file as a credential. It lives at ~/.msgraph-mcp/token_cache.bin with mode 0600 inside a 0700 directory.

To revoke access, or to switch accounts, delete the cache and sign in again:

rm -f ~/.msgraph-mcp/token_cache.bin ~/.outlook-mcp/token_cache.bin

The second path matters if you ever ran this server under its former name outlook-mcp: that cache is still used as a fallback when the current one is absent, so deleting only the first file leaves a working refresh token on disk. To revoke fully, also remove the app at https://account.microsoft.com or in your organization's identity portal.

Troubleshooting

  • `NotAuthenticatedError: Not authenticated` — run msgraph-mcp-login. If it recurs immediately, a requested scope has not been consented yet; see the note under Entra setup.
  • `ConfigError: Missing required env var` — set it in your shell, in a .env in the working directory, or in your MCP host's env config.
  • `Graph API 403: ErrorAccessDenied` — the Entra app is missing a delegated permission, or it needs admin consent. Check the list above, then re-consent and sign in again.
  • `Graph API 400: BadRequest — Syntax error` from search_messages — the query goes to Graph's $search as KQL. Quote literal phrases ("weekly report") or use fielded forms (from:alice). For predicates KQL cannot express, use list_messages with filter=.
  • The host starts the server but lists no tools — confirm it launches msgraph-mcp (or uvx) over stdio and can find that binary on its PATH.

Development

See CONTRIBUTING.md.

PopNx에게 묻기