slack-max-api-mcp 1.0.9 → 1.0.10
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 +12 -2
- package/README.md +73 -3
- package/config/operations.json +75 -0
- package/package.json +3 -2
- package/src/slack-mcp-server.js +2657 -143
package/.env.example
CHANGED
|
@@ -41,9 +41,19 @@ SLACK_CLIENT_SECRET=
|
|
|
41
41
|
# SLACK_API_BASE_URL=https://slack.com/api
|
|
42
42
|
|
|
43
43
|
# Tool exposure settings
|
|
44
|
-
# SLACK_TOOL_EXPOSURE_MODE=
|
|
45
|
-
# SLACK_SMART_COMPAT_CORE_TOOLS=true
|
|
44
|
+
# SLACK_TOOL_EXPOSURE_MODE=operations
|
|
45
|
+
# SLACK_SMART_COMPAT_CORE_TOOLS=true # developer mode only; keep raw core tools visible
|
|
46
46
|
# SLACK_ENABLE_METHOD_TOOLS=false
|
|
47
47
|
# SLACK_METHOD_TOOL_PREFIX=slack_method
|
|
48
48
|
# SLACK_MAX_METHOD_TOOLS=50
|
|
49
49
|
# SLACK_CATALOG_PATH=C:\code_test\test22\data\slack-catalog.json
|
|
50
|
+
|
|
51
|
+
# Governance / operations settings
|
|
52
|
+
# SLACK_OPERATIONS_CONFIG_PATH=C:\code_test\test22\config\operations.json
|
|
53
|
+
# SLACK_OPERATIONS_STATE_PATH=C:\Users\<you>\.slack-max-api-mcp\operations-state.json
|
|
54
|
+
# SLACK_ENABLE_AUDIT_LOG=true
|
|
55
|
+
# SLACK_AUDIT_LOG_PATH=C:\Users\<you>\.slack-max-api-mcp\audit.log
|
|
56
|
+
# SLACK_METHOD_ALLOWLIST=chat.postMessage,conversations.history
|
|
57
|
+
# SLACK_METHOD_DENYLIST=users.deletePhoto
|
|
58
|
+
# SLACK_METHOD_ALLOW_PREFIXES=chat.,conversations.
|
|
59
|
+
# SLACK_METHOD_DENY_PREFIXES=admin.
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Slack Max API MCP
|
|
2
2
|
|
|
3
|
-
Slack
|
|
3
|
+
Operations-first Slack MCP server for Codex/Claude Code over `stdio`.
|
|
4
4
|
|
|
5
5
|
- Package: `slack-max-api-mcp`
|
|
6
6
|
- Runtime: pure CLI MCP over stdio
|
|
@@ -9,16 +9,86 @@ Slack Web API MCP server for Codex/Claude Code over `stdio`.
|
|
|
9
9
|
|
|
10
10
|
## Tool exposure
|
|
11
11
|
|
|
12
|
-
- `
|
|
12
|
+
- `operations` (default): 14 operations-first tools only
|
|
13
|
+
- `developer`: operations tools + `gateway_*` + core Slack API tools
|
|
13
14
|
- `legacy`: fixed core tools + optional catalog method tools
|
|
14
15
|
|
|
15
16
|
Environment:
|
|
16
17
|
|
|
17
|
-
- `SLACK_TOOL_EXPOSURE_MODE=
|
|
18
|
+
- `SLACK_TOOL_EXPOSURE_MODE=operations|developer|legacy`
|
|
18
19
|
- `SLACK_SMART_COMPAT_CORE_TOOLS=true|false`
|
|
19
20
|
- `SLACK_ENABLE_METHOD_TOOLS=true|false`
|
|
20
21
|
- `SLACK_MAX_METHOD_TOOLS=<number>`
|
|
21
22
|
|
|
23
|
+
`smart` is still accepted as an alias for `developer`.
|
|
24
|
+
|
|
25
|
+
## Operations-first tools
|
|
26
|
+
|
|
27
|
+
The default surface is now operations-first and keeps raw API wrappers out of the main tool list:
|
|
28
|
+
|
|
29
|
+
- `ops_policy_info`: runtime policy/audit guardrails
|
|
30
|
+
- `ops_playbook_list`: built-in operations playbooks
|
|
31
|
+
- `ops_state_overview`: inspect local operations state (`incidents`, `digests`, `broadcasts`, `followups`)
|
|
32
|
+
- `ops_incident_create`: create + optionally announce a tracked incident
|
|
33
|
+
- `ops_incident_update`: persist a status change and optionally post a thread update
|
|
34
|
+
- `ops_incident_close`: close a tracked incident with stored resolution
|
|
35
|
+
- `ops_broadcast_prepare`: prepare and store a broadcast draft before sending
|
|
36
|
+
- `ops_playbook_run`: run standardized workflows (`incident_open`, `support_digest`, `release_broadcast`)
|
|
37
|
+
- `ops_channel_snapshot`: activity/participant/thread snapshot for a channel
|
|
38
|
+
- `ops_unanswered_threads`: find stale or unanswered question-like threads
|
|
39
|
+
- `ops_sla_breach_scan`: detect SLA breach threads across multiple channels
|
|
40
|
+
- `ops_sla_followup`: auto follow-up replies for SLA breaches with duplicate-suppression state
|
|
41
|
+
- `ops_broadcast_message`: send a prepared draft or direct operational announcement
|
|
42
|
+
- `ops_audit_log_read`: inspect local JSONL audit logs
|
|
43
|
+
|
|
44
|
+
These tools let teams run repeatable Slack operations without rebuilding multi-step API call chains, and they persist local operational state to make incidents/broadcasts/followups first-class records.
|
|
45
|
+
|
|
46
|
+
## Config and state
|
|
47
|
+
|
|
48
|
+
- Operations config file: `config/operations.json`
|
|
49
|
+
- Override path: `SLACK_OPERATIONS_CONFIG_PATH=<path>`
|
|
50
|
+
- Local state path: `~/.slack-max-api-mcp/operations-state.json`
|
|
51
|
+
- Override path: `SLACK_OPERATIONS_STATE_PATH=<path>`
|
|
52
|
+
|
|
53
|
+
The operations config controls incident templates, digest defaults, broadcast templates, and follow-up suppression windows.
|
|
54
|
+
|
|
55
|
+
### Playbook examples
|
|
56
|
+
|
|
57
|
+
```text
|
|
58
|
+
Codex, run ops_playbook_run with playbook=incident_open on #incident-war-room.
|
|
59
|
+
title is "DB Latency Spike", severity is "sev2", owner is "@oncall-db", dry_run=true.
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
```text
|
|
63
|
+
Codex, run ops_playbook_run with playbook=support_digest for channels #support-kor and #support-global.
|
|
64
|
+
lookback_hours=24, sla_minutes=60, report_channel=#support-ops, dry_run=true.
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
```text
|
|
68
|
+
Codex, run ops_sla_followup for channels #support-kor and #support-global.
|
|
69
|
+
sla_minutes=90, lookback_hours=24, max_messages=20, dry_run=true.
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
```text
|
|
73
|
+
Codex, run ops_incident_create on #incident-war-room.
|
|
74
|
+
title is "API Error Spike", summary is "5xx rate above threshold", owner is "@oncall-api", dry_run=true.
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
```text
|
|
78
|
+
Codex, run ops_state_overview with collection=incidents and limit=10.
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Governance settings
|
|
82
|
+
|
|
83
|
+
- `SLACK_ENABLE_AUDIT_LOG=true|false` (default: `true`)
|
|
84
|
+
- `SLACK_AUDIT_LOG_PATH=<path>` (default: `~/.slack-max-api-mcp/audit.log`)
|
|
85
|
+
- `SLACK_METHOD_ALLOWLIST=chat.postMessage,conversations.history`
|
|
86
|
+
- `SLACK_METHOD_DENYLIST=users.deletePhoto`
|
|
87
|
+
- `SLACK_METHOD_ALLOW_PREFIXES=chat.,conversations.`
|
|
88
|
+
- `SLACK_METHOD_DENY_PREFIXES=admin.`
|
|
89
|
+
|
|
90
|
+
If allowlist/allow-prefix is set, methods outside that policy are blocked.
|
|
91
|
+
|
|
22
92
|
## Install
|
|
23
93
|
|
|
24
94
|
```powershell
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
{
|
|
2
|
+
"playbooks": {
|
|
3
|
+
"incident_open": {
|
|
4
|
+
"summary": "Post an incident opening message with a standard operations template.",
|
|
5
|
+
"required_inputs": ["channel", "title"],
|
|
6
|
+
"supports_dry_run": true
|
|
7
|
+
},
|
|
8
|
+
"support_digest": {
|
|
9
|
+
"summary": "Build and optionally publish a support digest from channel activity.",
|
|
10
|
+
"required_inputs": ["channels"],
|
|
11
|
+
"supports_dry_run": true
|
|
12
|
+
},
|
|
13
|
+
"release_broadcast": {
|
|
14
|
+
"summary": "Broadcast a release announcement to multiple channels.",
|
|
15
|
+
"required_inputs": ["channels", "title", "summary"],
|
|
16
|
+
"supports_dry_run": true
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"incidents": {
|
|
20
|
+
"default_channel": "",
|
|
21
|
+
"default_owner": "TBD",
|
|
22
|
+
"default_severity": "sev2",
|
|
23
|
+
"update_interval_minutes": 15,
|
|
24
|
+
"open_template": [
|
|
25
|
+
":rotating_light: Incident Open - {{title}}",
|
|
26
|
+
"Severity: {{severity_upper}}",
|
|
27
|
+
"Owner: {{owner}}",
|
|
28
|
+
"Summary: {{summary}}",
|
|
29
|
+
"{{details_line}}",
|
|
30
|
+
"Next update: {{next_update_text}}"
|
|
31
|
+
],
|
|
32
|
+
"update_template": [
|
|
33
|
+
":information_source: Incident Update - {{title}}",
|
|
34
|
+
"Status: {{status_upper}}",
|
|
35
|
+
"Severity: {{severity_upper}}",
|
|
36
|
+
"Owner: {{owner}}",
|
|
37
|
+
"Summary: {{summary}}",
|
|
38
|
+
"{{details_line}}",
|
|
39
|
+
"Next update: {{next_update_text}}"
|
|
40
|
+
],
|
|
41
|
+
"close_template": [
|
|
42
|
+
":white_check_mark: Incident Resolved - {{title}}",
|
|
43
|
+
"Severity: {{severity_upper}}",
|
|
44
|
+
"Owner: {{owner}}",
|
|
45
|
+
"Resolution: {{resolution}}",
|
|
46
|
+
"{{details_line}}"
|
|
47
|
+
]
|
|
48
|
+
},
|
|
49
|
+
"support_digest": {
|
|
50
|
+
"default_lookback_hours": 24,
|
|
51
|
+
"default_sla_minutes": 60,
|
|
52
|
+
"default_max_threads": 10,
|
|
53
|
+
"header_template": "Support Digest ({{lookback_hours}}h)",
|
|
54
|
+
"sla_template": "SLA threshold: {{sla_minutes}}m"
|
|
55
|
+
},
|
|
56
|
+
"broadcasts": {
|
|
57
|
+
"default_template": "release_default",
|
|
58
|
+
"default_mrkdwn": true,
|
|
59
|
+
"templates": {
|
|
60
|
+
"release_default": [
|
|
61
|
+
":rocket: Release - {{title}}",
|
|
62
|
+
"{{summary}}",
|
|
63
|
+
"{{details}}"
|
|
64
|
+
]
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
"followups": {
|
|
68
|
+
"default_sla_minutes": 60,
|
|
69
|
+
"default_lookback_hours": 24,
|
|
70
|
+
"default_max_threads_per_channel": 20,
|
|
71
|
+
"default_max_messages": 30,
|
|
72
|
+
"suppress_hours": 6,
|
|
73
|
+
"reminder_template": "Friendly reminder: this thread appears to be pending for more than {{sla_minutes}} minutes. Please provide an update."
|
|
74
|
+
}
|
|
75
|
+
}
|
package/package.json
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "slack-max-api-mcp",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "Slack MCP server (stdio) for Codex and Claude Code",
|
|
3
|
+
"version": "1.0.10",
|
|
4
|
+
"description": "Operations-first Slack MCP server (stdio) for Codex and Claude Code",
|
|
5
5
|
"main": "src/slack-mcp-server.js",
|
|
6
6
|
"bin": {
|
|
7
7
|
"slack-max-api-mcp": "src/slack-mcp-server.js"
|
|
8
8
|
},
|
|
9
9
|
"files": [
|
|
10
10
|
"src",
|
|
11
|
+
"config",
|
|
11
12
|
"data/slack-catalog.json",
|
|
12
13
|
"README.md",
|
|
13
14
|
".env.example"
|