[BUG] Slack MCP connector fails to authenticate - SSE OAuth flow broken + GitHub PAT undocumented
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
<h2>Environment</h2>
<ul>
<li><strong>Claude Code version:</strong> v2.1.19</li>
<li><strong>Model:</strong> Opus 4.5 (API Usage Billing)</li>
<li><strong>OS:</strong> macOS</li>
<li><strong>Config:</strong> Custom config dir via <code>CLAUDE_CONFIG_DIR=~/.claude-work</code></li>
</ul>
<h2>Summary</h2>
<p>Two related issues with official MCP plugins:</p>
<ol>
<li><strong>BUG:</strong> Slack MCP plugin fails to connect — SSE OAuth flow never triggers (no browser, no fallback URL)</li>
<li><strong>DOCS:</strong> GitHub MCP plugin requires <code>GITHUB_PERSONAL_ACCESS_TOKEN</code> env var, but this is not documented anywhere</li>
</ol>
<h2>Issue 1: Slack SSE OAuth Flow Broken (BUG)</h2>
<h3>What's Wrong</h3>
<p>The Slack MCP plugin (<code>slack@claude-plugins-official</code>) fails to authenticate. The OAuth flow does not launch a browser, and <strong>no fallback URL is displayed</strong> for manual authentication. Other OAuth-based connectors (Linear, Atlassian) work correctly.</p>
<h3>Plugin Config</h3>
<p>The Slack plugin uses SSE transport with no explicit auth config (expects OAuth):</p>
<pre><code class="language-json">// ~/.claude-work/plugins/cache/claude-plugins-official/slack/e30768372b41/.mcp.json
{
"slack": {
"type": "sse",
"url": "https://mcp.slack.com/sse"
}
}
</code></pre>
<h2>Issue 2: GitHub PAT Requirement Undocumented (DOCS)</h2>
<h3>What Was Wrong</h3>
<p>GitHub MCP plugin showed "Failed to connect" with no indication of what was needed.</p>
<h3>Root Cause</h3>
<p>The GitHub plugin config <strong>requires</strong> a Personal Access Token via environment variable:</p>
<pre><code class="language-json">// ~/.claude-work/plugins/cache/claude-plugins-official/github/e30768372b41/.mcp.json
{
"github": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp/",
"headers": {
"Authorization": "Bearer ${GITHUB_PERSONAL_ACCESS_TOKEN}"
}
}
}
</code></pre>
<h3>Solution</h3>
<pre><code class="language-bash">export GITHUB_PERSONAL_ACCESS_TOKEN="ghp_your_token_here"
</code></pre>
<p>After setting this env var, GitHub MCP connects successfully.</p>
<h3>Documentation Request</h3>
<p>Please document the <code>GITHUB_PERSONAL_ACCESS_TOKEN</code> requirement:</p>
<ul>
<li>In the plugin description/README</li>
<li>In error messages when connection fails</li>
<li>In Claude Code docs for MCP plugins</li>
</ul>
<hr>
<h2>Comparison: Working vs Broken</h2>
MCP Server | Transport | Auth Method | Status
-- | -- | -- | --
Linear | HTTP | OAuth (handled by server) | ✓ Works
Atlassian | HTTP | OAuth (handled by server) | ✓ Works
GitHub | HTTP | PAT via env var | ✓ Works (after setting env var)
Slack | SSE | OAuth (should trigger browser) | ✗ Broken
What Should Happen?
<h3>Expected Behavior</h3>
<ol>
<li>When Slack MCP needs authentication, browser should open automatically</li>
<li>If browser launch fails, a fallback URL should be printed to terminal</li>
<li>After OAuth completes, Slack should connect successfully</li>
</ol>
<h3>Workarounds Attempted</h3>
<ul>
<li>Setting <code>SLACK_BOT_TOKEN</code> env var — no effect</li>
<li>Setting <code>SLACK_TOKEN</code> env var — no effect</li>
<li>Disconnecting/reconnecting in Claude.ai — no effect on Claude Code</li>
</ul>
<h3>Notes</h3>
<ul>
<li>Slack works correctly in <strong>Claude.ai web interface</strong> (tools available, can search messages)</li>
<li>Only broken in Claude Code</li>
<li>May be SSE-specific — all working plugins (Linear, Atlassian, GitHub) use HTTP transport</li>
</ul>
<hr>
Error Messages/Logs
Steps to Reproduce
<h3>Steps to Reproduce</h3>
<ol>
<li>Install Slack plugin: enable <code>slack@claude-plugins-official</code> in settings</li>
<li>Run <code>claude mcp list</code></li>
<li>Observe Slack shows "Failed to connect"</li>
<li>No browser opens, no auth URL is printed</li>
</ol>
<h3>Observed Behavior</h3>
<pre><code>❯ claude mcp list
Checking MCP server health...
plugin:linear:linear: https://mcp.linear.app/mcp (HTTP) - ✓ Connected
plugin:atlassian:atlassian: https://mcp.atlassian.com/v1/mcp (HTTP) - ✓ Connected
plugin:slack:slack: https://mcp.slack.com/sse (SSE) - ✗ Failed to connect
plugin:github:github: https://api.githubcopilot.com/mcp/ (HTTP) - ✓ Connected
</code></pre>
Claude Model
Opus
Is this a regression?
No, this never worked
Last Working Version
_No response_
Claude Code Version
v2.1.19
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Terminal.app (macOS)
Additional Information
<h2>Additional Context</h2>
<h3>Claude.ai Web Interface</h3>
<p>The same connectors behave differently in Claude.ai:</p>
<ul>
<li><strong>GitHub:</strong> Shows "Connected" in Settings, file browsing works, but <strong>no MCP tools appear</strong> in Connectors toggle menu (separate issue?)</li>
<li><strong>Slack:</strong> Works correctly (tools available, can search/read messages)</li>
</ul>
<p>This suggests:</p>
<ol>
<li>Slack OAuth works server-side (Claude.ai) but not in Claude Code's SSE implementation</li>
<li>GitHub has multiple integration paths with inconsistent behavior</li>
</ol>
<h2>Suggested Fixes</h2>
<ol>
<li><strong>Slack SSE OAuth:</strong> Implement browser launch + fallback URL display for SSE-based MCP plugins</li>
<li><strong>GitHub docs:</strong> Add clear documentation that <code>GITHUB_PERSONAL_ACCESS_TOKEN</code> env var is required</li>
<li><strong>Better error messages:</strong> When MCP connection fails due to missing auth, display actionable instructions</li>
</ol></body></html>
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗