mcpservers

Recipe

Morning briefing: Gmail + Slack digest with Claude

Replace 30 minutes of scrolling email and Slack with one written brief that tells you what actually needs you today.

15 minutes (10 to set up the first time, 2 per morning after) beginner 3 connectors for Founders and operators who open the day to 40 unread emails and three noisy Slack channels

What you'll need

Do this, in order

  1. 1

    Ask for the email side of the brief

    Read my Gmail inbox from the last 16 hours. Group it into three buckets: NEEDS A REPLY (someone is waiting on me), FYI (read but no action), and IGNORE (newsletters, automated, noise). For each NEEDS A REPLY item give me the sender, one-line summary, and why it's urgent.

    You'll get: Three short lists. The NEEDS A REPLY list should be 3-7 items, not 40. If it's longer, your inbox is noisier than you think — see troubleshooting.

  2. 2

    Add the Slack side

    Now check Slack: any direct messages, any messages that @-mention me, and anything in #general or my team channel from the last 16 hours that looks like it's blocked on me. Same buckets: NEEDS A REPLY / FYI / IGNORE.

    You'll get: A second short brief. Claude should skip threads you were never in and emoji-only replies.

  3. 3

    Merge into one decision list

    Combine email and Slack into a single ranked list of things that need me today, most time-sensitive first. For each one, draft a one-line reply I could send. Mark anything that can wait until tomorrow.

    You'll get: One ordered list, 5-10 items, each with a ready-to-edit reply. This is your morning, decided.

  4. 4

    Save the shape for tomorrow

    Remember this format as 'my morning brief'. Next time I say 'run my morning brief' use exactly these buckets and the 16-hour window.

    You'll get: Claude confirms it saved the format (needs Memory MCP). After this, the whole workflow is the single phrase 'run my morning brief'.

You're done when

You open Claude, say 'run my morning brief', and read one ranked list with draft replies instead of scrolling two inboxes. The 30-minute triage becomes a 2-minute read. You start the day deciding, not sorting.

Why this workflow exists

The first 30 minutes of the workday are usually spent finding out what the workday is. You scroll email, scroll Slack, build a mental list of what’s on fire, and only then start working. None of that scrolling is the work. It’s the search cost before the work.

Claude can pay that search cost for you. Once it can read your inbox and your team chat, “what needs me today” stops being something you assemble by reading everything and becomes something you ask for. You read the answer, not the raw material.

The first run takes ~15 minutes because you’re installing servers and teaching Claude your buckets. After that it’s a single sentence and a two-minute read.

Install in 10 minutes

You need Gmail MCP. Slack MCP and Memory MCP are optional but make the brief much better.

1. Install Gmail MCP

Gmail MCP authenticates with your Google account over OAuth — there’s no npm one-liner that’s safe to hardcode here, because the exact command and consent flow change. Follow the current, maintained command and the OAuth steps on the Gmail MCP page. When it’s done, verify with /mcp in Claude Code — gmail should be listed and connected.

2. (Optional) Install Slack MCP

claude mcp add slack -- npx -y @modelcontextprotocol/server-slack

Set two values in the env block: SLACK_BOT_TOKEN (a bot token starting xoxb-) and SLACK_TEAM_ID (starts with T). Both come from a Slack app you create at api.slack.com/apps. The exact scopes are on the Slack MCP page.

3. (Optional) Install Memory MCP

claude mcp add memory -- npx -y @modelcontextprotocol/server-memory

No env vars. This is what lets “run my morning brief” work as a saved phrase instead of re-explaining the buckets every day.

The first run

Open a fresh Claude conversation. Run prompt 1. Look at the NEEDS A REPLY bucket — if it’s huge, your inbox is noisier than you assumed and that itself is the useful signal. Tighten the rule (see troubleshooting) and re-run.

Add Slack with prompt 2. Merge with prompt 3. By the end you have a single ordered list with draft replies. Edit the replies, send the ones that are ready, and you’re done before you would normally have finished scrolling.

Prompt 4 only matters if you installed Memory MCP — it turns the whole sequence into the phrase “run my morning brief” for every future day.

What success looks like

You opened the laptop. You said one sentence. You read a ten-line list that told you exactly what needed you, in order, with replies already drafted. You never opened the Gmail tab or the Slack app. The half hour you used to lose is gone — not optimized, gone.

Going further

If something breaks

The NEEDS A REPLY list has 25 items and is useless
Fix: Your sender reputation is doing nothing. Tell Claude: 'only count it as NEEDS A REPLY if a human addressed me directly and asked a question or is blocked.' Newsletters and CC-all threads should fall to IGNORE.
Gmail MCP asks for authorization every run
Fix: Gmail's OAuth token expired or wasn't persisted. Re-run the auth step on the Gmail MCP page and confirm the token is stored in your client config, not just the session.
Slack returns nothing even though there are unread messages
Fix: The Slack bot token only sees channels the bot is in. Invite it to your team channel, or scope the prompt to DMs and mentions only, which always work.
Claude reads email from days ago, not overnight
Fix: Make the window explicit and absolute: 'email received after 6pm yesterday' instead of 'last 16 hours'. Relative windows drift if the conversation is long.

People ask their AI

“morning email and slack digest”“summarize my email and slack every morning”“daily inbox brief”

Related