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.
Builds MCP servers that expose Slack API operations like canvas creation and message posting.
/plugin marketplace add rbarazi/agent-skills/plugin install agentify-skills@agentify-skillsThis skill inherits all available tools. When active, it can use any tool Claude has access to.
references/base-server.mdreferences/canvas-api.mdreferences/multi-channel.mdreferences/templates.mdBuild MCP servers that enable AI agents to interact with Slack APIs.
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.
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
Agent → Task → LLM → Tool Call → MCP Server → Slack API
↓
Tool Result with Resources
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
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