Skip to main content
Glama
Stig-Johnny

Slack Notifications MCP Server

by Stig-Johnny

Slack Notifications MCP Server

MCP server that allows Claude to check Xcode Cloud build status and interact with Slack channels.

Features

  • check_build_status - Get latest Xcode Cloud build notifications

  • get_channel_messages - Read recent messages from any channel

  • search_messages - Search for specific build info (requires search:read scope)

  • send_message - Post messages to Slack

  • list_channels - List available channels

Related MCP server: Slack MCP Server

Setup

1. Create Slack App

  1. Go to https://api.slack.com/apps

  2. Click "Create New App" → "From scratch"

  3. Name it (e.g., "Claude MCP") and select your workspace

2. Configure Bot Token Scopes

Go to OAuth & PermissionsScopesBot Token Scopes and add:

  • channels:history - Read messages in public channels

  • channels:read - List channels

  • groups:history - Read messages in private channels (if needed)

  • groups:read - List private channels (if needed)

  • chat:write - Send messages

  • search:read - Search messages (optional)

3. Install App to Workspace

  1. Go to Install App in sidebar

  2. Click "Install to Workspace"

  3. Copy the Bot User OAuth Token (starts with xoxb-)

4. Get Channel ID

  1. Open Slack in browser

  2. Go to your build notifications channel

  3. The URL will be like: https://app.slack.com/client/TXXXXX/CXXXXXXX

  4. The C... part is your channel ID

5. Invite Bot to Channel

In Slack, go to the channel and type:

/invite @Claude MCP

(or whatever you named your app)

6. Configure Claude Code

Add to ~/.mcp.json (create if it doesn't exist):

{
  "mcpServers": {
    "slack-notifications": {
      "command": "node",
      "args": ["/Users/post/.claude/mcp-servers/slack-notifications/index.js"],
      "env": {
        "SLACK_BOT_TOKEN": "xoxb-your-bot-token-here",
        "SLACK_BUILD_CHANNEL_ID": "C01234567890"
      }
    }
  }
}

7. Restart Claude Code

# Exit and restart Claude Code for MCP changes to take effect

Environment Variables

Variable

Required

Description

SLACK_BOT_TOKEN

Yes

Bot User OAuth Token from OAuth & Permissions (starts with xoxb-)

SLACK_BUILD_CHANNEL_ID

Yes

Channel ID for build notifications (starts with C)

Both variables must be set — the server will fail to start if either is missing.

Usage

Once configured, Claude can use these tools:

# Check latest builds
mcp__slack-notifications__check_build_status()

# Get channel messages
mcp__slack-notifications__get_channel_messages(channel_id: "C...", limit: 10)

# Search for failed builds
mcp__slack-notifications__search_messages(query: "build failed")

# Send a message
mcp__slack-notifications__send_message(text: "Build complete!")

Xcode Cloud Setup

To send build notifications to Slack:

  1. Go to App Store ConnectXcode Cloud

  2. Select your workflow → Post-Actions

  3. Add Slack notification

  4. Configure to post to your build channel

Troubleshooting

"missing_scope" error

Add the required scope in your Slack App settings under OAuth & Permissions.

"channel_not_found" error

Make sure the bot is invited to the channel (/invite @BotName).

No messages returned

Check that SLACK_BUILD_CHANNEL_ID is correct and the bot has access.

Available Tools

5 tools
check_build_statusA

Get the latest Xcode Cloud build status from Slack notifications. Returns recent build messages including status, workflow name, duration, and timestamp.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of recent build messages to retrieve (default: 5, max: 20)
workflowNoFilter by workflow name (e.g., 'Cuti-E-Admin', 'Nutri-E'). Case-insensitive partial match.

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It indicates a read-like operation ('get') but does not explicitly state it is safe or non-destructive. Missing details on permissions, rate limits, or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the tool's purpose, and efficient with no waste. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 100% schema coverage and simple parameters, the description is fairly complete. It lists return fields (status, workflow, duration, timestamp) but could clarify ordering (e.g., 'latest' meaning most recent) or mention that it filters specifically for Xcode Cloud notifications.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and parameters are well-described in the schema (limit with default/max, workflow with case-insensitive partial match). The description adds no additional meaning beyond the schema, so baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool gets the latest Xcode Cloud build status from Slack notifications and specifies the return fields (status, workflow name, duration, timestamp). It distinguishes from sibling tools like get_channel_messages or search_messages, which are general Slack operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for retrieving Xcode Cloud build notifications but does not explicitly state when to use it versus alternatives or provide exclusions (e.g., not for general messages). No guidance on prerequisites or when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_channel_messagesB

Read recent messages from a specific Slack channel

ParametersJSON Schema
NameRequiredDescriptionDefault
channel_idNoSlack channel ID (e.g., C01234567). If not provided, uses the build channel.
limitNoNumber of messages to retrieve (default: 10, max: 100)

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden but only states 'Read recent messages', omitting behavioral traits like rate limits, pagination, or response structure. The read-only nature is implied but not explicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence of 6 words, directly stating the core purpose with no wasted text. It is optimally concise and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with two parameters and no output schema. The description covers the basic intent but does not hint at return format or explain 'recent' (e.g., time window). It is minimally adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents both parameters effectively. The description adds no additional semantic context beyond the schema's descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the action (Read) and resource (recent messages from a specific Slack channel), distinguishing it from sibling tools like search_messages (search) and send_message (send). It is unambiguous and actionable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., search_messages for historical queries). No mention of prerequisites or context of use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_channelsB

List available Slack channels the bot has access to

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of channels to list (default: 50)

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description only hints at read-only behavior ('the bot has access to') but fails to disclose pagination, rate limits, or error handling, leaving significant gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with clear subject, verb, and scope—concise and front-loaded with no extraneous content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one optional parameter, no output schema, no nested objects), the description is nearly complete, though it omits mention of return format or pagination behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers 100% of parameters (including default and description for 'limit'), so the description adds no extra semantics beyond what the input schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'list', the resource 'Slack channels', and the scope 'the bot has access to', differentiating it from sibling tools like get_channel_messages and search_messages.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives, nor are there any when-not or context clues for the agent to decide.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_messagesB

Search for messages in Slack containing specific text

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query (e.g., 'build failed', 'Cuti-E-Admin')
limitNoMaximum number of results (default: 10)

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It only states 'Search for messages' without mentioning return format, pagination, rate limits, scope (all channels vs. specific ones), or any side effects. This is a significant gap for a search tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence (7 words), but it is underspecified. While not verbose, it lacks sufficient detail for an agent to use the tool correctly. The conciseness comes at the expense of completeness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (2 parameters, no output schema) and no annotations, the description is incomplete. It does not specify the scope of the search (e.g., all channels, user messages), sort order, or pagination behavior. The schema provides some detail for parameters, but the overall context is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers both parameters with descriptions (100% coverage). Baseline is 3. The description adds the context that the tool searches for messages containing the query text, but this is already implied by the schema's parameter description (e.g., 'Search query'). No additional meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action (search), resource (messages in Slack), and scope (containing specific text). It differentiates from siblings like 'get_channel_messages' which retrieves messages from a channel, and 'send_message' which sends messages.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives such as 'get_channel_messages' or 'check_build_status'. There is no mention of prerequisites, context, or exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_messageB

Send a message to a Slack channel

ParametersJSON Schema
NameRequiredDescriptionDefault
channel_idNoSlack channel ID. If not provided, uses the build channel.
textYesMessage text to send

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description does not disclose behavioral traits beyond the basic action. Since no annotations are provided, it should mention aspects like authentication requirements, side effects, or default behavior when channel_id is omitted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words, effectively conveying the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with only two parameters and no output schema, the description is minimally adequate but does not provide extra context such as message length limitations or formatting options.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers both parameters with descriptions, achieving 100% schema description coverage. The tool description adds no additional meaning beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Send a message') and the resource ('a Slack channel'), distinguishing it from sibling tools like check_build_status, get_channel_messages, list_channels, and search_messages.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives, such as when to use send_message instead of check_build_status or search_messages.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 5 tool updatesv1.0.0
    • First observedcheck_build_status
    • First observedget_channel_messages
    • First observedlist_channels
    • First observedsearch_messages
    • First observedsend_message

TDQS

A3.6/5.0
Disambiguation5/5

Each tool serves a distinct purpose: build status retrieval, channel message reading, channel listing, text search, and message sending. No overlapping functionality.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (check_build_status, get_channel_messages, list_channels, search_messages, send_message).

Tool Count4/5

Five tools is a reasonable scope for a Slack-focused server. It covers core actions without being overly minimal or bloated.

Completeness4/5

The set covers essential Slack operations (list, read, search, send) plus build status. Missing features like thread replies or file uploads are minor gaps for a notification server.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables interaction with Slack workspaces as a user, supporting channel listing, message posting, threading, reactions, and user management via the Slack API.
    8
    11
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Enables interaction with Slack workspaces through comprehensive channel management, messaging, user management, file uploads, and Block Kit formatting. Features secure credential storage via macOS Keychain and supports all major Slack operations including reactions and workspace information.
    26
    3
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables interaction with Slack workspaces through comprehensive integration capabilities. Supports channel management, messaging, thread replies, reactions, and message history retrieval through natural language commands.
    54
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Enables interaction with Slack workspaces to manage channels, post messages, add reactions, view message history and threads, and retrieve user profiles through the Model Context Protocol.
    8
    18
    ISC

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Stig-Johnny/slack-notifications-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server