Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
5637b6f
Improved integration tests on channels list
korotovsky Jan 8, 2026
cd36f5e
fix: wait for cache to be ready before serving stdio requests
bhaskoro-muthohar Jan 20, 2026
95fa6df
feat: Set mcp-server as entrypoint in Dockerfile
JAORMX Jan 20, 2026
f62c4ed
Merge pull request #155 from bhaskoro-muthohar/fix/stdio-wait-for-cache
korotovsky Jan 21, 2026
aa79f8f
docs: update docker examples for ENTRYPOINT
JAORMX Jan 21, 2026
1f89e7f
Merge pull request #156 from JAORMX/feature/docker-entrypoint
korotovsky Jan 21, 2026
ed0ced2
ci: add Trivy scan for Go dependencies
JAORMX Jan 22, 2026
4edf1b0
ci: add Dependabot for Go and GitHub Actions
JAORMX Jan 22, 2026
d4a5f1d
Merge pull request #158 from JAORMX/ci/dependabot
korotovsky Jan 22, 2026
2fcebee
deps(gha): bump the github-actions group with 2 updates
dependabot[bot] Jan 22, 2026
9fbdefa
deps(go): bump the go-dependencies group with 11 updates
dependabot[bot] Jan 22, 2026
ab8bd79
Merge pull request #157 from JAORMX/ci/trivy-scan
korotovsky Jan 22, 2026
1faf85c
Merge pull request #160 from korotovsky/dependabot/go_modules/go-depe…
korotovsky Jan 23, 2026
d25fa86
Merge pull request #159 from korotovsky/dependabot/github_actions/git…
korotovsky Jan 23, 2026
4454d67
feat: govslack compatibility
aron-muon Jan 28, 2026
10463f3
docs: updated with option
aron-muon Jan 28, 2026
893f158
ci: triggering build
aron-muon Jan 28, 2026
5821863
fix: using built package of my fork
aron-muon Jan 28, 2026
cdc1ad4
Update Docker Hub image name and username
aron-muon Jan 28, 2026
8635468
Merge branch 'master' into multi-user-support
aron-muon Jan 28, 2026
4ce4a10
Merge pull request #1 from aron-muon/multi-user-support
aron-muon Jan 28, 2026
c38c460
ci: aron-moun
aron-muon Jan 28, 2026
73aea44
fix: using govslack to verify token
aron-muon Jan 28, 2026
7027f20
fix: use the right url context
aron-muon Jan 28, 2026
63ae937
fix: retrieving user info
aron-muon Jan 28, 2026
0670667
fic: additional issues
aron-muon Jan 28, 2026
bc6be95
fix: member count and channel id lookup
aron-muon Jan 28, 2026
bab9d43
fix: latest oauth errors
aron-muon Jan 28, 2026
9f64b82
Update release-image.yaml
aron-muon Jan 28, 2026
13144b8
fix: additional formatting issue
aron-muon Jan 28, 2026
7e5b7c1
fix: additional formatting issue
aron-muon Jan 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
version: 2

updates:
- package-ecosystem: "gomod"
directory: "/"
schedule:
interval: "weekly"
open-pull-requests-limit: 3
groups:
go-dependencies:
patterns:
- "*"
commit-message:
prefix: "deps(go)"

- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
open-pull-requests-limit: 2
groups:
github-actions:
patterns:
- "*"
commit-message:
prefix: "deps(gha)"
4 changes: 2 additions & 2 deletions .github/workflows/integration-tests.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v6

- name: Set up Go
uses: actions/setup-go@v5
uses: actions/setup-go@v6
with:
go-version-file: "go.mod"

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release-image.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@v6

- name: Set up QEMU
uses: docker/setup-qemu-action@v3
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@ jobs:
runs-on: macos-latest
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v6

- uses: actions/setup-go@v5
- uses: actions/setup-go@v6
with:
go-version: ${{ env.GO_VERSION }}

Expand Down
31 changes: 31 additions & 0 deletions .github/workflows/security-trivy.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
name: Security (Trivy)

on:
push:
branches:
- master
pull_request:
workflow_dispatch:

permissions:
contents: read

jobs:
trivy-fs:
name: Trivy filesystem scan
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6.0.1

- name: Run Trivy (Go dependencies)
uses: aquasecurity/trivy-action@0.33.1
with:
scan-type: fs
scan-ref: .
scanners: vuln
vuln-type: library
severity: CRITICAL,HIGH
format: table
ignore-unfixed: true
exit-code: 1
4 changes: 2 additions & 2 deletions .github/workflows/unit-tests.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v6

- name: Set up Go
uses: actions/setup-go@v5
uses: actions/setup-go@v6
with:
go-version-file: "go.mod"

Expand Down
6 changes: 4 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ WORKDIR /app/mcp-server

EXPOSE 3001

CMD ["mcp-server", "--transport", "sse"]
ENTRYPOINT ["mcp-server"]
CMD ["--transport", "sse"]

FROM alpine:3.22 AS production

Expand All @@ -39,4 +40,5 @@ WORKDIR /app

EXPOSE 3001

CMD ["mcp-server", "--transport", "sse"]
ENTRYPOINT ["mcp-server"]
CMD ["--transport", "sse"]
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,7 @@ See [Authentication Setup](docs/01-authentication-setup.md) for extracting brows
| `SLACK_MCP_USERS_CACHE` | No | `~/Library/Caches/slack-mcp-server/users_cache.json` (macOS)<br>`~/.cache/slack-mcp-server/users_cache.json` (Linux)<br>`%LocalAppData%/slack-mcp-server/users_cache.json` (Windows) | Path to the users cache file. Used to cache Slack user information to avoid repeated API calls on startup. |
| `SLACK_MCP_CHANNELS_CACHE` | No | `~/Library/Caches/slack-mcp-server/channels_cache_v2.json` (macOS)<br>`~/.cache/slack-mcp-server/channels_cache_v2.json` (Linux)<br>`%LocalAppData%/slack-mcp-server/channels_cache_v2.json` (Windows) | Path to the channels cache file. Used to cache Slack channel information to avoid repeated API calls on startup. |
| `SLACK_MCP_LOG_LEVEL` | No | `info` | Log-level for stdout or stderr. Valid values are: `debug`, `info`, `warn`, `error`, `panic` and `fatal` |
| `SLACK_MCP_GOVSLACK` | No | `nil` | Set to `true` to enable [GovSlack](https://slack.com/solutions/govslack) mode. Routes API calls to `slack-gov.com` endpoints instead of `slack.com` for FedRAMP-compliant government workspaces. |

*You need one of: `xoxp` (user), `xoxb` (bot), or both `xoxc`/`xoxd` tokens for legacy mode authentication.
**For OAuth mode, set `SLACK_MCP_OAUTH_ENABLED=true` and provide Client ID, Secret, and Redirect URI instead.
Expand Down
7 changes: 7 additions & 0 deletions cmd/slack-mcp-server/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (
"strconv"
"strings"
"sync"
"time"

"github.com/korotovsky/slack-mcp-server/pkg/handler"
"github.com/korotovsky/slack-mcp-server/pkg/oauth"
Expand Down Expand Up @@ -102,6 +103,12 @@ func main() {

switch transport {
case "stdio":
for {
if ready, _ := p.IsReady(); ready {
break
}
time.Sleep(100 * time.Millisecond)
}
if err := s.ServeStdio(); err != nil {
logger.Fatal("Server error",
zap.String("context", "console"),
Expand Down
4 changes: 1 addition & 3 deletions docs/03-configuration-and-usage.md
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,6 @@ Open your `claude_desktop_config.json` and add the mcp server to the list of `mc
"-e",
"SLACK_MCP_XOXP_TOKEN",
"ghcr.io/korotovsky/slack-mcp-server",
"mcp-server",
"--transport",
"stdio"
],
Expand All @@ -155,7 +154,6 @@ Open your `claude_desktop_config.json` and add the mcp server to the list of `mc
"-e",
"SLACK_MCP_XOXD_TOKEN",
"ghcr.io/korotovsky/slack-mcp-server",
"mcp-server",
"--transport",
"stdio"
],
Expand Down Expand Up @@ -245,7 +243,7 @@ docker pull ghcr.io/korotovsky/slack-mcp-server:latest
docker run -i --rm \
-e SLACK_MCP_XOXC_TOKEN \
-e SLACK_MCP_XOXD_TOKEN \
slack-mcp-server mcp-server --transport stdio
ghcr.io/korotovsky/slack-mcp-server:latest --transport stdio
```

Or, the docker-compose way:
Expand Down
69 changes: 36 additions & 33 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -5,42 +5,46 @@ go 1.24.4
require (
github.com/gocarina/gocsv v0.0.0-20240520201108-78e41c74b4b1
github.com/google/uuid v1.6.0
github.com/mark3labs/mcp-go v0.40.0
github.com/mark3labs/mcp-go v0.43.2
github.com/mattn/go-isatty v0.0.20
github.com/openai/openai-go v1.11.0
github.com/refraction-networking/utls v1.8.0
github.com/openai/openai-go v1.12.0
github.com/refraction-networking/utls v1.8.2
github.com/rusq/slack v0.9.6-0.20250408103104-dd80d1b6337f
github.com/rusq/slackauth v0.6.1
github.com/rusq/slackdump/v3 v3.1.6
github.com/rusq/slackauth v0.7.1
github.com/rusq/slackdump/v3 v3.1.11
github.com/rusq/tagops v0.1.1
github.com/slack-go/slack v0.17.3
github.com/stretchr/testify v1.10.0
github.com/stretchr/testify v1.11.1
github.com/takara2314/slack-go-util v0.3.0
go.uber.org/zap v1.27.0
golang.ngrok.com/ngrok/v2 v2.0.0
golang.org/x/net v0.40.0
golang.org/x/sync v0.14.0
golang.org/x/time v0.12.0
go.uber.org/zap v1.27.1
golang.ngrok.com/ngrok/v2 v2.1.1
golang.org/x/net v0.47.0
golang.org/x/sync v0.18.0
golang.org/x/time v0.14.0
)

require (
github.com/MercuryEngineering/CookieMonster v0.0.0-20180304172713-1584578b3403 // indirect
github.com/andybalholm/brotli v1.0.6 // indirect
github.com/andybalholm/brotli v1.1.1 // indirect
github.com/atotto/clipboard v0.1.4 // indirect
github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
github.com/bahlo/generic-list-go v0.2.0 // indirect
github.com/buger/jsonparser v1.1.1 // indirect
github.com/caiguanhao/readqr v1.0.0 // indirect
github.com/catppuccin/go v0.3.0 // indirect
github.com/charmbracelet/bubbles v0.21.0 // indirect
github.com/charmbracelet/bubbletea v1.3.5 // indirect
github.com/charmbracelet/colorprofile v0.3.1 // indirect
github.com/charmbracelet/huh v0.7.0 // indirect
github.com/charmbracelet/huh/spinner v0.0.0-20250519092748-d6f1597485e0 // indirect
github.com/charmbracelet/bubbles v0.21.1-0.20250623103423-23b8fd6302d7 // indirect
github.com/charmbracelet/bubbletea v1.3.10 // indirect
github.com/charmbracelet/colorprofile v0.3.3 // indirect
github.com/charmbracelet/huh v0.8.0 // indirect
github.com/charmbracelet/huh/spinner v0.0.0-20250714122654-40d2b68703eb // indirect
github.com/charmbracelet/lipgloss v1.1.0 // indirect
github.com/charmbracelet/x/ansi v0.9.2 // indirect
github.com/charmbracelet/x/cellbuf v0.0.13 // indirect
github.com/charmbracelet/x/exp/strings v0.0.0-20250520193441-8304e91a28cb // indirect
github.com/charmbracelet/x/term v0.2.1 // indirect
github.com/charmbracelet/x/ansi v0.11.1 // indirect
github.com/charmbracelet/x/cellbuf v0.0.14 // indirect
github.com/charmbracelet/x/exp/strings v0.0.0-20251118172736-77d017256798 // indirect
github.com/charmbracelet/x/term v0.2.2 // indirect
github.com/clipperhouse/displaywidth v0.6.0 // indirect
github.com/clipperhouse/stringish v0.1.1 // indirect
github.com/clipperhouse/uax29/v2 v2.3.0 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/deckarep/golang-set/v2 v2.8.0 // indirect
github.com/dustin/go-humanize v1.0.1 // indirect
Expand All @@ -51,17 +55,15 @@ require (
github.com/go-stack/stack v1.8.1 // indirect
github.com/google/go-cmp v0.6.0 // indirect
github.com/gorilla/websocket v1.5.3 // indirect
github.com/inconshreveable/log15 v3.0.0-testing.5+incompatible // indirect
github.com/inconshreveable/log15/v3 v3.0.0-testing.5 // indirect
github.com/invopop/jsonschema v0.13.0 // indirect
github.com/joho/godotenv v1.5.1 // indirect
github.com/jpillora/backoff v1.0.0 // indirect
github.com/klauspost/compress v1.17.4 // indirect
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
github.com/klauspost/compress v1.18.0 // indirect
github.com/lucasb-eyer/go-colorful v1.3.0 // indirect
github.com/mailru/easyjson v0.7.7 // indirect
github.com/mattn/go-colorable v0.1.14 // indirect
github.com/mattn/go-localereader v0.0.1 // indirect
github.com/mattn/go-runewidth v0.0.16 // indirect
github.com/mattn/go-runewidth v0.0.19 // indirect
github.com/mitchellh/hashstructure/v2 v2.0.2 // indirect
github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect
github.com/muesli/cancelreader v0.2.2 // indirect
Expand All @@ -82,16 +84,17 @@ require (
github.com/yosida95/uritemplate/v3 v3.0.2 // indirect
github.com/ysmood/fetchup v0.3.0 // indirect
github.com/ysmood/goob v0.4.0 // indirect
github.com/ysmood/got v0.40.0 // indirect
github.com/ysmood/got v0.41.0 // indirect
github.com/ysmood/gson v0.7.3 // indirect
github.com/ysmood/leakless v0.9.0 // indirect
github.com/yuin/goldmark v1.7.12 // indirect
github.com/yuin/goldmark v1.7.13 // indirect
go.uber.org/multierr v1.11.0 // indirect
golang.ngrok.com/muxado/v2 v2.0.1 // indirect
golang.org/x/crypto v0.38.0 // indirect
golang.org/x/sys v0.33.0 // indirect
golang.org/x/term v0.32.0 // indirect
golang.org/x/text v0.25.0 // indirect
google.golang.org/protobuf v1.35.1 // indirect
golang.org/x/crypto v0.45.0 // indirect
golang.org/x/sys v0.38.0 // indirect
golang.org/x/term v0.37.0 // indirect
golang.org/x/text v0.31.0 // indirect
golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f // indirect
google.golang.org/protobuf v1.36.6 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
Loading