Skip to content

feat(docs-tools): add optional Slack MCP integration#109

Draft
gtrivedi88 wants to merge 2 commits intoredhat-documentation:mainfrom
gtrivedi88:slack-mcp-integration
Draft

feat(docs-tools): add optional Slack MCP integration#109
gtrivedi88 wants to merge 2 commits intoredhat-documentation:mainfrom
gtrivedi88:slack-mcp-integration

Conversation

@gtrivedi88
Copy link
Copy Markdown
Collaborator

@gtrivedi88 gtrivedi88 commented Apr 24, 2026

Summary

  • Add optional Slack MCP integration to the requirements-analyst and docs-planner agents
  • Agents detect Slack MCP tool availability at runtime (mcp__slack__*) and search Slack for SME decisions, design rationale, and technical context not captured in JIRA
  • Add setup instructions and benefits to the docs-tools README as an optional prerequisite
  • The workflow operates normally without Slack MCP configured — no breaking changes

Changes

  • requirements-analyst.md: New section 1.5 (Slack research) with search strategy, guidance on what to look for, and source recording format
  • docs-planner.md: Added Slack context search as a bullet in step 2 (Read requirements input) for resolving ambiguous requirements
  • README.md: Added "Optional: Slack MCP server" section under Prerequisites with setup instructions and benefits

Test plan

  • Verify docs workflow runs normally without Slack MCP configured (no errors, Slack section skipped)
  • With Slack MCP configured, verify requirements-analyst searches Slack by ticket key
  • Verify Slack findings are recorded in the "Sources consulted" section of requirements output
  • Verify docs-planner uses Slack to resolve ambiguous requirements when available

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Optional Slack MCP integration for documentation workflows to search Slack channels and threads for additional context and design details.
  • Documentation

    • Setup and usage instructions for Slack MCP, including a one-step setup script, token refresh command, and note to restart the app after integration.
    • Updated planning and requirements workflows to include Slack research, guidance on what to extract, recording findings under "Sources consulted," and a reliability guardrail (cross-check against authoritative sources; prefer JIRA if conflicting).
  • Chores

    • Plugin version bumped.

… and planning

Enable the requirements-analyst and docs-planner agents to search Slack
for SME decisions, design rationale, and technical context not captured
in JIRA tickets or PRs. The integration is optional — agents detect
Slack MCP tool availability at runtime and skip Slack research if not
configured.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 24, 2026

Walkthrough

Adds optional Slack MCP integration: README adds setup and token-refresh steps; docs-planner and requirements-analyst introduce conditional Slack research when mcp__slack__* tools are available and require cross-checking Slack findings against codebase/JIRA; plugin version bumped.

Changes

Cohort / File(s) Summary
Slack MCP Setup Documentation
plugins/docs-tools/README.md
Added optional Slack MCP section: prerequisites, one-shot setup script (python3 <(curl ...) setup-slack-mcp.py), restart instruction, --refresh-tokens note, and link to upstream repo.
Agent Workflow Updates
plugins/docs-tools/agents/docs-planner.md, plugins/docs-tools/agents/requirements-analyst.md
Added conditional Slack research steps when mcp__slack__* tools exist (search by ticket/feature, thread/channel lookups), structured extraction categories, required "Sources consulted" recording, reliability guardrail to verify Slack claims against codebase/JIRA, and moved web-search section to 1.6.
Plugin Manifest Version
plugins/docs-tools/.claude-plugin/plugin.json
Bumped version from 0.0.47 to 0.0.48; no other manifest changes.

Sequence Diagram(s)

sequenceDiagram
    participant Agent as Docs Agent
    participant Slack as Slack MCP
    participant Repo as Codebase / JIRA
    Agent->>Slack: search (JIRA key / feature name / channel)
    Slack-->>Agent: return messages, threads, links
    Agent->>Repo: cross-reference Slack claims (code, tickets, PRs)
    Repo-->>Agent: confirm or contradict evidence
    Agent->>Agent: record validated findings under "Sources consulted" and incorporate into plan
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs


Important

Pre-merge checks failed

Please resolve all errors before merging. Addressing warnings is optional.

❌ Failed checks (1 error)

Check name Status Explanation Resolution
No Real People Names In Style References ❌ Error Pull request contains real person identifier (@ibuziuk) in documentation example, violating guideline against naming real people. Replace @ibuziuk with role-based placeholder @product-manager at line 191 in requirements-analyst.md.
✅ Passed checks (9 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main change: adding optional Slack MCP integration to the docs-tools plugin, which is reflected across README, agent documentation, and version updates.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Git Safety Rules ✅ Passed Modified files contain only safe git commands (git rev-parse --show-toplevel) with no unsafe remote assumptions or push operations.
No Untrusted Mcp Servers ✅ Passed The PR introduces a Slack MCP server from redhat-community-ai-tools, a verified Red Hat-managed organization. The pre-merge security check 'No Untrusted Mcp Servers' has passed, confirming the trustworthiness of the source.
Skill And Script Conventions ✅ Passed The pull request fully complies with Skill and Script Conventions with no plugin: prefix violations in any changed files.
Plugin Registry Consistency ✅ Passed No marketplace.json file exists in repository; PR objectives confirm this was false positive. Plugin version bumped correctly in plugin.json.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@plugins/docs-tools/README.md`:
- Around line 54-56: Replace the unpinned remote-exec invocation of the setup
script (the command calling setup-slack-mcp.py) with a reproducible, verifiable
install: reference a specific commit SHA or tag for the GitHub URL, download the
script to disk first, fetch and verify a published checksum or GPG signature for
that pinned release, and only then execute the verified file; update the README
example to show the pinned URL and verification steps for setup-slack-mcp.py
instead of piping from the mutable main branch.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 259210eb-afb9-419f-822e-a25dd9ffb908

📥 Commits

Reviewing files that changed from the base of the PR and between cbc7176 and 84798c2.

📒 Files selected for processing (3)
  • plugins/docs-tools/README.md
  • plugins/docs-tools/agents/docs-planner.md
  • plugins/docs-tools/agents/requirements-analyst.md

Comment on lines +54 to +56
```bash
python3 <(curl -fsSL https://raw.githubusercontent.com/redhat-community-ai-tools/slack-mcp/main/scripts/setup-slack-mcp.py)
```
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Read-only verification: find remote-script execution patterns and MCP setup references in markdown/shell files.
fd -e md -e sh -e bash | xargs rg -n --no-heading -e 'curl .*raw\.githubusercontent\.com' -e 'setup-slack-mcp\.py' -e 'mcp'

Repository: redhat-documentation/redhat-docs-agent-tools

Length of output: 1903


🌐 Web query:

redhat-community-ai-tools organization slack-mcp verified MCP server

💡 Result:

The redhat-community-ai-tools organization on GitHub develops and maintains the slack-mcp repository, which is a Model Context Protocol (MCP) server for interacting with Slack workspaces. It enables AI assistants to read messages, post content, manage channels, add reactions, and more via MCP-compatible clients. This is a community-developed MCP server hosted under the Red Hat Community AI Tools organization (https://github.com/redhat-community-ai-tools), with 56 public repositories focused on AI tools including multiple MCP servers like jira-mcp, ocm-mcp, and slack-mcp. The slack-mcp repo has 15 stars, is written in Python, supports stdio and SSE transports, and can be run via Podman/Docker with Slack XOXC/XOXD tokens. It appears in MCP server directories like mcpservers.org and awesome-mcp lists as a community server, not an "official" or vendor-verified one (official Slack MCP is at mcp.slack.com). No sources explicitly state it as "verified" in an official MCP registry sense, but it is actively maintained (last push April 2026) and listed alongside other reputable MCP implementations.

Citations:


🏁 Script executed:

#!/bin/bash
# Check if redhat-community-ai-tools is an official Red Hat org
# and verify slack-mcp repository details
cd /tmp && git clone --depth 1 https://github.com/redhat-community-ai-tools/slack-mcp.git 2>&1 | head -20
# If cloned, check for verification markers (official badges, org info, etc.)
if [ -d slack-mcp ]; then
  echo "=== Repository cloned successfully ==="
  head -50 slack-mcp/README.md | grep -i -E "(official|verified|red\s*hat|community)" || echo "No official verification markers found"
  test -f slack-mcp/SECURITY.md && echo "=== Found SECURITY.md ===" && head -20 slack-mcp/SECURITY.md
fi

Repository: redhat-documentation/redhat-docs-agent-tools

Length of output: 406


Avoid unpinned remote execution for MCP setup scripts.

Line 55 executes code fetched from the mutable main branch at runtime without pinning, checksums, or verification. While redhat-community-ai-tools is Red Hat-affiliated, slack-mcp is a community-developed (not officially verified) MCP server. Switch to a reproducible, verified installation method using pinned commits/tags and checksum verification.

Suggested hardening pattern
- python3 <(curl -fsSL https://raw.githubusercontent.com/redhat-community-ai-tools/slack-mcp/main/scripts/setup-slack-mcp.py)
+ curl -fsSLo /tmp/setup-slack-mcp.py \
+   https://raw.githubusercontent.com/redhat-community-ai-tools/slack-mcp/<PINNED_COMMIT>/scripts/setup-slack-mcp.py
+ echo "<EXPECTED_SHA256>  /tmp/setup-slack-mcp.py" | sha256sum -c -
+ python3 /tmp/setup-slack-mcp.py
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 54-54: Code block style
Expected: indented; Actual: fenced

(MD046, code-block-style)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/docs-tools/README.md` around lines 54 - 56, Replace the unpinned
remote-exec invocation of the setup script (the command calling
setup-slack-mcp.py) with a reproducible, verifiable install: reference a
specific commit SHA or tag for the GitHub URL, download the script to disk
first, fetch and verify a published checksum or GPG signature for that pinned
release, and only then execute the verified file; update the README example to
show the pinned URL and verification steps for setup-slack-mcp.py instead of
piping from the mutable main branch.

@gtrivedi88
Copy link
Copy Markdown
Collaborator Author

Responding to CodeRabbit findings

1. Unpinned remote execution (inline comment on README.md:55)

This is the upstream project's documented install command from redhat-community-ai-tools/slack-mcp. Pinning to a commit SHA would cause the setup to break silently when the upstream updates token extraction logic or container image versions.

The redhat-community-ai-tools org is maintained by the Red Hat AI tools team — same organization. The No Untrusted Mcp Servers pre-merge check passed, confirming this is recognized as a trusted source.

No change needed.

2. Plugin Registry Consistency (pre-merge check failure)

marketplace.json does not carry per-plugin version numbers — it only lists plugin names, source paths, and descriptions. The version bump to 0.0.48 was applied to plugin.json where versions are tracked. This is a false positive.

No change needed.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@gtrivedi88 gtrivedi88 force-pushed the slack-mcp-integration branch from e954dc1 to d9e46ee Compare April 24, 2026 13:45
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@plugins/docs-tools/agents/requirements-analyst.md`:
- Around line 189-191: The Slack example under the "### Slack discussions"
section contains a real-person mention "@ibuziuk"; replace that with a
role-based placeholder (e.g., "@product-manager" or "@PM") so the example no
longer references a real individual, and ensure the line "- Slack DM with
`@ibuziuk` (2026-02-23): PM confirmed stakeholder list..." becomes "- Slack DM
with `@product-manager` (2026-02-23): PM confirmed stakeholder list..." (or
similar role-based text) to comply with the plugins/* documentation rule against
real-person references.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: b253d85d-9b04-4d37-a7fa-ef3baba73bfa

📥 Commits

Reviewing files that changed from the base of the PR and between e954dc1 and d9e46ee.

📒 Files selected for processing (3)
  • plugins/docs-tools/.claude-plugin/plugin.json
  • plugins/docs-tools/agents/docs-planner.md
  • plugins/docs-tools/agents/requirements-analyst.md
✅ Files skipped from review due to trivial changes (2)
  • plugins/docs-tools/.claude-plugin/plugin.json
  • plugins/docs-tools/agents/docs-planner.md

Comment on lines +189 to +191
### Slack discussions
- Slack thread in #team-devspaces (2026-04-20): SME confirmed backup/restore feature targets GA in 3.27. Decision to use CRDs instead of ConfigMap for state storage.
- Slack DM with @ibuziuk (2026-02-23): PM confirmed stakeholder list for JTBD meeting — UX, Marketing, TAM, and Support contacts identified.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Remove real-person identifier from the Slack example.

The example uses @ibuziuk, which violates the plugin-doc rule that forbids real people references in instructions/examples. Replace with a role-based placeholder.

Proposed fix
 ### Slack discussions
 - Slack thread in `#team-devspaces` (2026-04-20): SME confirmed backup/restore feature targets GA in 3.27. Decision to use CRDs instead of ConfigMap for state storage.
-- Slack DM with `@ibuziuk` (2026-02-23): PM confirmed stakeholder list for JTBD meeting — UX, Marketing, TAM, and Support contacts identified.
+- Slack DM with `@product-manager` (2026-02-23): PM confirmed stakeholder list for JTBD meeting — UX, Marketing, TAM, and Support contacts identified.

As per coding guidelines: plugins/*/{skills,commands,agents}/*.md: “Never allow references to real people by name in plugin commands, skill documentation, example prompts, instructions, or style references.”

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
### Slack discussions
- Slack thread in #team-devspaces (2026-04-20): SME confirmed backup/restore feature targets GA in 3.27. Decision to use CRDs instead of ConfigMap for state storage.
- Slack DM with @ibuziuk (2026-02-23): PM confirmed stakeholder list for JTBD meeting — UX, Marketing, TAM, and Support contacts identified.
### Slack discussions
- Slack thread in `#team-devspaces` (2026-04-20): SME confirmed backup/restore feature targets GA in 3.27. Decision to use CRDs instead of ConfigMap for state storage.
- Slack DM with `@product-manager` (2026-02-23): PM confirmed stakeholder list for JTBD meeting — UX, Marketing, TAM, and Support contacts identified.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/docs-tools/agents/requirements-analyst.md` around lines 189 - 191,
The Slack example under the "### Slack discussions" section contains a
real-person mention "@ibuziuk"; replace that with a role-based placeholder
(e.g., "@product-manager" or "@PM") so the example no longer references a real
individual, and ensure the line "- Slack DM with `@ibuziuk` (2026-02-23): PM
confirmed stakeholder list..." becomes "- Slack DM with `@product-manager`
(2026-02-23): PM confirmed stakeholder list..." (or similar role-based text) to
comply with the plugins/* documentation rule against real-person references.

@mcljot mcljot marked this pull request as draft April 24, 2026 14:05
@mcljot
Copy link
Copy Markdown
Collaborator

mcljot commented Apr 24, 2026

Scraping Slack agentically is currently a grey area. May need AIA/PIA. Setting PR to draft until some resolution is codified.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants