Labsco
trtd56 logo

Human-in-the-Loop Slack MCP Server

β˜… 6

from trtd56

Allows AI assistants to request information and receive responses from humans via Slack.

πŸ”₯πŸ”₯πŸ”₯βœ“ VerifiedFreeAdvanced setup

Human-in-the-Loop Slack MCP Server

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.

Features

  • πŸ€– MCP-compliant server for AI assistant integration
  • πŸ’¬ Real-time Slack integration via Socket Mode WebSocket connection
  • 🧡 Thread-based conversations for maintaining context
  • ⏱️ 60-second timeout for human responses
  • πŸ“’ User mentions (@username) for notifications
  • πŸ” Comprehensive debugging and logging capabilities
  • πŸ” Secure token handling
  • πŸš€ Dynamic handler initialization for faster startup
  • ⚑ Optimized for instant response detection with event-driven architecture

Available Tools

ask_on_slack

Main tool for asking questions to humans via Slack.

Parameters:

  • question (string): The question to ask the human. Be specific and provide context.

Example:

Copy & paste β€” that's it
{
  "tool": "ask_on_slack",
  "arguments": {
    "question": "What is the API endpoint for the production server?"
  }
}

Usage Notes:

  • The bot will mention the specified user in the Slack channel
  • The human has 60 seconds to respond in a thread
  • The tool will return the human's response or timeout after 60 seconds

Development

Scripts

  • npm run build - Compile TypeScript
  • npm run dev - Run with hot-reloading
  • npm start - Run compiled code
  • npm test - Run tests with Vitest
  • npm run test:ci - Run tests with coverage
  • npm run lint - Run ESLint
  • npm run format - Format code with Prettier
  • npm run clean - Clean build artifacts

Project Structure

Copy & paste β€” that's it
src/
β”œβ”€β”€ index.ts                  # Main MCP server implementation
β”œβ”€β”€ bin.ts                    # Binary entry point for npx execution
β”œβ”€β”€ human.ts                  # Abstract Human interface
β”œβ”€β”€ slack-client.ts           # Socket Mode Slack implementation
└── types.ts                  # TypeScript type definitions

tests/
β”œβ”€β”€ human.test.ts             # Human abstract class tests
β”œβ”€β”€ index.test.ts             # CLI argument parsing tests
β”œβ”€β”€ slack-client.test.ts      # Slack client tests
└── types.test.ts             # Type definition tests

Testing

The project uses Vitest for testing. Tests are located in the tests/ directory.

To run tests:

Copy & paste β€” that's it
npm test              # Run tests in watch mode
npm run test:ci       # Run tests once with coverage

CI/CD

The project uses GitHub Actions for continuous integration and deployment.

  • CI Workflow (ci.yml): Runs on every push and pull request

    • Tests on Node.js 18.x, 20.x, and 22.x
    • Runs linting and type checking
    • Generates code coverage reports
    • Builds the project
  • Release Workflow (release.yml): Runs on version tags

    • Builds and tests the project
    • Creates GitHub releases
    • Publishes to npm (requires NPM_TOKEN secret)

License

MIT