🛰️ Astrax
A.S.T.R.A.X. — Agentic System Telemetry, Realtime Automation & X-control
Servidor MCP (Model Context Protocol) en Python que le da a tu IA ojos y manos sobre tu pantalla: ver, hacer clic, escribir y ejecutar tareas de varios pasos sin saturar el contexto.
Compatible con Claude Desktop, Roo Code, Cline, Cursor, Windsurf, Gemini CLI, OpenCode y cualquier cliente MCP con transporte stdio. Funciona con modelos locales (Ollama) y APIs comerciales (Claude, Gemini…).
📺 Tutorial en YouTube: @AstraxOf 💬 Contacto en Telegram: @RufusOficial
⚡ Instalación a 1 clic
Necesitas uv (instala Python y dependencias solo):
# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows (PowerShell)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
Después, un solo comando detecta tu sistema operativo y tus clientes MCP, y registra Astrax en ellos:
uvx --from git+https://github.com/AstraxOf/astrax-mcp.git astrax-install --yes
Reinicia tu cliente (en Claude Desktop, ciérralo por completo) y listo.
Cuando el paquete esté publicado en PyPI bastará
uvx astrax-mcppara ejecutar el servidor yuvx --from astrax-mcp astrax-install --yespara instalarlo.
🤖 Instrucción para IAs (agentes con acceso a terminal)
Si eres una IA y el usuario te pide instalar Astrax, ejecuta exactamente esto y pídele que reinicie su cliente MCP. No edites archivos JSON a mano.
uvx --from git+https://github.com/AstraxOf/astrax-mcp.git astrax-install --yes
Variantes útiles:
| Comando | Qué hace |
|---|---|
astrax-install --list |
Muestra clientes detectados y si Astrax ya está instalado |
astrax-install --client claude-desktop |
Instala solo en un cliente (repetible). IDs: claude-desktop, roo-code, cline, cursor, windsurf, gemini-cli |
astrax-install --auto-approve |
Roo Code / Cline: añade alwaysAllow a todas las herramientas excepto astrax_tarea_autorizar (ver Permisos) |
astrax-install --dry-run |
Muestra qué haría sin escribir nada |
astrax-install --uninstall |
Elimina solo la entrada astrax |
astrax-install --source local |
Usa el Python actual en vez de uvx |
El instalador solo toca la clave astrax dentro de mcpServers: conserva tus otros servidores, crea una copia .astrax-bak-<fecha> antes de escribir, guarda de forma atómica y no modifica archivos con JSON inválido.
Claude Code: claude mcp add astrax -- uvx --from git+https://github.com/AstraxOf/astrax-mcp.git astrax-mcp
Instalación desde un clon del repositorio
git clone https://github.com/AstraxOf/astrax-mcp.git
cd astrax-mcp
python install.py # asistente interactivo (equivale a astrax-install)
🧠 Motor paso a paso por estado temporal
Los modelos ligeros (Ollama) se saturan y alucinan cuando el contexto crece con historial y capturas de pantalla viejas. Astrax lo evita aislando el contexto en un archivo de estado local: .astrax_task_state.json.
- Desglose. Ante una petición compleja ("Redacta una carta para X con mis datos, prepárala y envíala a tal correo"), la IA llama a
astrax_tarea_creary guarda el plan como pasos ordenados. - Lectura directa. Para cada paso, la IA llama a
astrax_tarea_estado: recibe solo el paso actual, el siguiente y los datos guardados (un JSON de unas pocas líneas) en lugar de releer toda la conversación, el prompt inicial o capturas pasadas. - Caché de salidas. Al cerrar un paso con
astrax_tarea_completar_paso, la IA guarda lo relevante, por ejemplo{"pdf_generado": "/rutas/carta.pdf"}. El paso siguiente (adjuntar al correo) consulta solo ese dato y usa la ruta exacta, sin adivinarla. - Cierre. Al terminar el último paso la tarea queda
completada, los permisos se revocan y se borran las capturas temporales.astrax_tarea_limpiarelimina el archivo.
Detalles que protegen al modelo:
- Guarda rutas, no contenidos: cada dato admite hasta 4000 caracteres; si es más, la herramienta pide guardarlo en un archivo y almacenar la ruta.
- Anti-bucles: un paso que falla 3 veces pasa a
bloqueaday la IA debe parar y explicar al usuario qué ocurrió. - Sin imágenes pesadas en el historial: las acciones devuelven texto corto; solo
astrax_ver_pantalladevuelve imagen, cuando hace falta verificar. - Ubicación: carpeta privada del usuario (
~/.cache/astrax,~/Library/Caches/astraxo%LOCALAPPDATA%\astrax), con permisos restringidos. Cámbiala conASTRAX_HOME.
🔐 Permisos: una sola autorización por tarea
Antes de ejecutar nada, la IA declara todo lo que necesitará la tarea completa en astrax_tarea_crear:
| Permiso | Habilita |
|---|---|
pantalla |
astrax_ver_pantalla, astrax_capturar_pantalla |
raton_teclado |
clic, doble clic, teclas, atajos, scroll, escribir |
portapapeles |
astrax_portapapeles y escritura de texto no ASCII (ñ, tildes, emojis) |
terminal |
astrax_ejecutar_comando |
Después muestra el plan y los permisos, pide tu confirmación una sola vez y llama a astrax_tarea_autorizar. Desde ese momento puede trabajar de forma desatendida durante la sesión (60 min por defecto, ASTRAX_SESSION_MINUTES). Las herramientas de acción rechazan cualquier uso fuera de una tarea autorizada o de un permiso no solicitado.
Cómo evitar las confirmaciones por paso en tu cliente: el servidor no puede saltarse las confirmaciones que muestra el cliente. Por eso astrax-install --auto-approve (Roo Code / Cline) marca como "permitir siempre" todas las herramientas excepto astrax_tarea_autorizar: tu cliente te pregunta una vez, justo en la autorización, y no durante la ejecución. En otros clientes (p. ej. Claude Desktop) elige "Permitir siempre" en esa herramienta o en el resto cuando te lo pida.
Para volver al comportamiento anterior sin tareas ni sesiones: ASTRAX_REQUIRE_SESSION=0.
✨ ¿Qué puede hacer?
| Herramienta | Descripción |
|---|---|
astrax_tarea_crear |
Guarda el plan por pasos y los permisos que necesita la tarea completa |
astrax_tarea_autorizar |
Concede los permisos tras la confirmación del usuario |
astrax_tarea_estado |
Lee el paso actual, el siguiente y los datos guardados |
astrax_tarea_guardar |
Guarda un dato clave (rutas, ids…) |
astrax_tarea_completar_paso |
Cierra el paso, guarda salidas y devuelve el siguiente |
astrax_tarea_limpiar |
Borra el estado y las capturas temporales |
astrax_ver_pantalla |
La IA ve la pantalla: captura como imagen (marca roja en el cursor) |
astrax_capturar_pantalla |
Guarda un PNG y devuelve la ruta |
astrax_info_pantalla |
Ancho y alto de la pantalla |
astrax_clic / astrax_doble_clic |
Clic en (x, y) con validación de límites |
astrax_escribir |
Teclea texto (soporta ñ, tildes y emojis vía portapapeles) |
astrax_tecla / astrax_atajo |
Teclas sueltas y atajos (["ctrl", "t"]…) |
astrax_scroll |
Rueda del ratón arriba/abajo |
astrax_esperar |
Espera a que cargue una app o página |
astrax_portapapeles |
Lee o escribe el portapapeles |
astrax_ejecutar_comando |
Ejecuta un comando de shell con timeout y salida recortada |
Ejemplo de prompt:
"Usa Astrax: redacta una carta para Ana con mis datos, guárdala como PDF y envíala a ana@ejemplo.com con el asunto 'Propuesta'."
⚙️ Configuración manual
Si prefieres no usar el instalador, añade esto a tu mcp_settings.json (o al archivo equivalente de tu cliente):
{
"mcpServers": {
"astrax": {
"command": "uvx",
"args": ["--from", "git+https://github.com/AstraxOf/astrax-mcp.git", "astrax-mcp"]
}
}
}
En clientes de escritorio que no heredan tu
PATH, usa la ruta absoluta deuvx(which uvx/where uvx). El instalador ya lo hace por ti.
🛡️ Seguridad
Astrax controla tu ratón, teclado y (si lo autorizas) tu terminal reales. Úsalo con cabeza:
- Fail-safe activo: mueve el ratón a una esquina de la pantalla para abortar cualquier automatización.
- Permisos mínimos: la IA solo recibe los permisos que declara y que tú confirmas; se revocan al terminar o al bloquearse la tarea.
- Los clics fuera de los límites de la pantalla se rechazan.
astrax_ejecutar_comandobloquea patrones destructivos obvios (rm -rf /,mkfs,format C:,shutdown…). Es una red de seguridad contra accidentes, no un sandbox. Concedeterminalsolo si confías en la tarea y la supervisas.- Evita ejecutarlo mientras tengas abiertos datos sensibles (contraseñas, banca, etc.).
🖥️ Notas por sistema operativo
- Windows: funciona sin configuración extra.
- macOS: concede permisos de Grabación de pantalla y Accesibilidad a tu terminal o editor.
- Linux: funciona en X11 (Wayland suele bloquear captura y control). Puede hacer falta
sudo apt install python3-tk python3-dev scrot xclip.
🧩 Arquitectura
astrax-mcp/
├── pyproject.toml # entry points: astrax-mcp, astrax-install
├── install.py # atajo para quien clona el repo
├── mcp_settings.json # ejemplo (Roo Code / Cline)
├── tests/
└── src/astrax_mcp/
├── server.py # construye el servidor y registra los módulos
├── config.py # constantes, rutas y variables ASTRAX_*
├── state.py # motor del archivo de estado de tareas (sin dependencias de MCP)
├── tasks.py # herramientas MCP del gestor de tareas
├── permissions.py # verificación de permisos de sesión
├── vision.py # captura y visión de pantalla
├── control.py # ratón, teclado, scroll, esperas
├── system.py # terminal y portapapeles
├── gui.py # acceso perezoso a pyautogui + validaciones
├── utils.py # log a stderr, errores uniformes, truncado
├── compat.py # SDK MCP v1 (FastMCP) / v2 (MCPServer)
└── installer.py # wizard de instalación multiplataforma
- Basado en el SDK oficial de MCP para Python.
compat.pyusaMCPServer(v2) y recurre aFastMCP(v1.x);pyproject.tomlfijamcp<2como en la configuración original: quita el tope cuando pruebes el SDK v2. - Transporte
stdio; todos los logs van astderrpara no corromper el flujo JSON-RPC. - Las capturas se normalizan al tamaño lógico de pantalla: las coordenadas de la imagen coinciden con las del clic, incluso en HiDPI/Retina. La calidad JPEG se ajusta con
ASTRAX_JPEG_QUALITY(30-95, por defecto 65). - Tests:
pip install -e ".[dev]" && pytest
🤝 Contribuciones / Community
Astrax es Open Source y crece con la comunidad. Si quieres sumarte, eres bienvenido: puedes abrir issues, enviar pull requests, proponer ideas, probar Astrax en otros sistemas o clientes MCP y reportar errores.
- 📧 Correo de contacto: avpn497@gmail.com
- 📢 Canal oficial de Telegram: https://t.me/AstraxMCP — únete al canal para aportar, hacer preguntas o reportar problemas.
- 📺 YouTube: @AstraxOf — tutoriales y novedades
- 💬 Creador en Telegram: @RufusOficial
Si te sirvió el proyecto, deja una ⭐ en el repositorio y suscríbete al canal.
Hecho con 💙 por Rufus · @AstraxOf
Metadata
Release files for astrax-mcp 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| astrax_mcp-0.2.0.tar.gz | 24.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| astrax_mcp-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 51.9 kB
Release files / astrax_mcp-0.2.0.tar.gz
| Download URL | astrax_mcp-0.2.0.tar.gz |
|---|---|
| Size | 24.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3f4cf2d8856e3921a1a0aea6dd8fa8f7e182bfffbe997f2c20e44b6fa52a7287
|
|
BLAKE2b-256 checksum How to use checksums |
c75a1907cc2c166b860a87009a32e8955264d7c90b09fbf4b17ae29e97c1ffbd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 17, 2026.
Transparency logRelease files / astrax_mcp-0.2.0-py3-none-any.whl
| Download URL | astrax_mcp-0.2.0-py3-none-any.whl |
|---|---|
| Size | 27.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3b27564db22ad1c92a380c6844f470143ef7f84ea30c4805af38602bddd4a4c1
|
|
BLAKE2b-256 checksum How to use checksums |
fcc0c536fcc0ead153cd669e55cf21c7e5bc8638f5f3c169fa6fc6ca09d223c0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 17, 2026.
Transparency log