About
AI SDK tools for Slack
README
AI SDK tools for Slack. Typed, structured tool calls for AI agents. No MCP transport required.
Installation
npm install slack-tools
# or
yarn add slack-tools
# or
pnpm add slack-tools
# or
bun add slack-tools
Quick Start
import { generateText } from "ai";
import { createSlackTools } from "slack-tools";
const tools = createSlackTools(process.env.SLACK_USER_TOKEN);
const { text } = await generateText({
model: "anthropic/claude-sonnet-4-5",
tools,
prompt: "Search for messages about the Q1 roadmap in #general",
});
The model string uses the Vercel AI Gateway, which provides access to OpenAI, Anthropic, Google, and other providers through a single API.
API Reference
createSlackTools
Returns all available Slack tools, ready to pass to generateText, streamText, or any AI SDK agent.
import { createSlackTools } from "slack-tools";
const tools = createSlackTools(process.env.SLACK_USER_TOKEN);
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
slackToken |
string |
Yes | A Slack user OAuth token (xoxp-...) with the required scopes. |
options |
CreateSlackToolsOptions |
No | Configuration options (see below). |
Options
| Name | Type | Default | Description |
|---|---|---|---|
needsApproval |
boolean | SlackToolName[] |
undefined |
Controls which tools require human approval before execution. Pass true to require approval for all tools, or an array of tool names for selective approval. |
// Require approval for all tools
const tools = createSlackTools(process.env.SLACK_USER_TOKEN, {
needsApproval: true,
});
// Require approval only for write operations
const tools = createSlackTools(process.env.SLACK_USER_TOKEN, {
needsApproval: [
"slack_send_message",
"slack_schedule_message",
"slack_create_canvas",
"slack_join_channel",
"slack_delete_message",
],
});
Returns
An object containing the following tools:
| Tool | Description |
|---|---|
slack_send_message |
Send a message to a channel or user. |
slack_schedule_message |
Schedule a message for future delivery. |
slack_create_canvas |
Create a new Slack Canvas document. |
slack_search_public |
Search messages in public channels. |
slack_search_public_and_private |
Search messages across all channels (public, private, DMs). |
slack_search_channels |
Find channels by name, topic, or purpose. |
slack_search_users |
Find users by name, email, or title. |
slack_read_channel |
Read message history from a channel. |
slack_read_thread |
Read a thread (parent message and replies). |
slack_read_user_profile |
Get detailed profile information for a user. |
slack_join_channel |
Join a public channel on behalf of the bot/agent. |
slack_delete_message |
Delete a message previously sent by the bot/agent. |
Each tool includes inputSchema, outputSchema, execute, and toModelOutput.
Required Scopes
Your Slack app needs the following user token scopes:
chat:write, canvases:read, canvases:write, channels:history, channels:join, groups:history, im:history, mpim:history, search:read.public, search:read.private, search:read.mpim, search:read.im, search:read.files, search:read.users, users:read, users:read.email
Comparison with Slack MCP
This package was built by running each tool against the Slack MCP server and comparing responses side-by-side. The goal was to match the MCP's behavior as closely as the public Slack API allows.
| Tool | slack-tools | Slack MCP | Notes |
|---|---|---|---|
| Send message | ✅ | ✅ | Equivalent output |
| Schedule message | ✅ | ✅ | Equivalent output |
| Create canvas | ✅ | ✅ | Equivalent output |
| Search public messages | ✅ | ✅ | MCP includes message context and reply counts via internal APIs |
| Search all messages | ✅ | ✅ | Same as above |
| Search channels | ✅ | ✅ | MCP includes channel permalinks |
| Search users | ✅ | ✅ | Equivalent output including profile permalinks |
| Read channel | ✅ | ✅ | Equivalent output |
| Read thread | ✅ | ✅ | Equivalent output |
| Read user profile | ✅ | ✅ | Equivalent output |
| Join channel | ✅ | ❌ | Not available in Slack MCP |
| Delete message | ✅ | ❌ | Not available in Slack MCP |
| Read canvas | ❌ | ✅ | Slack's public API does not support reading canvas content |
| Send message draft | ❌ | ✅ | chat.draft is not available in the public Slack Web API |
The MCP returns all results as stringified text inside content[0].text. This package returns typed objects from execute and provides toModelOutput for model-friendly text formatting, making it easy to programmatically compose follow-up actions from tool results.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Support
For issues and questions:
- Check the AI SDK documentation
- Review the Slack Web API documentation
- Open an issue in this repository
License
Install Slack Tools in Claude Desktop, Claude Code & Cursor
unyly install slack-toolsInstalls into Claude Desktop, Claude Code, Cursor & VS Code — handles npx, uvx and build-from-source repos for you.
First time? Get the CLI: curl -fsSL https://unyly.org/install | sh
Or configure manually
Run in your terminal:
claude mcp add slack-tools -- npx -y slack-toolsStep-by-step: how to install Slack Tools
FAQ
Is Slack Tools MCP free?
Yes, Slack Tools MCP is free — one-click install via Unyly at no cost.
Does Slack Tools need an API key?
No, Slack Tools runs without API keys or environment variables.
Is Slack Tools hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Slack Tools in Claude Desktop, Claude Code or Cursor?
Open Slack Tools 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)
Compare Slack Tools with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All communication MCPs
