slack-max-api-mcp 1.0.4 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.env.example CHANGED
@@ -1,9 +1,55 @@
1
- SLACK_BOT_TOKEN=xoxb-10600620838022-10607717448308-z3vxg14RBnOeatFJL8ewuylg
2
- SLACK_USER_TOKEN=xoxp-10600620838022-10602682248866-10602148210166-1d2b8629c0ea29204d33055cd3dadce8
3
- # Optional alternatives
1
+ # Preferred setup: OAuth login (per-user token issuance, no verbal token sharing)
2
+ SLACK_CLIENT_ID=
3
+ SLACK_CLIENT_SECRET=
4
+
5
+ # Optional OAuth defaults for `slack-max-api-mcp oauth login`
6
+ # SLACK_OAUTH_TEAM_ID=T1234567890
7
+ # SLACK_OAUTH_BOT_SCOPES=chat:write,channels:read,groups:read,users:read
8
+ # SLACK_OAUTH_USER_SCOPES=search:read,channels:read,groups:read,channels:history,groups:history
9
+ # SLACK_OAUTH_CALLBACK_HOST=127.0.0.1
10
+ # SLACK_OAUTH_CALLBACK_PORT=8787
11
+ # SLACK_OAUTH_CALLBACK_PATH=/slack/oauth/callback
12
+ # SLACK_OAUTH_TIMEOUT_MS=300000
13
+
14
+ # Runtime profile selection from token store (~/.slack-max-api-mcp/tokens.json)
15
+ # SLACK_PROFILE=
16
+ # SLACK_DEFAULT_TOKEN_TYPE=bot
17
+ # SLACK_TOKEN_STORE_PATH=
18
+ # SLACK_CLIENT_CONFIG_PATH=
19
+
20
+ # Central gateway mode (recommended for team/shared workspace operations)
21
+ # Server-side (only on the gateway host):
22
+ # SLACK_GATEWAY_HOST=127.0.0.1
23
+ # SLACK_GATEWAY_PORT=8790
24
+ # SLACK_GATEWAY_PUBLIC_BASE_URL=https://mcp-gateway.example.com
25
+ # SLACK_GATEWAY_SHARED_SECRET=change-this-to-long-random-secret
26
+ # SLACK_GATEWAY_CLIENT_API_KEY=change-this-to-random-client-key
27
+ # SLACK_GATEWAY_ALLOW_PUBLIC=false
28
+ # SLACK_INVITE_TOKEN_DEFAULT_DAYS=7
29
+ #
30
+ # Client-side (each local Codex/Claude machine):
31
+ # SLACK_GATEWAY_URL=https://mcp-gateway.example.com
32
+ # SLACK_GATEWAY_API_KEY=change-this-to-random-client-key
33
+ # SLACK_GATEWAY_PROFILE=
34
+
35
+ # Optional auto-onboarding trigger for interactive `slack-max-api-mcp` runs
36
+ # SLACK_AUTO_ONBOARD=true
37
+ # SLACK_AUTO_ONBOARD_URL=https://mcp-gateway.example.com/onboard.ps1?token=...
38
+ # or
39
+ # SLACK_AUTO_ONBOARD_GATEWAY=https://mcp-gateway.example.com
40
+ # SLACK_AUTO_ONBOARD_TOKEN=invite-token-issued-by-gateway
41
+
42
+ # Legacy/manual token mode (optional)
43
+ # SLACK_BOT_TOKEN=xoxb-your-bot-token
44
+ # SLACK_USER_TOKEN=xoxp-your-user-token
4
45
  # SLACK_TOKEN=xoxb-or-xoxp-token
46
+
47
+ # Disabled by default for security. Turn on only when migrating old setups.
48
+ # SLACK_ALLOW_ENV_EXAMPLE_FALLBACK=true
49
+
50
+ # Optional base URL override
5
51
  # SLACK_API_BASE_URL=https://slack.com/api
6
- #
52
+
7
53
  # Catalog-driven method tool settings
8
54
  # SLACK_CATALOG_PATH=C:\code_test\test22\data\slack-catalog.json
9
55
  # SLACK_ENABLE_METHOD_TOOLS=true
package/README.md CHANGED
@@ -1,108 +1,238 @@
1
- # Slack Max API MCP Server
2
-
3
- Slack Web API를 최대한 활용하도록 만든 `stdio` MCP 서버입니다.
4
- `Codex CLI`와 `Claude Code`에 바로 연결할 수 있습니다.
5
-
6
- ## 포함 범위
7
-
8
- 1. 고정 도구 12개
9
- - `search_messages_files`
10
- - `search_users`
11
- - `search_channels`
12
- - `send_message`
13
- - `read_channel`
14
- - `read_thread`
15
- - `create_canvas`
16
- - `update_canvas`
17
- - `read_canvas`
18
- - `read_user_profile`
19
- - `slack_api_call` (임의 Web API 메서드 호출)
20
- - `slack_http_api_call` (SCIM/Audit/Legal Holds 포함 범용 HTTP 호출)
21
-
22
- 2. 카탈로그 기반 메서드 도구 자동 등록
23
- - `data/slack-catalog.json`의 Web API 메서드(현재 304개)를 자동 MCP 도구로 등록
24
- - 도구명 형식: `slack_method_<method_name>`
25
- - 예: `chat.postMessage` -> `slack_method_chat_postMessage`
26
-
27
- 3. 문서 자동 생성
28
- - [SLACK_API_FUNCTIONS_KR.md](C:\code_test\test22\SLACK_API_FUNCTIONS_KR.md)
29
- - 메서드별 기능 설명(공식 설명 + 한국어 재표현)
30
- - scope 목록, family 요약 포함
31
-
32
- ## 준비
33
-
34
- 1. Node.js 20+
35
- 2. Slack 토큰
36
- - 기본: `xoxb` bot token
37
- - 필요시 `xoxp` user token 병행
38
- - Admin/SCIM/Audit API는 별도 권한/토큰 필요
39
- - 토큰은 기본적으로 프로젝트 루트의 `.env.example`에서 자동 로드됨
40
-
41
- ## 설치/생성/실행
1
+ # Slack Max API MCP
2
+
3
+ Slack Web API를 Codex/Claude Code에서 바로 사용할 수 있게 만든 `stdio` MCP 서버입니다.
4
+
5
+ - 패키지: `slack-max-api-mcp`
6
+ - 실행 방식: MCP 클라이언트(Codex/Claude)에서 도구 호출
7
+ - 목적: Slack 조회/검색/전송/캔버스/API 직접 호출 자동화
8
+
9
+ ## 이 MCP가 무엇을 하는가
10
+
11
+ 1. Slack API를 MCP 도구로 감싸서 AI가 호출할 수 있게 합니다.
12
+ 2. 고정 도구 13개 + 카탈로그 기반 동적 메서드 도구(현재 304개)를 제공합니다.
13
+ 3. 토큰/권한 범위 안에서 Slack 작업을 대화로 실행할 수 있습니다.
14
+
15
+ ## Slack API로 만들 수 있는 것 vs 이 MCP에서 구현한 것
16
+
17
+ | 구분 | Slack API로 가능한 범위 | 이 MCP에서 구현한 방식 |
18
+ |---|---|---|
19
+ | 표준 Web API | 대부분 메서드 호출 가능 | `slack_api_call` + `slack_method_*` 자동 도구 |
20
+ | 비표준/특수 API (SCIM/Audit/Legal Holds 등) | 엔드포인트별 가능(권한 필요) | `slack_http_api_call` |
21
+ | 메시지/파일 검색 | `search.*` 계열 | `search_messages_files` |
22
+ | 유저/채널 탐색 | `users.*`, `conversations.*` | `search_users`, `search_channels`, `read_user_profile` |
23
+ | 메시지 전송/읽기 | `chat.postMessage`, `conversations.*` | `send_message`, `read_channel`, `read_thread` |
24
+ | 캔버스 | `canvases.*` | `create_canvas`, `update_canvas`, `read_canvas` |
25
+
26
+ 참고:
27
+ - 고정 도구: 13개
28
+ - 카탈로그 메서드 수: 304개
29
+ - 카탈로그 스코프 수: 121개 (`data/slack-catalog.json` 기준)
30
+
31
+ ## 제공 도구 목록
32
+
33
+ ### 고정 도구 (13)
34
+
35
+ 1. `slack_api_call`
36
+ 2. `slack_http_api_call`
37
+ 3. `search_messages_files`
38
+ 4. `search_users`
39
+ 5. `search_channels`
40
+ 6. `send_message`
41
+ 7. `read_channel`
42
+ 8. `read_thread`
43
+ 9. `create_canvas`
44
+ 10. `update_canvas`
45
+ 11. `read_canvas`
46
+ 12. `read_user_profile`
47
+ 13. `slack_method_tools_info`
48
+
49
+ ### 동적 도구
50
+
51
+ 1. `slack_method_<family_method>` 형식으로 자동 생성
52
+ 2. 예: `slack_method_chat_postMessage`
53
+ 3. 수량은 카탈로그/설정값에 따라 달라짐 (`SLACK_ENABLE_METHOD_TOOLS`, `SLACK_MAX_METHOD_TOOLS`)
54
+
55
+ ## 현재 이 MCP가 할 수 있는 일
56
+
57
+ 실시간 점검 결과 문서:
58
+ - [MCP_CURRENT_CAPABILITIES_NOW.md](./MCP_CURRENT_CAPABILITIES_NOW.md)
59
+
60
+ 요약:
61
+ 1. 기본(BOT)으로 유저/채널 조회, 프로필 조회, 캔버스 생성, 일반 API 호출 가능
62
+ 2. USER 토큰 사용 시 메시지/파일 검색, 채널 읽기, 메시지 전송 가능
63
+ 3. BOT으로 검색은 토큰 타입 제한(`not_allowed_token_type`)이 있어 USER 토큰 사용 권장
64
+
65
+ ## 설치 및 실행
66
+
67
+ ```powershell
68
+ npm install -g slack-max-api-mcp@latest
69
+ slack-max-api-mcp
70
+ ```
71
+
72
+ 또는:
73
+
74
+ ```powershell
75
+ npx -y slack-max-api-mcp
76
+ ```
77
+
78
+ ## Codex / Claude Code 연결
79
+
80
+ ### Codex
81
+
82
+ ```powershell
83
+ codex mcp add slack-max -- npx -y slack-max-api-mcp
84
+ codex mcp list
85
+ ```
86
+
87
+ ### Claude Code
88
+
89
+ ```powershell
90
+ claude mcp add slack-max -- npx -y slack-max-api-mcp
91
+ claude mcp list
92
+ ```
93
+
94
+ ## 인증 설정
95
+
96
+ ## 1) 팀 운영 권장: 중앙 Gateway 모드
97
+
98
+ 핵심:
99
+ 1. `SLACK_CLIENT_SECRET`은 중앙 서버에만 둡니다.
100
+ 2. 각 사용자 로컬에는 Slack 토큰을 두지 않습니다.
101
+ 3. OAuth 승인으로 중앙 저장소(`~/.slack-max-api-mcp/tokens.json`)에 사용자별 토큰이 저장됩니다.
102
+
103
+ ### 중앙 서버(1대) 설정
42
104
 
43
105
  ```powershell
44
- npm install
45
- npm run build:catalog
46
- npm run start
106
+ setx SLACK_CLIENT_ID "YOUR_CLIENT_ID"
107
+ setx SLACK_CLIENT_SECRET "YOUR_CLIENT_SECRET"
108
+ setx SLACK_GATEWAY_HOST "0.0.0.0"
109
+ setx SLACK_GATEWAY_PORT "8790"
110
+ setx SLACK_GATEWAY_PUBLIC_BASE_URL "https://your-gateway.example.com"
111
+ setx SLACK_GATEWAY_SHARED_SECRET "long-random-shared-secret"
112
+ setx SLACK_GATEWAY_CLIENT_API_KEY "long-random-client-api-key"
113
+ npx -y slack-max-api-mcp gateway start
47
114
  ```
48
115
 
49
- ## npm 한큐 설치/실행
116
+ 운영자가 팀원용 원클릭 초대 커맨드 생성:
50
117
 
51
118
  ```powershell
52
- npx -y slack-max-api-mcp
119
+ npx -y slack-max-api-mcp gateway invite --profile woobin --team T0AHNJ8QN0N
53
120
  ```
54
121
 
55
- 또는 전역 설치:
122
+ 명령이 팀원에게 전달할 "원클릭 설치 커맨드"를 출력합니다.
123
+
124
+ ### 팀원 경험 (입력값 없이 원클릭)
56
125
 
57
126
  ```powershell
58
- npm i -g slack-max-api-mcp
59
- slack-max-api-mcp
127
+ powershell -ExecutionPolicy Bypass -Command "irm 'https://your-gateway.example.com/onboard.ps1?token=...' | iex"
60
128
  ```
61
129
 
62
- ## Codex CLI 연결
130
+ 스크립트가 자동으로 수행:
131
+ 1. `slack-max-api-mcp` 설치
132
+ 2. 로컬 클라이언트 설정 파일(`~/.slack-max-api-mcp/client.json`) 작성
133
+ 3. 브라우저 OAuth 승인 페이지 자동 오픈
134
+
135
+ 승인 후 Codex 연결(최초 1회):
63
136
 
64
137
  ```powershell
65
138
  codex mcp add slack-max -- npx -y slack-max-api-mcp
66
139
  ```
67
140
 
68
- 확인:
141
+ ### 팀원 경험 (설치 후 `slack-max-api-mcp`만 실행)
142
+
143
+ 운영자가 아래 값을 사전에 배포(이미지/스크립트/MDM)하면 팀원은 다음만 수행하면 됩니다.
69
144
 
70
145
  ```powershell
71
- codex mcp list
72
- codex mcp get slack-max
146
+ npm install -g slack-max-api-mcp@latest
147
+ slack-max-api-mcp
73
148
  ```
74
149
 
75
- ## Claude Code 연결
150
+ 자동 동작:
151
+ 1. 대화형 터미널에서 인증 설정이 비어 있으면 자동 온보딩 트리거
152
+ 2. 브라우저 자동 오픈
153
+ 3. Slack Allow 승인
154
+ 4. 완료 후 Codex에서 바로 사용
76
155
 
77
- ```powershell
78
- claude mcp add slack-max -- npx -y slack-max-api-mcp
79
- ```
156
+ 필요한 사전 배포값(팀원이 직접 입력하지 않아도 됨):
157
+ 1. `SLACK_AUTO_ONBOARD_URL` 또는
158
+ 2. `SLACK_AUTO_ONBOARD_GATEWAY` + `SLACK_AUTO_ONBOARD_TOKEN`
80
159
 
81
- 확인:
160
+ ## 2) 단독/개인 운영: 로컬 OAuth 모드
82
161
 
83
162
  ```powershell
84
- claude mcp list
85
- claude mcp get slack-max
163
+ setx SLACK_CLIENT_ID "YOUR_CLIENT_ID"
164
+ setx SLACK_CLIENT_SECRET "YOUR_CLIENT_SECRET"
165
+ npx -y slack-max-api-mcp oauth login --profile my-workspace --team T1234567890
86
166
  ```
87
167
 
88
- ## 메서드 도구 제어용 환경변수
89
-
90
- - `SLACK_CATALOG_PATH`
91
- 카탈로그 JSON 경로 (기본: `data/slack-catalog.json`)
92
- - `SLACK_ENABLE_METHOD_TOOLS`
93
- `false`면 자동 메서드 도구 등록 비활성화
94
- - `SLACK_METHOD_TOOL_PREFIX`
95
- 자동 도구명 prefix (기본: `slack_method`)
96
- - `SLACK_MAX_METHOD_TOOLS`
97
- 0이면 전체 등록, 양수면 앞에서 N개만 등록
168
+ 토큰은 기본적으로 `~/.slack-max-api-mcp/tokens.json`에 저장됩니다.
98
169
 
99
- ## 권장 scope (현재 고정 도구 10개 기준 최대 사용)
170
+ ## 3) 수동 토큰 모드 (대안)
100
171
 
101
- - `chat.write`
102
- - `channels.read`, `groups.read`, `im.read`, `mpim.read`
103
- - `channels.history`, `groups.history`, `im.history`, `mpim.history`
104
- - `users.read`, `users.profile.read`, `users.read.email`
105
- - `canvases.read`, `canvases.write`
106
- - `search.read`
172
+ ```powershell
173
+ setx SLACK_BOT_TOKEN "xoxb-..."
174
+ setx SLACK_USER_TOKEN "xoxp-..."
175
+ ```
107
176
 
108
- 참고: 전체 Slack API 100%는 단일 토큰으로 불가하며, Admin/SCIM/Audit/Legal Holds는 조직/권한 제약이 있습니다.
177
+ ### 토큰 선택 우선순위
178
+
179
+ 1. 도구 입력의 `token_override`
180
+ 2. Gateway 모드가 켜진 경우: 로컬 `client.json` 또는 env의 Gateway 설정으로 중앙 호출
181
+ 3. Gateway 미사용 시: 로컬 환경변수 (`SLACK_BOT_TOKEN` / `SLACK_USER_TOKEN` / `SLACK_TOKEN`)
182
+ 4. OAuth 토큰 저장소의 활성 프로필 (`SLACK_PROFILE` 또는 기본 프로필)
183
+ 5. `.env.example` fallback (`SLACK_ALLOW_ENV_EXAMPLE_FALLBACK=true`일 때만)
184
+
185
+ 참고:
186
+ 1. 기본 토큰 타입 우선순위는 `SLACK_DEFAULT_TOKEN_TYPE`으로 조정할 수 있음 (`bot` 기본값, `user`, `generic`, `auto` 지원)
187
+ 2. `not_allowed_token_type`, `missing_scope` 오류 시 서버가 자동으로 다른 후보 토큰을 재시도함
188
+
189
+ ## 실제 요청 예시 (Codex/Claude에 자연어로)
190
+
191
+ 1. `채널 목록 조회해서 이름과 ID를 표로 정리해줘.`
192
+ 2. `USER 토큰으로 C0AHJ8GF09H 채널 최근 30개 메시지 읽어 요약해줘.`
193
+ 3. `USER 토큰으로 C0AHJ8GF09H 채널에 "테스트 메시지" 전송해줘.`
194
+ 4. `회의록 캔버스 하나 만들고 제목을 "MCP 점검"으로 생성해줘.`
195
+
196
+ 정확도 팁:
197
+ 1. 검색/읽기/전송은 USER 토큰 사용을 명시
198
+ 2. 실패 시 `error/needed/provided`를 같이 출력하도록 요청
199
+
200
+ ## 제약 사항과 운영 주의
201
+
202
+ 1. 중앙 Gateway 모드에서는 `SLACK_GATEWAY_SHARED_SECRET` 유출 시 즉시 교체해야 함
203
+ 2. OAuth든 수동 토큰이든, 토큰 관리 책임은 운영자에게 있음 (노출 시 즉시 회수/재발급)
204
+ 3. scope 변경 후에는 Slack 앱 재설치(재승인)가 필요할 수 있음
205
+ 4. 채널 읽기/전송은 봇/사용자 멤버십이 없으면 실패 가능 (`not_in_channel`)
206
+ 5. 일부 API는 Enterprise 또는 Admin 권한 전용
207
+ 6. Slack rate limit에 걸릴 수 있음
208
+ 7. OAuth 저장소(`~/.slack-max-api-mcp/tokens.json`)를 공유 드라이브에 두면 보안 위험이 커짐
209
+
210
+ ## 보안 주의
211
+
212
+ 1. 실제 토큰을 README/코드/패키지/커밋에 넣지 마세요.
213
+ 2. 토큰 노출 시 즉시 폐기 후 재발급하세요.
214
+ 3. 필요하면 시크릿 매니저(1Password/Vault/AWS Secrets Manager) 사용을 권장합니다.
215
+
216
+ ## 트러블슈팅 빠른 체크
217
+
218
+ 1. 토큰 유효성: `auth.test`
219
+ 2. 권한 부족: 응답의 `needed`/`provided` 확인
220
+ 3. 메시지 전송 실패: 채널 멤버십(`not_in_channel`) 여부 확인
221
+ 4. 검색 실패: BOT 토큰 사용 여부 확인 (`not_allowed_token_type`)
222
+
223
+ ## 개발 정보
224
+
225
+ ```powershell
226
+ npm install
227
+ npm run check
228
+ npm run build:catalog
229
+ npm run start
230
+ node src/slack-mcp-server.js oauth help
231
+ node src/slack-mcp-server.js gateway help
232
+ node src/slack-mcp-server.js onboard help
233
+ ```
234
+
235
+ 관련 파일:
236
+ - 서버: `src/slack-mcp-server.js`
237
+ - 카탈로그: `data/slack-catalog.json`
238
+ - 현재 기능 점검 결과: `MCP_CURRENT_CAPABILITIES_NOW.md`