Skip to main content
Glama
annyzhou
by annyzhou
README.md
# Slack MCP Server

An MCP server implementation that integrates the Slack API, providing messaging, channel management, and search capabilities.

## Features

- **Conversations**: List channels, read message history, manage threads
- **Messaging**: Send, update, and delete messages; add reactions
- **Search**: Find messages across your workspace (user token only)
- **Users**: List users, get profiles, lookup by email
- **Files & Pins**: List files, manage pinned messages
- **Token Rotation**: Automatic refresh for rotatable tokens

## Tools

### Conversations
- `slack_list_conversations` - List channels, DMs, and group DMs
- `slack_get_conversation_info` - Get channel details
- `slack_conversations_history` - Fetch message history
- `slack_conversations_replies` - Get thread replies
- `slack_conversations_members` - List channel members
- `slack_conversations_join` - Join a public channel
- `slack_conversations_leave` - Leave a conversation
- `slack_conversations_open` - Open a DM or group DM

### Messages
- `slack_chat_post_message` - Send a message to a channel or thread
- `slack_chat_update` - Update an existing message
- `slack_chat_delete` - Delete a message
- `slack_reactions_add` - Add emoji reaction
- `slack_reactions_remove` - Remove emoji reaction

### Search
- `slack_search_messages` - Search messages (requires user token)

### Users
- `slack_users_list` - List workspace users
- `slack_users_info` - Get user details by ID
- `slack_users_lookup_by_email` - Find user by email
- `slack_auth_test` - Get current token info

### Other
- `slack_team_info` - Get workspace info
- `slack_bookmarks_list` - List channel bookmarks
- `slack_pins_list` / `slack_pins_add` / `slack_pins_remove` - Manage pins
- `slack_reminders_list` / `slack_reminders_add` / `slack_reminders_delete` - Manage reminders
- `slack_files_list` / `slack_files_info` - List and get file details

## Configuration

### Getting a Slack Token

1. Go to [Slack API Apps](https://api.slack.com/apps)
2. Click **Create New App** → **From scratch**
3. Go to **OAuth & Permissions**
4. Add scopes under **Bot Token Scopes** or **User Token Scopes**:
   ```
   channels:read, channels:history, chat:write, users:read, team:read
   ```
5. Click **Install to Workspace**
6. Copy the token (`xoxb-...` or `xoxp-...`)

### Token Types

| Token | Prefix | Search? | Access |
|-------|--------|---------|--------|
| Bot | `xoxb-` | No | Invited channels only |
| User | `xoxp-` | Yes | All user's channels |
| Rotatable | `xoxe.xoxp-` | Yes | Auto-refreshes |

## Development

### Install Dependencies

```bash
uv sync
```

### Run the Server

```bash
uv run python src/main.py
```

### Test the API

```bash
uv run python test_api.py
```

### Test with MCP Inspector

```bash
npx @modelcontextprotocol/inspector uv run python src/main.py
```

## License

MIT License - see [LICENSE](LICENSE) for details.