
slack-mcp y slack-cli: dale a tu asistente de IA acceso de lectura a Slack
- Publicado el
- • 6 min de lectura•--- vistas

Gran parte del contexto que un asistente de IA necesita vive en Slack — la conversación detrás de un ticket, el ida y vuelta que explica un bug, el hilo donde realmente se tomó una decisión. El modelo no puede ver nada de eso. Así que construí un par de herramientas que solucionan esto: slack-mcp, un servidor Model Context Protocol, y slack-cli, la herramienta de línea de comandos en Go que lo impulsa.
Juntas le dan a tu asistente de IA acceso de lectura a Slack — buscar mensajes, desplegar hilos y resolver quién dijo qué — y llevan ese contexto real directamente a su memoria de trabajo.
Dos repos, una herramienta
Estos se distribuyen a propósito como dos binarios:
slack-clies el motor. Se autentica en Slack, cifra y almacena las credenciales, y hace las llamadas reales a la API — utilizable por sí solo desde una terminal o un script.slack-mcpes una capa MCP delgada encima. Expone las mismas capacidades como herramientas MCP sobre stdio para que cualquier agente compatible con MCP (Claude, Cursor, etc.) pueda llamarlas.
Dividirlo de esta forma significa que la lógica de autenticación y Slack vive en un solo lugar bien probado, y el servidor MCP se mantiene pequeño. Puedes manejar Slack desde un script de shell y desde tu asistente de IA con las mismas credenciales.
Herramientas MCP
El servidor expone nueve herramientas de lectura y autenticación. load_slack_context es la estrella:
| Herramienta | Parámetros | Descripción |
|---|---|---|
search_messages | workspace, query, count?, start_from? | Busca mensajes en todos los canales — devuelve canal, autor, fragmento, timestamp, enlace permanente |
load_slack_context | workspace, channel_id, thread_ts, permalink?, channel_name?, search_query?, start_from? | Herramienta principal — carga un hilo con cada usuario resuelto, formateado como markdown |
load_thread | workspace, channel_id, thread_ts, start_from? | Carga cada mensaje de un hilo (IDs de usuario en crudo; pagina hasta ~2000) |
get_user_info | workspace, user_id | Resuelve un ID de usuario a un nombre visible |
list_workspaces | — | Lista los espacios de trabajo con credenciales guardadas |
get_credentials | workspace | Comprueba si existen credenciales (nunca expone los tokens) |
auth_start | workspace? | Abre Slack y devuelve instrucciones para extraer el token |
auth_complete | workspace, token, cookie | Valida y guarda las credenciales |
delete_credentials | workspace | Elimina las credenciales guardadas |
load_slack_context es la herramienta alrededor de la cual diseñé todo: dale un canal y un hilo, y devuelve la conversación completa con cada usuario resuelto a un nombre visible, formateada como markdown — exactamente lo que un LLM quiere leer. Sin IDs U01ABCD en crudo, sin sopa de JSON.
📅
start_fromacepta una fechaYYYY-MM-DD— solo se devuelven los mensajes en esa fecha o posteriores. Funciona ensearch_messages,load_threadyload_slack_context.
Comandos de la CLI
Todo lo que hace el servidor, slack-cli lo expone directamente — útil para autenticación y para scripting:
| Comando | Parámetros | Descripción |
|---|---|---|
auth | [workspace] | Autenticación interactiva — abre el navegador, pide token + cookie |
auth-start | [workspace] | Imprime instrucciones de extracción con DevTools sin guardar |
auth-complete | <workspace> --token --cookie | Guarda las credenciales sin interacción |
list-workspaces | — | Lista todos los nombres de espacios de trabajo guardados |
get-credentials | <workspace> | Muestra si el token + cookie están presentes |
test-creds | [workspace] | Valida las credenciales guardadas contra auth.test de Slack |
remove-creds | [workspace] | Elimina las credenciales guardadas de un espacio de trabajo |
show-creds | — | Imprime la ruta al archivo de credenciales |
Autenticación sin una app de Slack
Esta es la parte que lo hace realmente usable. slack-cli se autentica con un token de sesión de navegador (xoxc-…) más una cookie (xoxd-…) — sin necesidad de registrar una app de Slack, sin aprobación de administrador, sin scopes de OAuth que suplicar. Inicias sesión en el espacio de trabajo que ya usas, extraes el par una vez, y listo.
slack-cli auth acme # interactive — opens the browser, prompts for token + cookie
# or, non-interactively:
export SLACK_MCP_PASSPHRASE=your-passphrase-here
slack-cli auth-complete acme --token xoxc-... --cookie xoxd-...
Las credenciales están cifradas en reposo con una passphrase leída de SLACK_MCP_PASSPHRASE (o un prompt interactivo). La passphrase que las guardó debe coincidir con la que las lee — el servidor MCP usa la misma variable de entorno, así que el agente descifra y nunca ve los tokens en crudo en una transcripción.
Configuración
Prerrequisitos
- Go 1.26+ — para compilar o hacer
go install slack-clien tuPATH(o apunta a él conSLACK_CLI_PATH=/abs/path/to/slack-cli) — es el binario complementario que guarda las credenciales y llama a Slack
Instalación
# the CLI engine
go install github.com/artschekoff/slack-cli/cmd/slack-cli@latest
# the MCP server
go install github.com/artschekoff/slack-mcp/cmd/slack-mcp@latest
Ambos también se compilan desde el código fuente con git clone … && make install.
Conéctalo a tu cliente MCP
Añade una entrada de servidor stdio — la passphrase va en env para que las credenciales se descifren en tiempo de ejecución:
{
"mcpServers": {
"slack": {
"type": "stdio",
"command": "slack-mcp",
"env": {
"SLACK_MCP_PASSPHRASE": "your-passphrase"
}
}
}
}
O con la CLI de Claude Code:
claude mcp add slack --env SLACK_MCP_PASSPHRASE=your-passphrase -- slack-mcp
Por qué solo lectura, y por qué dividir el binario
Deliberadamente limité esto a lectura. Un agente que puede publicar en Slack en tu nombre es un perfil de riesgo distinto y más inquietante; un agente que puede extraer el contexto detrás de un ticket simplemente es útil. Mantenerlo de solo lectura significa que puedes dárselo a tu asistente sin preocuparte de que envíe un mensaje a un canal.
Separar la CLI del servidor MCP sigue el mismo principio detrás de mis otras herramientas MCP — poner el trabajo real en un binario maduro y bien probado, y luego envolver exactamente las operaciones que un agente necesita en una capa MCP delgada. Las credenciales se mantienen cifradas, los tokens nunca llegan a la transcripción, y el mismo motor sirve tanto a tu shell como a tu asistente de IA.
Ambos proyectos están abiertos en GitHub — slack-mcp y slack-cli — Go puro, corriendo sobre stdio. Issues y pull requests bienvenidos.
Disponible para colaboración por contrato
Estoy disponible para colaborar por contrato. Si tiene una idea de proyecto interesante, reserve una llamada por Calendly.
Agenda una llamada de 30 min