FlowiseAI/Flowise · error · Error

Missing Slack credentials. Provide either an OAuth2 access t

Error message

Missing Slack credentials. Provide either an OAuth2 access token or a Bot Token with Team ID.

What it means

Thrown by SlackMCP.getTools when neither credential path is satisfied: there is no OAuth2 access_token AND there is no (botToken + teamId) pair. The node supports either an OAuth2 token (HTTP transport to mcp.slack.com/mcp) or a Bot Token + Team ID (stdio transport via @modelcontextprotocol/server-slack), and at least one complete set is required.

Source

Thrown at packages/components/nodes/tools/MCP/Slack/SlackMCP.ts:127

                    }
                },
                'http'
            )
        } else if (botToken && teamId) {
            const packagePath = getNodeModulesPackagePath('@modelcontextprotocol/server-slack/dist/index.js')

            const serverParams = {
                command: 'node',
                args: [packagePath],
                env: {
                    SLACK_BOT_TOKEN: botToken,
                    SLACK_TEAM_ID: teamId
                }
            }

            toolkit = new MCPToolkit(serverParams, 'stdio')
        } else {
            throw new Error('Missing Slack credentials. Provide either an OAuth2 access token or a Bot Token with Team ID.')
        }

        await toolkit.initialize()

        const tools = toolkit.tools ?? []

        return tools as Tool[]
    }
}

module.exports = { nodeClass: Slack_MCP }

View on GitHub (pinned to abe4a8601a)

Solutions

  1. Choose one auth method: OAuth2 (provide access_token) OR Bot Token (provide BOTH botToken and teamId).
  2. For Bot Token mode, obtain the Team ID (T-prefixed ID) from Slack and fill both botToken and teamId.
  3. For OAuth2, ensure access_token is present (the code also accepts the 'accessToken' alias and refreshes it).
  4. Re-bind the corrected credential and retry.

Example fix

// OAuth2 path (HTTP):
//   credential.access_token = 'xoxb-...'
// Bot Token path (stdio):
//   credential.botToken = 'xoxb-...'
//   credential.teamId   = 'T12345'
Defensive patterns

Strategy: validation

Validate before calling

const credentialData = await getCredentialData(nodeData.credential ?? '', options)
const accessToken = getCredentialParam('access_token', credentialData, nodeData) || getCredentialParam('accessToken', credentialData, nodeData)
const botToken = getCredentialParam('botToken', credentialData, nodeData)
const teamId = getCredentialParam('teamId', credentialData, nodeData)
const ok = !!accessToken || (!!botToken && !!teamId)
if (!ok) throw new Error('Missing Slack credentials')

Type guard

type SlackCred = { access_token?: string; botToken?: string; teamId?: string }
function hasCompleteSlackCred(c: SlackCred): boolean {
    return (!!c.access_token && c.access_token.trim().length > 0)
        || (!!c.botToken && c.botToken.trim().length > 0 && !!c.teamId && c.teamId.trim().length > 0)
}

Try / catch

try { await slackMcp.getTools(nodeData, options) }
catch (e) { if (e instanceof Error && e.message.startsWith('Missing Slack credentials')) { /* guide user to OAuth2 OR botToken+teamId */ } }

Prevention

When it happens

Trigger: Calling getTools with a Slack credential that has no access_token, or has a botToken but no teamId (or vice versa), or a completely empty credential.

Common situations: User intended OAuth2 but only entered a bot token; entered bot token but forgot Team ID; credential created but no fields filled; mixed fields from two auth methods incompletely.

Related errors


AI-assisted analysis of FlowiseAI/Flowise@abe4a8601a (2026-08-12). Data as JSON: /api/errors/4b2762e86332ff0e. Report an issue: GitHub.