A side-by-side look at the Ews Meeting MCP and Outlook Personal MCP MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Ews Meeting MCP for workplace & productivity work as a local process; choose Outlook Personal MCP for workplace & productivity as a local process. You can also run both side by side in one mcpServers block.
EWS_ENDPOINT, EWS_EMAIL, EWS_USERNAME, EWS_AUTH_TYPE, EWS_TIMEZONE, ACCOUNT_PASSWORD, ACCOUNT_PASSWORD_KEYCHAIN_SERVICE, ACCOUNT_PASSWORD_KEYCHAIN_ACCOUNT.ews_keychain_status, ews_setup_check, ews_signature_setup_guide.OUTLOOK_MCP_CLIENT_ID.whoami, list_messages, search_messages.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Workplace & Productivity | Workplace & Productivity |
| Quality signal | 63/100 · Good | 49/100 · Fair |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | other | Not declared |
| Pricing | Free | Not declared |
| Required env vars | EWS_ENDPOINTEWS_EMAILEWS_USERNAMEEWS_AUTH_TYPEEWS_TIMEZONEACCOUNT_PASSWORDACCOUNT_PASSWORD_KEYCHAIN_SERVICEACCOUNT_PASSWORD_KEYCHAIN_ACCOUNT | OUTLOOK_MCP_CLIENT_ID |
| Verified owner | Community listing | Community listing |
| GitHub stars | 3 | 2 |
| Directory activity | 5 views 0 installs 0 upvotes | 1 views 0 installs 0 upvotes |
| Tools | 21 | 32 |
| Full listing | View Ews Meeting MCP | View Outlook Personal MCP |
ews_keychain_statusCheck whether the shared account password is available from the local override or macOS Keychain without revealing the password. If missing, returns required_action and setup_command that must be shown verbatim to the user.ews_setup_checkReturn whether EWS setup is ready, including env and password/Keychain checks. When ready is false, show user_message or setup_command and stop before scheduling.ews_signature_setup_guideReturn an HTML signature setup guide with a copyable sample, recommended local file path, and environment variables. Does not require EWS credentials.ews_get_audit_logRead recent local lifecycle audit entries for meeting preview, confirmed, duplicate, in-progress, and error actions. Does not read EWS credentials or call Exchange.ews_probeCheck that the configured EWS account can connect. Does not read calendar items.ews_list_calendarList upcoming events from the configured user's default calendar, including stored show_as and raw legacy_free_busy_status.ews_search_emailsRead-only search of messages in the configured Outlook inbox. Returns message metadata, exact EWS id and changekey, and does not mark messages as read or change mailbox state.ews_read_emailRead one message from the configured Outlook inbox by exact EWS id. Returns body, recipients, metadata, and attachment metadata without changing mailbox state.ews_send_email_to_selfSend an email only to the mailbox configured by EWS_EMAIL. The recipient is never accepted as an argument. Requires a stable idempotency_key for automation retries and uses Exchange EWS CreateItem followed by SendItem; it does not stop at a draft. Do not include passwords, tokens, or raw credential values in the subject, body, or idempotency key.ews_find_calendar_eventsRead-only search for calendar events in a time window. Returns exact EWS id and changekey metadata for safe preview-confirm update or cancel flows, plus stored show_as and raw legacy_free_busy_status.ews_verify_meetingVerify a calendar item by EWS id and optional changekey. Returns normalized organizer item status, stored show_as and raw legacy_free_busy_status, attendees, rooms/resources, and response_status values when Exchange exposes them.ews_list_roomsList Exchange meeting rooms from dynamic room lists, or configured static fallback rooms, as structured options for user selection.whoamiReturn the signed-in user's Microsoft account profilelist_messagesList messages (newest first); optionally filter by folder or unread-onlysearch_messagesFull-text search across the entire mailbox (Graph `$search`)get_messageGet a single message; optionally include the full bodylist_attachmentsList a message's attachments (id, name, size, content type)download_attachmentDownload an attachment to a path under `OUTLOOK_MCP_FILE_ROOT` (refuses to overwrite an existing file)send_mailSend an emailreplyReply to a message (`reply_all` to reply to everyone)forwardForward a message to recipients with an optional commentmove_messageMove a message to another foldercopy_messageCopy a message to another foldermark_readMark a message read or unreadPaste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"ap311036-ews-meeting-mcp": {
"command": "npx",
"args": [
"-y",
"ews-meeting-mcp"
],
"env": {
"EWS_ENDPOINT": "YOUR_EWS_ENDPOINT_HERE",
"EWS_EMAIL": "YOUR_EWS_EMAIL_HERE",
"EWS_USERNAME": "YOUR_EWS_USERNAME_HERE",
"EWS_AUTH_TYPE": "YOUR_EWS_AUTH_TYPE_HERE",
"EWS_TIMEZONE": "YOUR_EWS_TIMEZONE_HERE",
"ACCOUNT_PASSWORD": "YOUR_ACCOUNT_PASSWORD_HERE",
"ACCOUNT_PASSWORD_KEYCHAIN_SERVICE": "YOUR_ACCOUNT_PASSWORD_KEYCHAIN_SERVICE_HERE",
"ACCOUNT_PASSWORD_KEYCHAIN_ACCOUNT": "YOUR_ACCOUNT_PASSWORD_KEYCHAIN_ACCOUNT_HERE"
}
}
}
}
{
"mcpServers": {
"outlook-personal-mcp": {
"command": "uvx",
"args": [
"mcp-outlook-personal"
],
"env": {
"OUTLOOK_MCP_CLIENT_ID": "YOUR_OUTLOOK_MCP_CLIENT_ID_HERE"
}
}
}
}