-
Notifications
You must be signed in to change notification settings - Fork 19
feat(docs-tools): add optional Slack MCP integration #109
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -139,7 +139,61 @@ The `--graph` flag discovers custom field IDs, fetches the parent, children, sib | |||||||||||||
| - Find configuration options and parameters | ||||||||||||||
| - Record file paths with line numbers (e.g., `src/feature.ts:45-67`) | ||||||||||||||
|
|
||||||||||||||
| ### 1.5. Web search expansion | ||||||||||||||
| ### 1.5. Slack research (optional) | ||||||||||||||
|
|
||||||||||||||
| If Slack MCP tools are available (`mcp__slack__*`), search Slack for additional context that may not be captured in JIRA tickets or PRs. Skip this section entirely if Slack MCP is not configured — it is not an error. | ||||||||||||||
|
|
||||||||||||||
| **Search strategy:** | ||||||||||||||
|
|
||||||||||||||
| Run these searches in order. Stop early if the first search already provides sufficient context. | ||||||||||||||
|
|
||||||||||||||
| 1. **Search by ticket key** — searches all channels the user has access to: | ||||||||||||||
| ``` | ||||||||||||||
| mcp__slack__search_messages query: "PROJECT-123" | ||||||||||||||
| ``` | ||||||||||||||
|
|
||||||||||||||
| 2. **Search by feature name** — use the feature name, component, or key technical terms from the ticket: | ||||||||||||||
| ``` | ||||||||||||||
| mcp__slack__search_messages query: "PKCE OAuth flow" | ||||||||||||||
| ``` | ||||||||||||||
|
|
||||||||||||||
| 3. **Follow threads** — when a search result references a conversation worth reading in full, fetch the complete thread using the channel ID and timestamp from the result: | ||||||||||||||
| ``` | ||||||||||||||
| mcp__slack__get_thread channel_id: "C0A2WFPBR29" thread_ts: "1776943948.748319" | ||||||||||||||
| ``` | ||||||||||||||
|
|
||||||||||||||
| 4. **Identify channels by name** (optional) — if you know a likely channel name: | ||||||||||||||
| ``` | ||||||||||||||
| mcp__slack__get_channel_id_by_name channel_name: "devspaces-docs" | ||||||||||||||
| ``` | ||||||||||||||
|
|
||||||||||||||
| **What to extract:** | ||||||||||||||
|
|
||||||||||||||
| | Signal | Example phrases | Action | | ||||||||||||||
| |--------|----------------|--------| | ||||||||||||||
| | Decision rationale | "we decided to...", "the reason is..." | Record as context for requirements | | ||||||||||||||
| | Technical details | API names, config flags, architecture notes | Cross-reference against codebase | | ||||||||||||||
| | Scope discussions | "out of scope", "deferred to next release" | Flag as scope boundary | | ||||||||||||||
| | SME identification | People actively discussing the feature | Add to "Who can provide information" | | ||||||||||||||
| | User pain points | "customers are hitting...", "support tickets about..." | Elevate requirement priority | | ||||||||||||||
|
|
||||||||||||||
| **Record Slack findings:** | ||||||||||||||
|
|
||||||||||||||
| Add relevant Slack context to the "Sources consulted" section using these formats: | ||||||||||||||
|
|
||||||||||||||
| - Channel thread: `Slack thread in #channel-name (YYYY-MM-DD): [Summary of relevant discussion]` | ||||||||||||||
| - Direct message: `Slack DM with @username (YYYY-MM-DD): [Summary of relevant discussion]` | ||||||||||||||
|
|
||||||||||||||
| **Example:** | ||||||||||||||
| ``` | ||||||||||||||
| ### 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. | ||||||||||||||
|
Comment on lines
+189
to
+191
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Remove real-person identifier from the Slack example. The example uses 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: 📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||
| ``` | ||||||||||||||
|
|
||||||||||||||
| **Reliability guardrail:** Slack conversations are informal and may contain outdated or speculative information. Before incorporating any technical claim into requirements, verify it against at least one authoritative source (codebase, JIRA ticket, or PR). If a Slack finding contradicts JIRA, trust JIRA. | ||||||||||||||
|
|
||||||||||||||
| ### 1.6. Web search expansion | ||||||||||||||
|
|
||||||||||||||
| After gathering initial source materials, expand your research using web search to find additional context, upstream documentation, and industry best practices. | ||||||||||||||
|
|
||||||||||||||
|
|
||||||||||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
🏁 Script executed:
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:
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
mainbranch at runtime without pinning, checksums, or verification. Whileredhat-community-ai-toolsis Red Hat-affiliated,slack-mcpis 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
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)
[warning] 54-54: Code block style
Expected: indented; Actual: fenced
(MD046, code-block-style)
🤖 Prompt for AI Agents