# slack-mcp

A remote MCP server that gives AI assistants access to your Slack workspace. Each user authenticates individually – you only see channels and messages you already have permission to access.

**Endpoint:** `https://slack-mcp.tp.ie/mcp`

## Tools

| Tool | Description |
|---|---|
| `whoami` | Get your Slack identity (user ID, username, team) |
| `list_user_channels` | List **all** channels you are a member of with full metadata (member count, topic, purpose, last updated), sorted by name — fetches all pages automatically |
| `list_channels` | List channels you are a member of (public and private), with cursor pagination |
| `get_channel_history` | Read messages from a channel; supports time windows and cursor pagination |
| `get_thread` | Read all replies in a thread given a channel ID and parent message timestamp |
| `search_messages` | Full-text search across all channels you have access to, including thread replies |
| `list_channel_files` | List files uploaded or shared in a channel |

## Search modifiers

`search_messages` supports Slack's full query syntax:

```
in:#channel          – scope to a specific channel
from:@user           – messages from a specific person
before:YYYY-MM-DD    – messages before a date
after:YYYY-MM-DD     – messages after a date
has:link             – messages containing a URL
```

You can also include plain keywords in the query. For example, searching `docs.google.com in:#project-x` will find all messages in that channel containing a Google Drive link.

Results include both top-level messages and thread replies. When a result has a `thread_ts` that differs from its `ts`, the match is inside a thread – pass `thread_ts` to `get_thread` to read the full conversation.

## Example prompts

**Decision archaeology**
- Why did we decide to use Crashlytics? Search #myproject in Slack and MYPROJ in YouTrack for any discussion.
- Find the Slack thread where we agreed on the new authentication flow for MYPROJ and summarise the key points.
- When was the decision made to drop support for iOS 15 in MYPROJ? Who was involved?

**Cross-referencing**
- Find all Google Drive documents shared in #ai in the last 3 months.
- Look up YouTrack issue MYPROJ-456, then find any related Slack discussion and give me a full picture of the context.
- Search Slack for any discussion about the Stripe integration and cross-reference with the relevant Teamwork notebooks.

**General search**
- What has been said in #ios about liquid glass this year?
- Find everything @dermot said about compliance in #ripley last week.
- Show me all MYPROJ messages in #activity-feed from last week.

## Pagination

`list_channels` and `get_channel_history` both return a `next_cursor` when more results exist. Pass it back as `cursor` on the next call to fetch the next page.

- **`list_channels`** – defaults to 200 channels per page. If you don't see a channel you expect, check `next_cursor` and paginate.
- **`get_channel_history`** – defaults to 100 messages per page, newest-first. Use `oldest` and `latest` to scope a time window, then follow `next_cursor` to walk further back.
- **`search_messages`** – results are paginated too; pass `page` (1-based) to retrieve subsequent pages.

If a message you're looking for isn't in the first response, paginate before concluding it doesn't exist.

## Authentication

Connect via any MCP client that supports OAuth 2.0 Authorization Code + PKCE. You will be redirected to Slack to authorise the connection.

## Issues

Found a bug or have a feature request? Log it in the [GitHub repository](https://github.com/Tapadoo/tapadoo-custom-mcps/issues).
