50 Commits

Author SHA1 Message Date
Dmitrii Korotovskii b88c0de3f7 Remove maintainer note from configuration documentation 2026-05-15 00:51:29 +02:00
Dmitrii Korotovskii 31f3f69e62 Update 02-installation.md 2026-05-15 00:51:15 +02:00
Dmitrii Korotovskii 2aedf06896 Remove maintainer note from authentication setup 2026-05-15 00:50:58 +02:00
George Bashi 55842fe2c8 feat: add channels_me tool
Add a new MCP tool to list channels the calling user is a member of,
using the users.conversations API. Follows the same pattern as
usergroups_me vs usergroups_list.

Unlike channels_list which returns all workspace channels, channels_me
returns only channels the user has joined — useful on large workspaces
where channels_list returns thousands of results.

Supports channel_types, sort (by popularity), limit, and cursor
parameters.
2026-05-14 22:20:31 +02:00
Francis J. Lacoste f16fb0fe2b feat: stale-while-revalidate cache for large Slack workspaces
On large workspaces (41K+ users), the server blocks for ~90 seconds
during startup while fetching all users/channels from the Slack API,
exceeding MCP client connection timeouts.

Changes:
- Load expired cache files immediately, mark server ready, then refresh
  in background via goroutine (stale-while-revalidate pattern)
- Convert usersReady/channelsReady to atomic.Bool for race-free reads
- Add refreshingUsers/refreshingChannels atomic.Bool to coalesce
  concurrent background refreshes via CompareAndSwap
- Remove stdio IsReady() polling loop (no longer needed)
- Increase default cache TTL from 1h to 24h
- Document SLACK_MCP_CACHE_TTL and SLACK_MCP_MIN_REFRESH_INTERVAL
  env vars in docs/03-configuration-and-usage.md

Fixes startup timeout on large workspaces. Server now starts in under
1 second regardless of workspace size when a cache file exists.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-14 21:44:44 +02:00
George Bashi 110ae5a42f feat: add conversations_join and conversations_leave tools
Add two new MCP tools for channel membership management:

- conversations_join: Join public channels via conversations.join API.
  Idempotent — joining a channel you're already in is a no-op.
  Requires channels:join (xoxb) or channels:write (xoxp) scope.

- conversations_leave: Leave channels, group conversations, or DMs
  via conversations.leave API. Marked as destructive.
  Requires channels:manage (xoxb) or channels:write (xoxp) scope.
  On Enterprise Grid with session tokens (xoxc/xoxd), routes through
  the edge API to bypass enterprise_is_restricted errors.

Both tools accept channel IDs (Cxxxxxxxxxx) or names (#channel-name)
using the existing resolveChannelID helper.

Updated docs/01-authentication-setup.md with new OAuth scopes
(channels:join, channels:manage) and docs/03-configuration-and-usage.md
with the new tool names in the available tools list.
2026-03-03 15:20:18 -08:00
sspiridonov 11d08e7002 docs: add usergroups tools to SLACK_MCP_ENABLED_TOOLS documentation
Update available tools list and clarify that usergroups tools are
registered by default and require appropriate OAuth scopes.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-10 16:59:13 +01:00
sspiridonov d5ed2c4834 Merge branch 'master' into feat/usergroups-management 2026-02-08 23:30:14 +01:00
sspiridonov 86c27e431c docs: add Tool Registration and Permissions section
Add dedicated documentation section explaining ENABLED_TOOLS feature with:
- Overview of two-layer system (registration vs runtime permissions)
- Four practical configuration examples
- Behavior matrix showing all combinations

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-08 22:21:44 +01:00
sspiridonov cb7bf4a437 docs: update env var descriptions for ENABLED_TOOLS interaction
- SLACK_MCP_ADD_MESSAGE_MARK now mentions both enablement methods
- SLACK_MCP_ENABLED_TOOLS clarifies write tools behavior
- SLACK_MCP_ADD_MESSAGE_TOOL clarifies fallback to ENABLED_TOOLS

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-08 22:13:24 +01:00
sspiridonov e1d1086cf6 docs: add usergroups OAuth scopes to authentication setup
Add usergroups:read and usergroups:write scopes to:
- OAuth scope list
- App manifest JSON

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-08 20:14:45 +01:00
sspiridonov cc489e8379 refactor: simplify --enabled-tools to only control registration
Simplify the logic so that:
- ENABLED_TOOLS only controls which tools are registered/exposed via MCP
- Empty ENABLED_TOOLS = all tools registered (no filtering)
- Runtime permissions (ADD_MESSAGE_TOOL, REACTION_TOOL, ATTACHMENT_TOOL)
  are always enforced in handlers regardless of ENABLED_TOOLS

This keeps the two concerns separate:
1. Registration/visibility (ENABLED_TOOLS)
2. Runtime permissions (individual tool env vars)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 14:50:54 +01:00
sspiridonov 274a156282 feat: add --enabled-tools flag to filter available MCP tools
Add a new CLI flag `--enabled-tools` (alias `-e`) and environment variable
`SLACK_MCP_ENABLED_TOOLS` to allow users to specify which MCP tools should
be loaded. This provides flexibility to limit tool exposure based on
security requirements or use case.

- If not set, all tools are enabled (backward compatible)
- Accepts comma-separated tool names
- CLI flag takes precedence over environment variable

Available tools: conversations_history, conversations_replies,
conversations_add_message, reactions_add, reactions_remove,
attachment_get_data, conversations_search_messages, channels_list

Example usage:
  slack-mcp-server --enabled-tools=conversations_history,channels_list
  SLACK_MCP_ENABLED_TOOLS=channels_list slack-mcp-server

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 23:09:35 +01:00
Juan Antonio Osorio aa79f8f730 docs: update docker examples for ENTRYPOINT 2026-01-21 12:55:34 +02:00
Dmitrii Korotovskii 9e6f5d594a banner 2026-01-07 12:41:00 +01:00
Dmitrii Korotovskii 7bb2831016 banner 2026-01-07 12:40:36 +01:00
Dmitrii Korotovskii 0f7703d657 banner 2026-01-07 12:39:38 +01:00
Sanghoon Hong bb9469d3e6 Add bot token (xoxb) support
- Add support for bot tokens as an alternative authentication method
- Conditionally register search tool only for non-bot tokens (bots cannot use search.messages API)
- Update isOAuth definition to include both xoxp and xoxb tokens for cleaner implementation
- Add bot token configuration to manifest-dxt.json for DXT extension
- Document bot token limitations in README and authentication setup guide

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-19 01:26:48 +09:00
Matt d73559b889 Add slack manifest 2025-10-17 11:46:07 -07:00
Dmitrii Korotovskii 089d02c389 Merge pull request #102 from Graf2242/feature/streamable-http-mcp
Implement Streamable HTTP transport
2025-09-24 15:47:00 +02:00
Dmytro Budnyk 5ff1610cc4 Update 03-configuration-and-usage.md
Updates cursor deep-links
2025-09-24 15:02:20 +03:00
graf2242 4a5b79c1ed Rename SLACK_MCP_SSE_API_KEY to SLACK_MCP_API_KEY
Update documentation
2025-09-24 12:03:09 +03:00
Konovalov Nikolay 3b432b65f3 Update Docker install docs
It is assumed that docker network already exists
but install documentation doesn't reflect that

To make it right, we should run `docker network create app-tier`
If the network already exists, it would simply return an error message
2025-08-14 11:32:27 +02:00
Dhamari Trice-Hanson 374a0c2643 Update 03-configuration-and-usage.md
Corrected spelling  Enable => Enable
2025-08-06 13:52:28 -04:00
Dmitrii Korotovskii 2a74412e22 urlurling docs 2025-07-26 21:39:41 +02:00
Dmitrii Korotovskii 609ea4a3ed Merge pull request #66 from korotovsky/enterprise-grid
Send fake TLS handshake to avoid fingerprinting detection
2025-07-25 18:33:02 +02:00
Dmitrii Korotovskii 991b4272fd Update README 2025-07-24 19:53:24 +02:00
Dmitrii Korotovskii 88a83c7c71 Update 03-configuration-and-usage.md 2025-07-23 06:52:47 +02:00
Dmitrii Korotovskii a47c112e1f mark conversations as read after message posting 2025-07-20 14:27:47 +02:00
Dmitrii Korotovskii be12dcc9f9 Update styles 2025-07-13 13:35:02 +02:00
Dmitrii Korotovskii ab7d7a9b4f Update docs / Cursor installer 2025-07-13 13:31:24 +02:00
Dmitrii Korotovskii e07ae16675 Update 03-configuration-and-usage.md 2025-07-12 17:49:29 +02:00
Dmitrii Korotovskii 97e4831f0e Merge pull request #45 from korotovsky/dxt
[#27] DXT Extension
2025-07-12 17:10:09 +02:00
Dmitrii Korotovskii 0631063f87 Update docs 2025-07-12 13:58:39 +02:00
Dmitrii Korotovskii 5897f93f6e attempt to make configuration process better 2025-07-12 13:48:16 +02:00
Dmitrii Korotovskii 2f574d68cd Fixes 2025-07-11 21:59:23 +02:00
Dmitrii Korotovskii e60d13f850 Update 01-authentication-setup.md 2025-07-10 09:31:07 +02:00
Dmitrii Korotovskii 64ce18c791 Update 01-authentication-setup.md 2025-07-10 09:24:16 +02:00
Dmitrii Korotovskii 63c3b007dc Update 01-authentication-setup.md 2025-07-10 09:20:59 +02:00
Dmitrii Korotovskii ffb05753bc Update missing docs 2025-07-10 07:46:15 +02:00
Dmitrii Korotovskii 525a91deb7 channels_list fix for cursor, chaned channels cache default file name to invalidate cache for everyone 2025-07-10 00:36:03 +02:00
Dmitrii Korotovskii ce6f21c998 Update docs 2025-07-09 10:18:27 +02:00
Dmitrii Korotovskii 23d3f987f4 Update docs 2025-07-09 10:08:53 +02:00
Kalle Sirkesalo 9338585c3b (fix) Fixed environment variables for host and port and default values
The current documentation had a mistake of old variable naming, which no longer exists in source code and has been patched in docker compose files, but not in documentation, so fixed the documentation.
2025-07-09 10:57:39 +03:00
Dmitrii Korotovskii 878d2f0248 Merge branch 'master' of github.com:korotovsky/slack-mcp-server into new-tools 2025-07-09 09:54:33 +02:00
kamal d2f585bbc1 document SLACK_MCP_USERS_CACHE and SLACK_MCP_CHANNELS_CACHE 2025-07-08 22:23:30 -04:00
Dmitrii Korotovskii 0a13464668 Update docs 2025-07-06 14:44:44 +02:00
Dmitrii Korotovskii 31fb8e5596 markdown fix 2025-06-27 12:03:00 +02:00
Dmitrii Korotovskii c693c654ac possibility to redefine user agent 2025-06-27 11:54:38 +02:00
Dmitrii Korotovskii 7b6fb20b78 readme improvements 2025-06-25 21:22:08 +02:00