Ask On Slack Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Ask On Slack Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
A Model Context Protocol (MCP) server that enables AI assistants to request information from humans via Slack. This server acts as a bridge between AI systems and human experts, allowing AI to ask questions and receive responses through Slack when it needs human knowledge or clarification.
# Run directly without installation
bunx @rodrigolive/ask-on-slack stdio \
--slack-bot-token "xoxb-your-bot-token" \
--slack-app-token "xapp-your-app-token" \
--slack-channel-id "C1234567890" \
--slack-user-id "U1234567890"# Run directly without installation
npx @rodrigolive/ask-on-slack stdio \
--slack-bot-token "xoxb-your-bot-token" \
--slack-app-token "xapp-your-app-token" \
--slack-channel-id "C1234567890" \
--slack-user-id "U1234567890"export ASK_SLACK_BOT="xoxb-your-bot-token"
export ASK_SLACK_APP="xapp-your-app-token"
export ASK_SLACK_CHANNEL="C1234567890"
export ASK_SLACK_USER="U1234567890"
# Now run without arguments
bunx @rodrigolive/ask-on-slack stdioUse stdio mode for MCP clients like Claude Desktop:
bunx @rodrigolive/ask-on-slack stdio [options]Use HTTP mode for web-based MCP clients:
bunx @rodrigolive/ask-on-slack serve [options]The HTTP server will listen on port 3000 (or specified port) at the /mcp endpoint.
The server supports three different Slack interaction modes:
ASK_SLACK_CHANNEL and ASK_SLACK_USER are set, the bot posts questions in the channel mentioning the user and listens for replies in the thread.ASK_SLACK_CHANNEL is set, the bot posts questions in the channel (without mention) and listens for the first reply in the thread.ASK_SLACK_USER is set, the bot opens a direct message to the user.Important: The bot must be invited to the channel if using a public or private channel.
Your app needs these Bot Token Scopes:
An App-Level Token is required for the HTTP polling functionality.
# Using Bun
bun install -g @rodrigolive/ask-on-slack
# Using npm
npm install -g @rodrigolive/ask-on-slackThen run directly:
ask-on-slack stdio --slack-bot-token "xoxb-your-token" --slack-app-token "xapp-your-token"# Clone the repository
git clone https://github.com/rodrigolive/ask-on-slack-mcp.git
cd ask-on-slack-mcp
# Install dependencies
bun install
# Run in development mode (no build required)
bun run dev
# Or build and run
bun run build
bun run start--slack-bot-token - Bot User OAuth Token (xoxb-...)--slack-app-token - App-Level Token (xapp-...)--slack-channel-id - Channel ID where the bot will operate--slack-user-id - User ID to mention when asking questions--role, -r - Role for the human (boss, expert, or custom name)--log-level - Logging level (default: INFO)--log-file - Log file path (if specified, logs will be written to file instead of stderr)--port - Port to listen on for HTTP mode (default: 3000)ASK_SLACK_BOT - Bot User OAuth Token (xoxb-...)ASK_SLACK_APP - App-Level Token (xapp-...)ASK_SLACK_CHANNEL - Channel ID where the bot will operateASK_SLACK_USER - User ID to mention when asking questionsASK_SLACK_ROLE - Role for the human (boss, expert, or custom name)LOG_LEVEL - Logging level (default: INFO)LOG_FILE - Log file pathPORT - Port for HTTP mode (default: 3000)The server supports different roles for the human you're asking questions to. Each role changes the tool names and descriptions to match the context.
#### boss (Default)
ask_the_boss_on_slack, clarify_with_the_boss_on_slack, acknowledge_the_boss_on_slack#### expert
ask_the_expert_on_slack, clarify_with_the_expert_on_slack, acknowledge_the_expert_on_slack#### Custom Role
ask_the_human_on_slack, clarify_with_the_human_on_slack, acknowledge_the_human_on_slack# Use boss role (default)
bunx @rodrigolive/ask-on-slack stdio
# Use expert role
bunx @rodrigolive/ask-on-slack stdio --role expert
# Use custom role
bunx @rodrigolive/ask-on-slack stdio --role consultant
# Using environment variable
export ASK_SLACK_ROLE="expert"
bunx @rodrigolive/ask-on-slack stdioAdd to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json):
#### Using Bun (Recommended)
{
"mcpServers": {
"ask-on-slack": {
"command": "bunx",
"args": [
"@rodrigolive/ask-on-slack",
"stdio",
"--slack-bot-token", "xoxb-your-actual-token",
"--slack-app-token", "xapp-your-actual-token",
"--slack-channel-id", "C1234567890",
"--slack-user-id", "U1234567890"
]
}
}
}#### Using npm
{
"mcpServers": {
"ask-on-slack": {
"command": "npx",
"args": [
"@rodrigolive/ask-on-slack",
"stdio",
"--slack-bot-token", "xoxb-your-actual-token",
"--slack-app-token", "xapp-your-actual-token",
"--slack-channel-id", "C1234567890",
"--slack-user-id", "U1234567890"
]
}
}
}#### Using Environment Variables
{
"mcpServers": {
"ask-on-slack": {
"command": "bunx",
"args": ["@rodrigolive/ask-on-slack", "stdio"],
"env": {
"ASK_SLACK_BOT": "xoxb-your-token",
"ASK_SLACK_APP": "xapp-your-token",
"ASK_SLACK_CHANNEL": "C1234567890",
"ASK_SLACK_USER": "U1234567890"
}
}
}
}#### Global Installation
{
"mcpServers": {
"ask-on-slack": {
"command": "ask-on-slack",
"args": [
"stdio",
"--slack-bot-token", "xoxb-your-token",
"--slack-app-token", "xapp-your-token",
"--slack-channel-id", "C1234567890",
"--slack-user-id", "U1234567890"
]
}
}
}For web-based MCP clients, use HTTP mode:
{
"mcpServers": {
"ask-on-slack": {
"command": "bunx",
"args": [
"@rodrigolive/ask-on-slack",
"serve",
"--port", "3000",
"--slack-bot-token", "xoxb-your-token",
"--slack-app-token", "xapp-your-token",
"--slack-channel-id", "C1234567890",
"--slack-user-id", "U1234567890"
]
}
}
}The server will be available at http://localhost:3000/mcp.
For Codex, add to your configuration file (~/.codex/config.toml):
[mcp.servers.ask-on-slack]
command = "bunx"
args = [
"@rodrigolive/ask-on-slack",
"stdio",
"--slack-bot-token", "xoxb-your-token",
"--slack-app-token", "xapp-your-token",
"--slack-channel-id", "C1234567890",
"--slack-user-id", "U1234567890"
]Or using environment variables:
[mcp.servers.ask-on-slack]
command = "bunx"
args = ["@rodrigolive/ask-on-slack", "stdio"]
[mcp.servers.ask-on-slack.env]
ASK_SLACK_BOT = "xoxb-your-token"
ASK_SLACK_APP = "xapp-your-token"
ASK_SLACK_CHANNEL = "C1234567890"
ASK_SLACK_USER = "U1234567890"Note: Codex only supports stdio mode, so always use the stdio command.
The server provides three MCP tools for interacting with humans via Slack. The tool names and descriptions change based on the selected role:
The tool names are dynamically generated based on the role:
ask_the_boss_on_slack, clarify_with_the_boss_on_slack, acknowledge_the_boss_on_slackask_the_expert_on_slack, clarify_with_the_expert_on_slack, acknowledge_the_expert_on_slackask_the_human_on_slack, clarify_with_the_human_on_slack, acknowledge_the_human_on_slack#### 1. Ask Tool (ask_the_{role}_on_slack)
Purpose: Main tool for asking questions to humans via Slack when you need information that only they would know.
When to use:
Parameters:
question (string): The question to ask the human. Be specific and provide context.Example (Boss role):
{
"tool": "ask_the_boss_on_slack",
"arguments": {
"question": "What is the API endpoint for the production server?"
}
}Example (Expert role):
{
"tool": "ask_the_expert_on_slack",
"arguments": {
"question": "Can you verify if this database schema design follows best practices?"
}
}Important: If the user replies with another question, call this tool again.
#### 2. Clarify Tool (clarify_with_the_{role}_on_slack)
Purpose: Re-ask a question in a clearer way if the human didn't understand your original question or asked something back.
When to use: If you called the ask tool but the human did not understand your question or asked anything back, you MUST use this tool to re-ask in a clearer way. Do not use this tool if you have not called the ask tool before.
Parameters:
question (string): The clarification to ask the human. Be specific and provide context.Example:
{
"tool": "clarify_with_the_boss_on_slack",
"arguments": {
"question": "I need the exact URL for the production API, including the protocol (http/https) and port number."
}
}#### 3. Acknowledge Tool (acknowledge_the_{role}_on_slack)
Purpose: Acknowledge receiving a reply from the human with a simple acknowledgment message.
When to use: If you called the ask tool and the human replied, then you MUST use this tool to acknowledge the reply. Do not use this tool if you have not called the ask tool before.
Parameters:
acknowledgement (string): The text to tell the human to acknowledge receiving their reply. Keep it short.Example:
{
"tool": "acknowledge_the_boss_on_slack",
"arguments": {
"acknowledgement": "Thanks, got it!"
}
}Common acknowledgments: "Thanks", "Got it", "Understood", "Ok", "Will do", etc.
The typical workflow for using these tools is:
This workflow ensures proper communication etiquette and helps maintain a good relationship with the human.
bun run build - Build all TypeScript filesbun run dev - Run with hot-reloading (no build required)bun run start - Run built codebun test - Run tests with Bun's test runnerbun run test:ci - Run tests with coveragebun run clean - Clean build artifactssrc/
├── cli.ts # CLI entry point with sade
├── stdio.ts # Stdio MCP server implementation
├── serve.ts # HTTP MCP server implementation
├── human.ts # Abstract Human interface
├── slack-http-client.ts # HTTP-based Slack implementation
├── slack-client.ts # Slack client utilities
├── logger.ts # Logging utilities
└── types.ts # TypeScript type definitions
bin/
└── ask-on-slack # Executable wrapper with fallback
dist/ # Built files (generated)
├── cli.js # Built CLI
├── stdio.js # Built stdio server
└── serve.js # Built HTTP serverThe bin/ask-on-slack file includes intelligent fallback behavior:
dist/cli.js if it exists (built version)src/cli.ts if built version doesn't exist (source version)bun test # Run tests in watch mode
bun run test:ci # Run tests once with coverageDEBUG - Detailed debugging informationINFO - General information (default)WARN - Warning messagesERROR - Error messages# Log to a file with debug level
bunx @rodrigolive/ask-on-slack stdio \
--slack-bot-token "xoxb-your-token" \
--slack-app-token "xapp-your-token" \
--slack-channel-id "C1234567890" \
--slack-user-id "U1234567890" \
--log-file "/tmp/ask-on-slack.log" \
--log-level "DEBUG"chat:write, channels:read, users:readxoxb-xapp-DEBUG=1 to see which CLI is being usedbun run build to create optimized dist filesEnable debug output to see which CLI is being used:
DEBUG=1 bunx @rodrigolive/ask-on-slack --version
# Output: Using CLI: /path/to/dist/cli.js (or src/cli.ts)MIT
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.