Claude Code Plugins

Community-maintained marketplace

Feedback

slack-mcp-server

@rbarazi/agent-skills
0
0

Create MCP servers that interact with Slack APIs. Use when building agent tools for Slack canvases, posting messages, or other Slack operations via Model Context Protocol.

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name slack-mcp-server
description Create MCP servers that interact with Slack APIs. Use when building agent tools for Slack canvases, posting messages, or other Slack operations via Model Context Protocol.

Slack MCP Server Tools

Build MCP servers that enable AI agents to interact with Slack APIs.

Problem Statement

AI agents need to perform actions in Slack beyond just sending messages - creating canvases, managing channels, posting rich content. MCP servers provide a standardized way to expose these capabilities as tools.

When to Use

  • Building agent tools that create/update Slack canvases
  • Exposing Slack API operations as MCP tools
  • Returning rich resources (Block Kit, Work Objects) from tool calls
  • Keywords: mcp server, slack tools, slack canvas, agent tools, model context protocol

Quick Start

module SlackCanvasMCPServer
  class Server < BaseMCPServer
    server_name "slack_canvas"
    server_version "1.0.0"

    tool :create_canvas
    tool :update_canvas

    def create_canvas(title:, content:, channel_id: nil)
      client = Slack::Web::Client.new(token: config[:slack_token])

      response = client.canvases_create(
        title: title,
        document_content: JSON.generate({ type: "markdown", markdown: content })
      )

      build_success_result(
        text: "Created canvas '#{title}'",
        canvas_id: response["canvas_id"]
      )
    end
  end
end

Architecture

Agent → Task → LLM → Tool Call → MCP Server → Slack API
                                      ↓
                              Tool Result with Resources

Key Patterns

Tool registration: Use tool :method_name DSL

Config injection: Credentials via config[:slack_token], config[:team_id]

Multi-channel results: Return ui:// + slack:// resources for different clients

Testing Strategy

RSpec.describe SlackCanvasMCPServer::Server do
  let(:server) { described_class.new(config: { slack_token: "xoxb-test" }) }

  it "creates canvas with valid content" do
    stub_slack_api(:canvases_create).to_return(canvas_id: "C123")

    result = server.create_canvas(title: "Test", content: "# Hello")

    expect(result[:canvas_id]).to eq("C123")
  end
end

Common Pitfalls

  1. Token scopes: Ensure bot token has required scopes (canvases:write, etc.)
  2. Rate limits: Handle Slack API rate limiting gracefully
  3. Content format: Canvas content must be valid markdown or document JSON

Reference Files