← Back to Articles
MCPCursor IDESlackteam communicationAI codingautomation

Slack MCP Server Cursor IDE Setup 2026: Send Messages and Read Channels from Composer

Connect Slack to Cursor IDE using MCP. Read messages, send updates, and search your workspace without leaving your editor — complete setup guide with bot token config.

By Web MCP GuideApril 6, 20266 min read


Slack MCP Server Cursor IDE Setup 2026

Slack is where decisions happen, blockers surface, and context gets buried. Connecting it to Cursor via MCP means your AI can read relevant threads, post status updates, and search your workspace — all without breaking your coding flow. Here's the complete setup.

What This Integration Enables

With Slack MCP running in Cursor, you can:

  • Read channel messages and thread replies

  • Send messages to channels or DMs from Composer

  • Search Slack for specific topics or decisions

  • List channels and workspace members

  • Post code snippets or deployment updates directly to Slack

  • Retrieve message history for context before writing code
  • Prerequisites


  • Cursor IDE 0.40+

  • Node.js 18+

  • Slack workspace where you have permissions to install apps

  • Slack Bot Token — created via step 1
  • Step 1: Create a Slack App and Get a Bot Token

    1. Go to api.slack.com/apps and click Create New App → From scratch.
    2. Name it "Cursor MCP" and select your workspace.
    3. In the left sidebar, go to OAuth & Permissions.
    4. Scroll to Bot Token Scopes and add:

  • channels:history — read messages in public channels

  • channels:read — list channels

  • chat:write — send messages

  • groups:history — read private channels the bot is added to

  • im:history — read DMs

  • im:write — send DMs

  • search:read — search messages

  • users:read — list workspace members

  • 5. Click Install to Workspace at the top of the OAuth & Permissions page.
    6. Authorize, then copy the Bot User OAuth Token (starts with xoxb-).

    Step 2: Add Your Bot to Channels

    Your bot can only read channels it's been added to:

    1. Open any Slack channel you want accessible from Cursor.
    2. Type /invite @Cursor MCP (or the name you gave your app).
    3. Repeat for channels you want searchable — engineering channel, deployments, general, etc.

    Step 3: Install the Slack MCP Server

    Use the official @modelcontextprotocol/server-slack package:

    npm install -g @modelcontextprotocol/server-slack

    Or run it via npx:

    npx @modelcontextprotocol/server-slack --help

    Step 4: Configure Cursor

    Edit ~/.cursor/mcp.json (macOS/Linux) or %APPDATA%\Cursor\mcp.json (Windows):

    {
    "mcpServers": {
    "slack": {
    "command": "npx",
    "args": ["-y", "@modelcontextprotocol/server-slack"],
    "env": {
    "SLACK_BOT_TOKEN": "xoxb-your-token-here",
    "SLACK_TEAM_ID": "TXXXXXXXXX"
    }
    }
    }
    }

    Find your SLACK_TEAM_ID in Slack's web app: click your workspace name → Settings & Administration → Workspace Settings — the ID appears in the URL as T followed by letters/numbers.

    Step 5: Restart and Verify

    Quit Cursor fully and reopen. Check Settings → Features → MCP for the "slack" server.

    Test in Composer:

    List the Slack channels my bot has access to

    If channels appear, you're connected.

    Real-World Use Cases

    Posting a Deployment Update

    Just pushed to production:

    Send a message to the #deployments Slack channel: 
    "✅ v2.4.1 deployed to production. Changes: rate limiting fix,
    auth token refresh improvement. Rollback tag: v2.4.0"

    Reading Context Before Coding

    You're picking up a task that had Slack discussion:

    Search Slack for messages about "session token expiry" 
    in the #backend channel from the last 2 weeks

    Getting Answers Without Interrupting the Team

    Search Slack for any messages explaining 
    why we chose Redis over Memcached for session storage

    Sending a Quick Status DM

    Send a DM to @sarah.chen on Slack: 
    "PR for ENG-241 is ready for review —
    focused on the middleware layer, no schema changes"

    Summarizing a Thread

    Get the last 20 messages from the #incidents Slack channel 
    and summarize what the current issue is and what's been tried

    Posting Code Snippets

    Send a code snippet to #code-review in Slack with this function 
    and ask for feedback on the error handling approach:
    [paste code]

    Troubleshooting

    Bot token returns 401


  • Confirm the token starts with xoxb- — if it starts with xoxp-, you have a user token, not a bot token.

  • Re-install the app to your workspace in api.slack.com/apps → OAuth & Permissions → Reinstall.

  • Check that the workspace matches. A token from workspace A won't work for workspace B.
  • "not_in_channel" error when reading messages


  • The bot hasn't been added to that channel. Invite it: /invite @YourAppName in the channel.

  • For private channels, an admin may need to authorize the bot.
  • "missing_scope" error


  • The scope needed for the operation isn't in your bot's permission list.

  • Go to api.slack.com/apps → your app → OAuth & Permissions → Bot Token Scopes → add the missing scope → Reinstall.
  • Messages appear but search returns nothing


  • search:read scope must be added. It's easy to miss since it's listed separately from history scopes.

  • Note: Slack's search API searches the entire workspace, not just channels the bot is in.
  • Can't send DMs


  • im:write scope is required to initiate DMs. Add it and reinstall the app.

  • The bot can only DM users who have interacted with it first, or if it's been granted im:write by an admin.
  • Rate Limits

    Slack enforces tiered rate limits:

  • Tier 1 (50+ req/min): message history, channel list

  • Tier 2 (20 req/min): channel messages, posting

  • Tier 3 (50 req/min): search
  • For typical Cursor usage, you won't hit these limits. If you're running bulk queries via automation, add delays between calls.

    Security Considerations


  • Your xoxb- token grants full access to everything the bot is added to. Treat it like a password.

  • Don't commit mcp.json to any repository — add it to .gitignore.

  • Restrict file permissions: chmod 600 ~/.cursor/mcp.json.

  • If your token is exposed, revoke it in api.slack.com/apps → OAuth & Permissions → Revoke tokens.

  • For shared teams: create a dedicated app with minimum required scopes rather than reusing a general-purpose bot.
  • Combining Slack with Other MCP Servers

    Slack works as a notification layer for other integrations:

  • GitHub MCP creates a PR → Slack MCP announces it to #engineering

  • Linear MCP creates an issue → Slack MCP notifies the team lead

  • Notion MCP generates a doc → Slack MCP shares the link in the relevant channel
  • Example:

    Create a Linear issue for the auth bug we found, 
    then post a message to #backend on Slack with the issue ID and a summary

    More MCP Integrations

    See the full MCP server directory to connect Notion, Linear, GitHub, Jira, and more to Cursor.