Xcode Diagnostics MCP Plugin

by leftspin
Verified

local-only server

The server can only run on the client’s local machine because it depends on local resources.

Integrations

  • Enables installation of the plugin directly from its GitHub repository.

  • Interfaces with macOS to access Xcode DerivedData directories and retrieve build logs for diagnostic analysis.

  • Allows installation of the plugin directly from the Python Package Index using pip.

Complemento MCP de diagnóstico de Xcode

Un complemento MCP (Protocolo de control de modelos) para extraer y ver errores y advertencias de los registros de compilación de Xcode.

Descripción general

Este complemento implementa la especificación del Protocolo de Control de Modelos (MCP) para proporcionar funciones de diagnóstico de Xcode a cualquier asistente de IA compatible. Se conecta al sistema de compilación de Xcode para extraer, analizar y mostrar diagnósticos (errores y advertencias) de tus proyectos Swift. Ayuda a los asistentes de IA a identificar rápidamente problemas en tu código sin tener que buscar manualmente en los registros de compilación.

Tenga en cuenta que, dado que esto funciona a nivel de registro, Xcode ya debe haber intentado una compilación antes de ejecutar esta herramienta.

Prerrequisitos

  • sistema operativo macOS
  • Xcode instalado
  • Python 3.6+

Instalación

Instalación desde PyPI

La forma más sencilla de instalar el complemento Xcode Diagnostics MCP:

pip install mcp-xcode-diagnostics

Instalación desde GitHub

Puedes instalarlo directamente desde GitHub:

pip install git+https://github.com/leftspin/mcp-xcode-diagnostics.git

Instalación desde la fuente

Para instalar desde la fuente:

  1. Clonar o descargar este repositorio
  2. Instalar el complemento usando pip:
    cd mcp-xcode-diagnostics pip install .

El complemento ahora se puede utilizar con cualquier cliente compatible con MCP.

Características

  • Enumera todos los proyectos de Xcode que tienen registros de compilación en DerivedData
  • Extrae errores y advertencias del último registro de compilación de un proyecto específico
  • Analiza diagnósticos complejos, incluidas notas asociadas y sugerencias de solución.
  • Proporciona información detallada sobre cada problema, incluidas rutas de archivos, números de línea y mensajes de error.
  • Optimizado para capturar advertencias relacionadas con la concurrencia de Swift

Tipos de diagnóstico admitidos

El complemento puede detectar y mostrar varios tipos de diagnósticos de Xcode, incluidos:

Errores

  • Errores de sintaxis (por ejemplo, "se esperaba '{'" o "se esperaba expresión")
  • Errores de tipo (por ejemplo, "no se puede convertir el valor del tipo X al tipo de argumento esperado Y")
  • Identificadores no resueltos e importaciones faltantes
  • Errores de conformidad del protocolo
  • Fallos en la inferencia de parámetros genéricos
  • Violaciones del control de acceso

Advertencias

  • Variables, constantes y resultados no utilizados
  • Conversiones implícitas que pueden perder precisión
  • Código redundante o expresiones innecesarias
  • Advertencias de desuso
  • Problemas de interpolación de cadenas
  • Advertencias de concurrencia de Swift, que incluyen:
    • Advertencias globales compartidas y no aisladas sobre estados mutables
    • Advertencias de aislamiento del actor principal
    • Advertencias de concurrencia de conformidad con el protocolo
    • Violaciones del aislamiento del actor
    • Advertencias de compatibilidad del modo de lenguaje Swift 6

Notas y sugerencias para solucionar problemas

  • Notas asociadas que proporcionan contexto adicional para errores y advertencias
  • Sugerencias de solución que proponen cambios de código para resolver problemas
  • Fragmentos de código que muestran el código problemático

Limitaciones

  • Es posible que los formatos binarios/serializados en los registros de tiempo de ejecución no se analicen por completo
  • Es posible que no se reconozcan algunos formatos de diagnóstico altamente especializados
  • Los registros de compilación muy grandes pueden truncarse
  • Es posible que los diagnósticos personalizados específicos del proyecto no estén categorizados correctamente

Herramientas MCP

El complemento proporciona dos herramientas MCP principales:

obtener_proyectos_xcode

Enumera todos los proyectos de Xcode con registros de compilación en el directorio DerivedData.

Parámetros : Ninguno

obtener_diagnósticos_del_proyecto

Obtiene información de diagnóstico del último registro de compilación de un proyecto específico.

Parámetros :

  • project_dir_name : Nombre del directorio del proyecto en DerivedData (por ejemplo, 'ProjectName-hash')
  • include_warnings : si se deben incluir advertencias además de errores (valor predeterminado: Verdadero)

Información de depuración

Para fines de depuración, el complemento guarda la salida del registro sin procesar en:

  • /tmp/xcode-mcp-debug.log - Registros principales de la aplicación
  • /tmp/xcode-diagnostic-raw.log : salida sin procesar de los registros de actividad de Xcode

Ejemplo de salida

{ "success": true, "log_file": "/path/to/build.xcactivitylog", "timestamp": "2025-03-11T12:34:56.789", "errors": [ { "type": "error", "message": "use of unresolved identifier 'NonExistentType'", "file_path": "/path/to/MyFile.swift", "line_number": 42, "column": 15, "code": " let x: NonExistentType = value", "notes": [] } ], "warnings": [ { "type": "warning", "message": "static property 'sharedInstance' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode", "file_path": "/path/to/SharedManager.swift", "line_number": 10, "column": 16, "code": " static var sharedInstance: SharedManager?", "notes": [ { "type": "note", "message": "convert 'sharedInstance' to a 'let' constant to make 'Sendable' shared state immutable", "file_path": "/path/to/SharedManager.swift", "line_number": 10, "column": 16 } ] } ], "error_count": 1, "warning_count": 1 }

Pruebas

El complemento incluye un conjunto de pruebas para verificar la funcionalidad de análisis:

# Run all tests python -m unittest test_xcode_diagnostics.py

Licencia

Este proyecto está disponible bajo la licencia MIT.

-
security - not tested
A
license - permissive license
-
quality - not tested

Se conecta al sistema de compilación de Xcode para extraer, analizar y mostrar errores y advertencias de sus proyectos Swift, lo que ayuda a los asistentes de IA a identificar rápidamente problemas de código sin tener que buscar manualmente en los registros de compilación.

  1. Overview
    1. Prerequisites
      1. Installation
        1. Installing from PyPI
        2. Installing from GitHub
        3. Installing from source
      2. Features
        1. Supported Diagnostic Types
          1. Errors
          2. Warnings
          3. Notes and Fix-it Suggestions
        2. Limitations
          1. MCP Tools
            1. get_xcode_projects
            2. get_project_diagnostics
          2. Debug Information
            1. Example Output
              1. Testing
                1. License
                  ID: mavqfwluan