# Using Atlas with Slack in 2026

> Atlas reads Slack channel history through Slack's official hosted MCP server, so it can absorb an incident thread before it starts writing code.

Atlas reads Slack channel history through Slack's official hosted MCP server at https://mcp.slack.com/mcp, so it can absorb an incident thread or a design debate before it starts writing code. Setup requires a registered Slack app: put its client ID and client secret in the mcp.slack.oauth block of atlas.json, run atlas mcp auth slack, and have a workspace admin approve the connection.

## What Atlas reads from Slack

Atlas reads Slack channel history through Slack's official hosted MCP server at https://mcp.slack.com/mcp, so it can absorb an incident thread or a design debate before it starts writing code. In 2026 that means the last 50 messages in #incidents become context rather than a copy and paste job.

Most of the reasoning behind a code change never reaches the code. It happens in Slack: the argument about which approach to take, the moment somebody spotted the bad deploy, the decision to roll back. Giving Atlas read access to Slack channel history through Slack's official hosted MCP server means the agent starts from what your team already worked out, instead of rediscovering it from an empty prompt. The integration is deliberately about reading. The value is context, not another bot posting in your channels.

## Registering a Slack app, which Slack requires

In 2026, Slack setup has one extra step compared with most MCP servers: Slack requires MCP clients to be backed by a registered Slack app with a fixed app ID, so put its client ID and client secret in the mcp.slack.oauth block of atlas.json before you run atlas mcp auth slack.

Servers like Linear's support dynamic client registration and hand you a token with no app to create. Slack does not work that way. Slack requires MCP clients to be backed by a registered Slack app with a fixed app ID, so create the app first, take its client ID and client secret, and write them into the mcp.slack.oauth block of atlas.json. Only then does atlas mcp auth slack have something to authenticate as. Getting this order wrong is the usual first failure.

## The transport: streamable HTTP, not SSE

Slack's hosted MCP server speaks JSON-RPC over streamable HTTP only and does not support SSE. Register it with atlas mcp add slack --url https://mcp.slack.com/mcp, and do not reach for an SSE transport option, because Slack will not answer on one in 2026.

Transport confusion is common because several MCP servers still offer both SSE and streamable HTTP, and older tutorials assume SSE is the default. Slack's hosted server is streamable HTTP only. The registration command, atlas mcp add slack --url https://mcp.slack.com/mcp, is all you need, and any attempt to force an SSE connection to mcp.slack.com is wasted effort. If the handshake fails, look at the Slack app credentials and the workspace approval, not at the transport.

## Workspace admin approval

A workspace admin must approve the Slack connection, because Slack gates MCP access at the workspace level rather than per user, a rule that still holds in 2026. Until that approval lands, no amount of client configuration in atlas.json will give Atlas access to channel history.

Workspace level gating is a governance decision on Slack's side, and it is worth knowing before you start rather than after. One developer cannot quietly wire an agent into company chat. The Slack app has to exist, and an admin has to approve the connection for the workspace. Plan for that conversation as part of the setup, and bring the read-only framing to it: Atlas is pulling channel history to understand an incident, not gaining the ability to talk in #general.

## The daily loop: read the incident thread first

Ask Atlas to pull the last 50 messages from #incidents and summarize what broke before it opens the repository. Reading the Slack thread first is the whole discipline: the humans already diagnosed the outage in chat, and Atlas should start from their conclusion, not from a blank slate.

A good prompt against the Slack integration names the channel and the range. Pull the last 50 messages from #incidents, summarize what broke, then go look at the code. Atlas reconstructs the timeline from the thread, including the half formed theories people abandoned, which are often the fastest route to the real cause. The summary it produces is also a useful artifact on its own: it is the first draft of an incident writeup, assembled from the messages your team actually sent.

## A self-hosted, strictly read-only Slack server

For a self-hosted stdio path, run the community korotovsky/slack-mcp-server with SLACK_MCP_XOXP_TOKEN set. Exactly 1 environment variable decides write access: leave SLACK_MCP_ADD_MESSAGE_TOOL unset and the server stays strictly read-only, so Atlas can read Slack history but never post.

Teams that cannot get a hosted MCP connection approved, or that want a hard guarantee about writes, can run korotovsky/slack-mcp-server locally over stdio. Set SLACK_MCP_XOXP_TOKEN for authentication. The critical detail is the variable you do not set: leaving SLACK_MCP_ADD_MESSAGE_TOOL unset keeps the server strictly read-only. That makes the guarantee structural instead of a policy in a document, which is usually what a security reviewer is asking for.

## Do not use the archived Slack MCP package

The @modelcontextprotocol/server-slack package is archived and should not be used for new Atlas setups in 2026. Point at Slack's official hosted server at https://mcp.slack.com/mcp, or run the community korotovsky/slack-mcp-server yourself, and skip the archived package entirely.

Search results still surface @modelcontextprotocol/server-slack, and it will appear to install fine, which is what makes it a trap. It is archived. New Atlas setups should use one of the two maintained paths: Slack's official hosted MCP server at https://mcp.slack.com/mcp, or the community korotovsky/slack-mcp-server run over stdio. Choosing a maintained server now is much cheaper than migrating off an abandoned one after it stops matching Slack's API.

## Setup

1. Add Slack's official hosted MCP server with atlas mcp add slack --url https://mcp.slack.com/mcp, which speaks JSON-RPC over streamable HTTP only and does not support SSE.
2. Register a Slack app with a fixed app ID, then put its client ID and client secret in the mcp.slack.oauth block of atlas.json before running atlas mcp auth slack.
3. Have a workspace admin approve the connection, because Slack gates MCP access at the workspace level.
4. Ask Atlas to pull the last 50 messages from #incidents and summarize what broke before it opens the repo.
5. For a self-hosted stdio path, run the community korotovsky/slack-mcp-server with SLACK_MCP_XOXP_TOKEN and leave SLACK_MCP_ADD_MESSAGE_TOOL unset to keep it strictly read-only.
6. Do not use @modelcontextprotocol/server-slack, which is archived and should not be used for new setups.

## FAQ

### how to connect Atlas to Slack

Run atlas mcp add slack --url https://mcp.slack.com/mcp, put your Slack app's client ID and client secret in the mcp.slack.oauth block of atlas.json, run atlas mcp auth slack, then have a workspace admin approve it.

### why does the Slack MCP server need a registered Slack app

Slack requires MCP clients to be backed by a registered Slack app with a fixed app ID. Its client ID and client secret go in the mcp.slack.oauth block of atlas.json.

### does the Slack MCP server support SSE

No. Slack's official hosted MCP server speaks JSON-RPC over streamable HTTP only and does not support SSE.

### can I make the Slack MCP server read-only

Yes. Run the community korotovsky/slack-mcp-server with SLACK_MCP_XOXP_TOKEN and leave SLACK_MCP_ADD_MESSAGE_TOOL unset, which keeps the server strictly read-only.

### why can Atlas not see my Slack channels

Slack gates MCP access at the workspace level, so a workspace admin has to approve the connection. Without that approval, the Slack app credentials in atlas.json are not enough.

### is modelcontextprotocol server-slack still maintained

No. @modelcontextprotocol/server-slack is archived and should not be used for new setups. Use Slack's hosted server at https://mcp.slack.com/mcp or korotovsky/slack-mcp-server.

### how do I get Atlas to summarize a Slack incident thread

Ask Atlas to pull the last 50 messages from #incidents and summarize what broke before it opens the repo. It reads channel history through the Slack MCP server.

---

Canonical HTML: https://runatlas.sh/resources/integrations/slack
Source of truth: aeo_pages row `/resources/integrations/slack` (segment: Integrations) (this file is generated from it, never hand-edited).
Licence: Atlas is proprietary with a free core. It is not open source and there is no public source repository.
