android-mcp-toolkit

Una colección creciente de herramientas MCP para el desarrollo de Android. Actualmente incluye un convertidor determinista de Figma-SVG a Android-XML, con planes para análisis de Gradle, gestión de recursos y herramientas de integración ADB.

Documentación

Android MCP Toolkit para agentes de IA

Pequeño servidor MCP con tres herramientas:

  • Conversión rápida de SVG a Android VectorDrawable (en caché, archivo o en línea).
  • Lector de adb logcat con filtros de paquete/pid/tag para un triaje rápido de fallos.
  • Estimador de diferencia de longitud de traducción para señalar deltas de longitud riesgosos antes de que se rompa el diseño.

Por qué existe esto

La misión: llevar Android nativo a la era de los agentes de IA

Mientras el ecosistema de IA florece con herramientas centradas en la web, el desarrollo de Android a menudo se siente rezagado. Este servidor MCP es mi respuesta a esa brecha: un puente dedicado que conecta a los agentes de IA directamente con la cadena de herramientas de Android.

⚡ Conversión de activos sin fricción: convierte SVGs a VectorDrawables al instante sin la sobrecarga de lanzar Android Studio.

🔍 Acceso directo a diagnósticos: permite a los agentes extraer, filtrar y analizar flujos de adb logcat (por paquete, PID o tag) en tiempo real.

🤖 Arquitectura nativa para agentes: entrega salidas estructuradas y scriptables que los LLMs pueden analizar y sobre las que pueden actuar de manera eficiente.

🚀 Construido para la extensibilidad: una base sólida diseñada para crecer, allanando el camino para futuras utilidades como ayudantes de bitmap y validación de activos.

Ideas de emparejamiento

  • Figma MCP: toma SVGs de los diseños, pásalos a convert-svg-to-android-drawable para obtener XML para recursos de Android.
  • Depuración: mientras se ejecuta la aplicación, llama a read-adb-logcat con el nombre del paquete o la etiqueta para capturar fallos y registros filtrados sin salir del cliente MCP.

Vistas previas

SVG a VectorDrawable

  • Solicitud de Figma → extracción de SVG
    Figma request via MCP
  • Vista previa de conversión de bandera (individual)
    Flag conversion preview
  • Revisión de banderas en lote (lado a lado)
    Batch flag review
  • Ejecución en lote vía MCP (consola)
    Batch run via MCP

Herramienta ADB logcat

  • Solicitud de captura de fallos (entradas + filtros)
    Crash logcat prompt
  • Vista previa de respuesta (logcat resumido)
    Response gap prompt

Herramientas actuales

  • convert-svg-to-android-drawable

    • Entradas: svg (en línea) o svgPath (ruta de archivo). Opcional: outputPath, floatPrecision (por defecto 2), fillBlack (por defecto falso), xmlTag (por defecto falso), tint, cache (por defecto verdadero).
    • Salida: texto XML de VectorDrawable; también escribe en disco cuando se proporciona outputPath.
    • Rendimiento: caché LRU (32 entradas) claveada por SVG + opciones, además de reutilización rápida en la sesión.
    • Convertidor: fork incluido en vendor/svg2vectordrawable con correcciones para rgb()/rgba(), hsl()/hsla() y colores nombrados. Licencia upstream: vendor/svg2vectordrawable/LICENSE (MIT).
  • manage-logcat

    • Entradas:
      • action: read (por defecto), crash, anr o clear.
      • packageName: Opcional. Resuelve el PID mediante adb shell pidof.
      • pid: Opcional. PID explícito.
      • tag: Opcional. Filtrar por tag (p. ej., MyApp).
      • priority: V, D, I, W, E, F, S (por defecto V).
      • maxLines: Número de líneas finales (por defecto 200, máximo 2000).
      • timeoutMs: Por defecto 5000.
    • Comportamiento:
      • read: Obtiene la cola de logcat.
      • crash: Obtiene logcat -b crash.
      • anr: Obtiene registros recientes de ActivityManager ANR + cola de /data/anr/traces.txt.
      • clear: limpia los búferes de logcat.
  • get-current-activity

    • Entradas: timeoutMs (por defecto 5000, máximo 15000).
    • Comportamiento: inspecciona dumpsys window para encontrar la aplicación/ventana enfocada actualmente. Útil para verificar el estado.
  • dump-ui-hierarchy

    • Entradas: timeoutMs (por defecto 10000).
    • Comportamiento: captura la jerarquía de UI actual como XML mediante uiautomator.
  • take-screenshot

    • Entradas: outputPath (obligatorio), timeoutMs.
    • Comportamiento: guarda la captura de pantalla del dispositivo en un archivo local.
  • inject-input

    • Entradas: command (tap, text, swipe, keyevent, back, home), args (matriz), timeoutMs.
    • Opcional: elementId o elementText (encuentra el centro del elemento y lo toca).
    • Comportamiento: simula la interacción del usuario adecuada para probar flujos.
  • estimate-text-length-difference

    • Entradas: sourceText (original), translatedText (para comparar), tolerancePercent (por defecto 30, máximo 500).
    • Comportamiento: mide la longitud de grafemas de ambas cadenas, calcula el cambio porcentual e informa si supera la tolerancia (útil para detectar aumentos de longitud de traducción que podrían romper los diseños).

Hoja de ruta (planificada)

  • Herramientas MCP adicionales para activos de Android (p. ej., conversiones por lotes, validaciones, optimizadores).
  • Solicitudes de recursos opcionales para drawables/plantillas comunes de Android.

Inicio rápido

  • npm install
  • npm run build
  • node dist/index.js (servidor MCP stdio)

Ejecutar mediante npx

  • Global: npx android-mcp-toolkit

Uso en Cursor (configuración de MCP)

Añade a la configuración JSON de tu Cursor:

{
  "mcpServers": {
    "android-mcp-toolkit": {
      "command": "npx",
      "args": [
        "-y",
        "android-mcp-toolkit"
      ]
    }
  }
}

La llamada a npx descarga el paquete publicado; no se requiere ruta local.

Instalación rápida mediante enlace profundo de Cursor:

  • cursor://anysphere.cursor-deeplink/mcp/install?name=android-mcp-toolkit&config=eyJjb21tYW5kIjoibnB4IC15IGFuZHJvaWQtbWNwLXRvb2xraXQifQ%3D%3D

Ejemplos

  • Entrada SVG: sample_svg.svg
  • Salida VectorDrawable: examples/sample_svg.xml

Notas

  • Transporte: stdio mediante @modelcontextprotocol/sdk.
  • Las dependencias base se mantienen mínimas; todo lo necesario para convertir SVGs está incluido/incorporado.

Contacto