Client Slack
FreeNot checkedListens for Slack @mentions and publishes them as real-time events to the KĀDI event bus, enabling event-driven architectures with low latency.
About
Listens for Slack @mentions and publishes them as real-time events to the KĀDI event bus, enabling event-driven architectures with low latency.
README
MCP Server that listens for Slack @mentions and publishes them as events to the KĀDI event bus for real-time processing by template-agent-typescript.
Overview
This server is part of the KĀDI Slack bot architecture. It:
- Connects to Slack via Socket Mode to receive real-time @mention events
- Validates and publishes events to KĀDI broker using topic-based routing
- Enables event-driven architecture with <100ms latency
- Works in conjunction with mcp-server-slack (for sending replies)
Architecture
Slack @mention → Socket Mode → Event Validation → KĀDI Event Bus
↓
Topic: slack.app_mention.{BOT_USER_ID}
↓
Agent_TypeScript
↓
Claude API + Reply via mcp-server-slack
Event-Driven Architecture
This server implements a publish-subscribe pattern using KĀDI's RabbitMQ infrastructure:
- Publisher: mcp-client-slack publishes
SlackMentionEventto topicslack.app_mention.{BOT_USER_ID} - Subscriber: Agent_TypeScript subscribes to the same topic for real-time event delivery
- Benefits: Real-time processing (<100ms), no polling overhead, scalable architecture
Installation
cd C:\p4\Personal\SD\mcp-client-slack
npm install
Configuration
Create .env file:
# Slack API Credentials
SLACK_BOT_TOKEN=xoxb-your-bot-token
SLACK_APP_TOKEN=xapp-your-app-token
# Anthropic Claude API (optional, not used in this server)
ANTHROPIC_API_KEY=sk-ant-your-key
# MCP Server Configuration
MCP_LOG_LEVEL=info
# KĀDI Broker Configuration (REQUIRED for event publishing)
KADI_BROKER_URL=ws://localhost:8080
SLACK_BOT_USER_ID=U01234ABCD
Environment Variables
| Variable | Required | Description | Example |
|---|---|---|---|
SLACK_BOT_TOKEN |
✅ Yes | Slack bot user OAuth token | xoxb-123... |
SLACK_APP_TOKEN |
✅ Yes | Slack app-level token for Socket Mode | xapp-1-A... |
KADI_BROKER_URL |
✅ Yes | WebSocket URL for KĀDI broker | ws://localhost:8080 |
SLACK_BOT_USER_ID |
✅ Yes | Slack bot user ID for event topic routing | U01234ABCD |
MCP_LOG_LEVEL |
No | Logging level (debug, info, warn, error) | info |
ANTHROPIC_API_KEY |
No | Not used (kept for backward compatibility) | sk-ant-... |
Required Slack Scopes
app_mentions:read- Listen for @mentionschat:write- (handled by mcp-server-slack)
Usage
Development Mode
npm run dev
Production Mode
npm run build
npm start
As MCP Upstream (via KADI Broker)
Add to kadi-broker/mcp-upstreams.json:
{
"id": "slack-client",
"name": "Slack Event Listener",
"type": "stdio",
"prefix": "slack_client",
"networks": ["slack"],
"stdio": {
"command": "node",
"args": ["C:/p4/Personal/SD/mcp-client-slack/dist/index.js"],
"env": {
"SLACK_BOT_TOKEN": "xoxb-...",
"SLACK_APP_TOKEN": "xapp-...",
"ANTHROPIC_API_KEY": "sk-ant-..."
}
}
}
🔴 Breaking Changes
Version 2.0.0 - Event-Driven Architecture
What Changed:
- ❌ REMOVED:
get_slack_mentionsMCP tool (polling-based) - ✅ ADDED: Event publishing to KĀDI event bus (real-time)
Impact:
- Agents can no longer poll for mentions using
get_slack_mentions - Agents must subscribe to
slack.app_mention.{BOT_USER_ID}events instead
Migration Required:
- Update Agent_TypeScript to use event subscription (see Migration Guide below)
- Add
KADI_BROKER_URLandSLACK_BOT_USER_IDto environment configuration
Event Topics
Topic Pattern Standard
All KĀDI events follow the standardized topic pattern: {platform}.{event_type}.{bot_id}
{platform}: Platform identifier (slack,discord, etc.){event_type}: Event type (app_mention,mention, etc.){bot_id}: Bot unique identifier (critical for multi-bot deployments)
Why bot_id is required:
- ✅ Enables multiple bot instances in the same workspace
- ✅ Routes events only to the intended bot
- ✅ Prevents cross-bot event delivery
- ✅ Supports multi-tenant deployments
Validation: Topics are automatically validated by @agents/shared package. Invalid patterns will log warnings but still publish.
See TOPIC_PATTERN.md for complete documentation.
slack.app_mention.{BOT_USER_ID}
Published when the bot is @mentioned in Slack.
Event Payload (SlackMentionEvent):
{
id: string; // Unique mention ID (Slack event timestamp)
user: string; // Slack user ID who mentioned the bot
text: string; // Message text (with @bot mention removed)
channel: string; // Slack channel ID
thread_ts: string; // Thread timestamp for replies
ts: string; // Event timestamp from Slack
bot_id: string; // Slack bot user ID (routing identifier)
timestamp: string; // ISO 8601 datetime when event was published
}
Example:
{
"id": "1234567890.123456",
"user": "U12345",
"text": "What's the weather today?",
"channel": "C12345",
"thread_ts": "1234567890.123456",
"ts": "1234567890.123456",
"bot_id": "U01234ABCD",
"timestamp": "2025-01-16T10:30:00.000Z"
}
Integration with Agent_TypeScript
Event Subscription (Current - v2.0.0+)
Agent_TypeScript subscribes to real-time events:
import { SlackMentionEventSchema } from './types/slack-events.js';
// Subscribe to Slack mention events
client.subscribeToEvent(`slack.app_mention.${botUserId}`, async (event: unknown) => {
// Validate event payload
const validationResult = SlackMentionEventSchema.safeParse(event);
if (!validationResult.success) {
console.error('Invalid event:', validationResult.error);
return;
}
const mention = validationResult.data;
// Process mention with Claude API
// Reply using mcp-server-slack tools
});
Polling (Deprecated - v1.x)
⚠️ No longer supported - Update to event subscription:
// ❌ OLD (v1.x) - No longer works
const result = await client.getBrokerProtocol().invokeTool({
targetAgent: 'slack-client',
toolName: 'slack_client_get_slack_mentions',
toolInput: { limit: 5 },
timeout: 10000
});
Migration Guide
Upgrading from v1.x to v2.0.0
Step 1: Update Environment Variables
Add to .env:
KADI_BROKER_URL=ws://localhost:8080
SLACK_BOT_USER_ID=U01234ABCD # Get from Slack app settings
Step 2: Update Agent Code
Remove polling logic:
// ❌ Remove this
setInterval(async () => {
const result = await invokeTool({
targetAgent: 'slack-client',
toolName: 'slack_client_get_slack_mentions',
...
});
}, 10000);
Add event subscription:
// ✅ Add this
import { SlackMentionEventSchema } from './types/slack-events.js';
client.subscribeToEvent(
`slack.app_mention.${process.env.SLACK_BOT_USER_ID}`,
async (event: unknown) => {
const mention = SlackMentionEventSchema.parse(event);
// Your existing processing logic
}
);
Step 3: Update Dependencies
Install Zod for schema validation (if not already installed):
npm install zod
Step 4: Test Event Flow
- Start KĀDI broker
- Start mcp-client-slack (publisher)
- Start Agent_TypeScript (subscriber)
- Send test @mention in Slack
- Verify event received in <100ms
License
MIT
Installing Client Slack
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/a-g-e-n-t-s/mcp-client-slackFAQ
Is Client Slack MCP free?
Yes, Client Slack MCP is free — one-click install via Unyly at no cost.
Does Client Slack need an API key?
No, Client Slack runs without API keys or environment variables.
Is Client Slack hosted or self-hosted?
A hosted option is available: Unyly runs the server in the cloud, no local setup required.
How do I install Client Slack in Claude Desktop, Claude Code or Cursor?
Open Client Slack on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
Gmail
Read, send and search emails from Claude
by GoogleSlack
Send, search and summarize Slack messages
by SlackRunbear
No-code MCP client for team chat platforms, such as Slack, Microsoft Teams, and Discord.
Discord Server
A community discord server dedicated to MCP by [Frank Fiegel](https://github.com/punkpeye)
Klavis AI
Open Source MCP Infra. Hosted MCP servers and MCP clients on Slack and Discord.
Work90210/APIFold
Turn any REST API into a hosted MCP server. 18 free public servers (GitHub, Stripe, Slack, OpenAI, Notion, and more) — no setup required, bring your own API key
by Work90210arikusi/deepseek-mcp-server
MCP server for DeepSeek AI with chat, reasoning, multi-turn sessions, function calling, thinking mode, and cost tracking.
by arikusihashgraph-online/hashnet-mcp-js
MCP server for the Registry Broker. Discover, register, and chat with AI agents on the Hashgraph network.
by hashgraph-onlineprofullstack/mcp-server
A comprehensive MCP server aggregating 20+ tools including SEO optimization, document conversion, domain lookup, email validation, QR generation, weather data,
by profullstackWayStation-ai/mcp
Seamlessly and securely connect Claude Desktop and other MCP hosts to your favorite apps (Notion, Slack, Monday, Airtable, etc.). Takes less than 90 secs.
by waystation-aiCompare Client Slack with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All communication MCPs
