Human-in-the-Loop Slack MCP Server
Permite que los asistentes de IA soliciten información y reciban respuestas de humanos a través de Slack.
Documentación
Servidor MCP de Slack con Intervención Humana
Un servidor de Protocolo de Contexto de Modelo (MCP) que permite a los asistentes de IA solicitar información a humanos a través de Slack. Este servidor actúa como un puente entre los sistemas de IA y los expertos humanos, permitiendo que la IA haga preguntas y reciba respuestas a través de Slack cuando necesita conocimiento humano o aclaraciones.
Inicio Rápido con npx
Ejecuta directamente desde GitHub sin instalación:
npx github:trtd56/AskOnSlackMCP \
--slack-bot-token "xoxb-your-bot-token" \
--slack-app-token "xapp-your-app-token" \
--slack-channel-id "C1234567890" \
--slack-user-id "U1234567890"
Ejemplo con Claude Desktop
Agrega a tu configuración de Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"slack-human": {
"command": "npx",
"args": [
"github:trtd56/AskOnSlackMCP",
"--slack-bot-token", "xoxb-your-actual-token",
"--slack-app-token", "xapp-your-actual-token",
"--slack-channel-id", "C1234567890",
"--slack-user-id", "U1234567890"
]
}
}
}
Características
- 🤖 Servidor compatible con MCP para integración con asistentes de IA
- 💬 Integración en tiempo real con Slack mediante conexión WebSocket en Modo Socket
- 🧵 Conversaciones basadas en hilos para mantener el contexto
- ⏱️ Tiempo de espera de 60 segundos para respuestas humanas
- 📢 Menciones de usuarios (
@username) para notificaciones - 🔍 Capacidades integrales de depuración y registro
- 🔐 Manejo seguro de tokens
- 🚀 Inicialización dinámica de manejadores para un inicio más rápido
- ⚡ Optimizado para detección instantánea de respuestas con arquitectura basada en eventos
Requisitos Previos
-
Configuración de la App de Slack
- Crea una nueva app de Slack en https://api.slack.com/apps
- Habilita el Modo Socket en la configuración de tu app
- Genera un Token a Nivel de App con el alcance
connections:write - Instala la app en tu espacio de trabajo
-
Alcances del Token del Bot
chat:write- Enviar mensajeschannels:read- Acceder a información del canalusers:read- Acceder a información del usuario
-
Modo Socket
- Habilita el Modo Socket en la configuración de tu app
- Esto es necesario para que la app reciba eventos en tiempo real
-
Suscripciones a Eventos
- Habilita la API de Eventos
- Suscríbete a eventos del bot:
message.channels- Mensajes en canales públicosmessage.groups- Mensajes en canales privadosmessage.im- Mensajes directos (opcional)
- Guarda los cambios y reinstala la app en tu espacio de trabajo
Instalación (Opcional)
Si deseas instalar localmente en lugar de usar npx:
- Clona el repositorio:
git clone https://github.com/trtd56/AskOnSlackMCP.git
cd AskOnSlackMCP
- Instala las dependencias:
npm install
- Compila el código TypeScript:
npm run build
Configuración
Toda la configuración se pasa mediante argumentos de línea de comandos:
--slack-bot-token- Token OAuth del Bot de Usuario (xoxb-...)--slack-app-token- Token a Nivel de App para Modo Socket (xapp-...)--slack-channel-id- ID del canal donde operará el bot--slack-user-id- ID del usuario a mencionar al hacer preguntas--log-level- (Opcional) Nivel de registro (predeterminado: INFO)
Uso
Modo de Desarrollo
Ejecuta con recarga automática:
npm run dev
Modo de Producción
Compila y ejecuta:
npm run build
npm start
Con Cliente MCP (Usando npx)
Configura tu cliente MCP para usar este servidor directamente desde GitHub:
{
"mcpServers": {
"human-in-the-loop-slack": {
"command": "npx",
"args": [
"github:trtd56/AskOnSlackMCP",
"--slack-bot-token", "xoxb-your-token",
"--slack-app-token", "xapp-your-token",
"--slack-channel-id", "C1234567890",
"--slack-user-id", "U1234567890"
]
}
}
}
Con Cliente MCP (Instalación Local)
Si has instalado localmente:
{
"mcpServers": {
"human-in-the-loop-slack": {
"command": "node",
"args": [
"/path/to/AskOnSlackMCP/dist/index.js",
"--slack-bot-token", "xoxb-your-token",
"--slack-app-token", "xapp-your-token",
"--slack-channel-id", "C1234567890",
"--slack-user-id", "U1234567890"
]
}
}
}
Herramientas Disponibles
ask_on_slack
Herramienta principal para hacer preguntas a humanos a través de Slack.
Parámetros:
question(cadena): La pregunta para hacer al humano. Sé específico y proporciona contexto.
Ejemplo:
{
"tool": "ask_on_slack",
"arguments": {
"question": "What is the API endpoint for the production server?"
}
}
Notas de Uso:
- El bot mencionará al usuario especificado en el canal de Slack
- El humano tiene 60 segundos para responder en un hilo
- La herramienta devolverá la respuesta del humano o expirará después de 60 segundos
Desarrollo
Scripts
npm run build- Compilar TypeScriptnpm run dev- Ejecutar con recarga automáticanpm start- Ejecutar código compiladonpm test- Ejecutar pruebas con Vitestnpm run test:ci- Ejecutar pruebas con coberturanpm run lint- Ejecutar ESLintnpm run format- Formatear código con Prettiernpm run clean- Limpiar artefactos de compilación
Estructura del Proyecto
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
Pruebas
El proyecto utiliza Vitest para las pruebas. Las pruebas se encuentran en el directorio tests/.
Para ejecutar las pruebas:
npm test # Run tests in watch mode
npm run test:ci # Run tests once with coverage
CI/CD
El proyecto utiliza GitHub Actions para integración y despliegue continuos.
-
Flujo de Trabajo de CI (
ci.yml): Se ejecuta en cada push y pull request- Pruebas en Node.js 18.x, 20.x y 22.x
- Ejecuta linting y verificación de tipos
- Genera informes de cobertura de código
- Compila el proyecto
-
Flujo de Trabajo de Lanzamiento (
release.yml): Se ejecuta en etiquetas de versión- Compila y prueba el proyecto
- Crea lanzamientos de GitHub
- Publica en npm (requiere el secreto NPM_TOKEN)
Solución de Problemas
-
Problemas de Conexión
- Verifica que todos los tokens sean correctos
- Comprueba que el bot esté invitado al canal
- Asegúrate de que el Modo Socket esté habilitado en tu app de Slack
-
No se Recibe Respuesta
- Verifica que el ID del usuario sea correcto (formato: U1234567890)
- Asegúrate de que el usuario responda en el hilo del mensaje, no en el canal principal
- Comprueba que el bot tenga permiso para leer mensajes en el canal
-
Errores de Autenticación
- El token del bot debe comenzar con
xoxb- - El token de la app debe comenzar con
xapp- - Regenera los tokens si es necesario
- Verifica que el bot tenga los alcances requeridos:
chat:write,channels:read,users:read
- El token del bot debe comenzar con
-
Optimización del Rendimiento
- El servidor utiliza arquitectura basada en eventos para detección instantánea de respuestas
- La conexión WebSocket asegura la entrega de mensajes en tiempo real
- Registros detallados de tiempo disponibles con el prefijo
[TIMING]para depuración
Licencia
MIT