slack message relay via mcp protocol
Implements the Model Context Protocol (MCP) as a transport layer to relay Slack messages and events into Claude or other LLM clients. Uses MCP's resource and tool abstractions to expose Slack API operations (send, read, list messages) as standardized LLM-callable functions, enabling bidirectional Slack integration without direct API key exposure to the LLM.
Unique: Uses MCP as the integration protocol rather than direct Slack SDK wrapping, allowing the LLM to invoke Slack operations through standardized MCP resource/tool schemas. This decouples the LLM from Slack API authentication and enables multi-client support (Claude, Anthropic SDK, custom LLM agents).
vs alternatives: Cleaner than custom Slack API wrappers because MCP standardizes the interface; more secure than embedding Slack tokens in LLM prompts because credentials stay in the MCP server process.
cli-based slack message sending and retrieval
Exposes a command-line interface for sending messages to Slack channels and retrieving message history without requiring LLM integration. Uses Node.js child process execution to invoke Slack API calls, supporting both synchronous message sends and asynchronous channel history queries with optional filtering by timestamp or user.
Unique: Provides a thin CLI wrapper around Slack API operations, making Slack integration accessible from shell scripts and CI/CD without requiring Node.js application code. Uses environment variables for credential management, following Unix conventions.
vs alternatives: Simpler than curl-based Slack API calls because it handles authentication and JSON serialization; more portable than bash-only solutions because it's cross-platform (Windows, macOS, Linux).
typescript api for slack operations with type safety
Exports a typed TypeScript/JavaScript API for Slack operations (send message, list channels, get message history, post reactions) with full type definitions and async/await support. Wraps the Slack Web API client with convenience methods that handle pagination, error handling, and response normalization, enabling type-safe Slack integration in Node.js applications.
Unique: Provides a thin, type-safe wrapper over @slack/web-api with convenience methods for common operations, avoiding boilerplate while maintaining full TypeScript type safety. Designed for composition with other async operations in Node.js workflows.
vs alternatives: More type-safe than raw Slack API calls; less opinionated than full-featured bot frameworks (Bolt, Hubot), making it suitable for embedding in existing applications.
claude code skill integration for slack automation
Registers slack-relay-mcp as a Claude Code skill, allowing Claude's code interpreter to invoke Slack operations directly during code execution. When Claude writes or executes code, it can call Slack functions to send messages, read channels, or retrieve history as part of a multi-step reasoning workflow, with results fed back into Claude's context for further analysis.
Unique: Bridges Claude's code execution environment with Slack by registering as a Code skill, allowing Claude to invoke Slack operations as part of its reasoning loop. This enables Claude to read Slack context, analyze it, and take actions without explicit user prompting for each step.
vs alternatives: More integrated than manual Claude + Slack API calls because Claude can reason about Slack data and take actions autonomously; more flexible than pre-built Slack bots because Claude can adapt its behavior based on message content.
mcp resource exposure for slack channels and messages
Exposes Slack channels and messages as MCP resources (read-only or read-write), allowing LLM clients to browse and reference Slack data through the MCP resource protocol. Resources are identified by URIs (e.g., slack://channel/C123456) and return structured JSON representations of channels, message threads, and user metadata, enabling LLMs to understand Slack context without making direct API calls.
Unique: Uses MCP's resource protocol to expose Slack data as browsable, structured resources rather than tool-callable functions. This allows LLMs to understand Slack context through resource references, reducing the need for explicit tool calls and enabling more natural context integration.
vs alternatives: More efficient than tool-based message retrieval because resources can be cached and referenced by URI; more structured than embedding raw Slack JSON in prompts because resources enforce schema consistency.
mcp tool schema for slack operations with function calling
Defines MCP tool schemas for Slack operations (send_message, get_channel_history, list_channels, add_reaction) that LLM clients can invoke through the MCP function-calling protocol. Each tool includes input validation schemas, error handling, and response normalization, allowing LLMs to call Slack operations with type-safe arguments and receive structured results.
Unique: Implements MCP tool schemas for Slack operations, enabling LLMs to invoke Slack actions through standardized function-calling interfaces. Schemas include input validation and error handling, reducing the burden on the LLM to construct valid Slack API calls.
vs alternatives: More standardized than custom tool definitions because it uses MCP's schema format; more flexible than hard-coded tool lists because schemas can be extended with custom operations.
slack bot token authentication and credential management
Handles Slack bot token authentication through environment variables or configuration files, managing credentials securely without exposing them to LLM contexts. Uses the @slack/web-api client under the hood to authenticate with Slack's OAuth 2.0 flow, supporting token rotation and scope validation to ensure the bot has required permissions.
Unique: Isolates Slack credentials in the MCP server process, preventing token exposure to LLM contexts. Uses environment-based configuration following Unix security conventions, enabling credential management through standard deployment tools (Docker secrets, Kubernetes ConfigMaps).
vs alternatives: More secure than embedding tokens in prompts or passing them through LLM context; more flexible than hard-coded tokens because it supports environment-based configuration and rotation.
message pagination and history retrieval with filtering
Implements cursor-based pagination for Slack message history retrieval, allowing efficient querying of large channels without loading all messages into memory. Supports filtering by timestamp range, user ID, or message type, with automatic cursor management and result normalization to handle Slack API's pagination format.
Unique: Abstracts Slack's cursor-based pagination into a simple iterator interface, handling cursor management and result normalization transparently. Supports optional filtering by timestamp and user, reducing the need for post-processing.
vs alternatives: More efficient than fetching all messages at once because it uses pagination; more flexible than fixed-size queries because it supports arbitrary filtering and cursor-based traversal.
+2 more capabilities