HandMirrorMcp

Un servidor del Protocolo de Contexto de Modelo (MCP) para la inspección de ensamblados .NET y paquetes NuGet

Documentación

HandMirrorMcp Logo

GitHub Stars GitHub Forks GitHub Issues NuGet Version NuGet Downloads CI Status CD Status License GitHub Sponsors

Servidor MCP HandMirror

Un servidor de Protocolo de Contexto de Modelo (MCP) para la inspección de ensamblados .NET y paquetes NuGet. HandMirror ayuda a los agentes de codificación de IA a comprender las API de .NET con precisión y resolver errores de compilación al proporcionar acceso directo a los metadatos de ensamblados y la información de paquetes NuGet.

🎯 Propósito

Los asistentes de codificación de IA a menudo alucinan o adivinan detalles de API, lo que provoca errores de compilación y iteraciones de desarrollo desperdiciadas. HandMirror resuelve esto al:

  • Proporcionar información de API precisa y específica de la versión directamente desde los ensamblados
  • Permitir la verificación de firmas de métodos, tipos y espacios de nombres antes de escribir código
  • Ayudar a diagnosticar y corregir errores de compilación de .NET rápidamente
  • Apoyar el análisis de dependencias de interoperabilidad nativa (P/Invoke, COM)

✨ Características

Inspección de Ensamblados

  • inspect_assembly - Análisis completo de todos los tipos públicos, miembros y atributos con documentación XML
  • list_namespaces - Listar todos los espacios de nombres en un ensamblado
  • get_type_info - Obtener información detallada sobre un tipo específico

Exploración de Paquetes NuGet

  • search_nuget_packages - Buscar paquetes por palabra clave
  • get_nuget_package_info - Obtener metadatos del paquete y dependencias
  • get_nuget_package_versions - Listar todas las versiones disponibles
  • inspect_nuget_package - Analizar ensamblados en un paquete
  • inspect_nuget_package_type - Obtener información detallada de tipos desde un paquete
  • list_nuget_sources - Listar fuentes de paquetes NuGet configuradas
  • clear_nuget_cache - Limpiar la caché local de paquetes NuGet
  • get_nuget_vulnerabilities - Verificar vulnerabilidades de seguridad conocidas
  • inspect_nupkg_contents - Inspeccionar el contenido de un archivo .nupkg
  • extract_nupkg_file - Extraer archivos específicos de un .nupkg

Análisis de Interoperabilidad Nativa

  • inspect_native_dependencies - Encontrar tipos P/Invoke (DllImport/LibraryImport) y COM en un ensamblado

Análisis de Proyectos

  • analyze_csproj - Analizar archivos de proyecto .NET e identificar problemas
  • analyze_solution - Analizar archivos de solución
  • explain_build_error - Obtener explicaciones para errores de compilación comunes
  • analyze_file_based_app - Analizar aplicaciones basadas en archivos
  • analyze_config_file - Analizar archivos de configuración
  • analyze_packages_config - Analizar archivos packages.config

Información del Sistema

  • get_system_info - Obtener información del sistema (SO, runtime .NET, hardware)
  • get_dotnet_info - Obtener información detallada de la instalación de .NET

📋 Requisitos Previos

  • .NET 8.0 SDK o posterior
  • Cliente compatible con MCP (por ejemplo, Claude Desktop, VS Code con Copilot)

🚀 Instalación

Compilar desde el Código Fuente

git clone https://github.com/rkttu/HandMirrorMcp.git
cd HandMirrorMcp
dotnet build

Ejecutar el Servidor

dotnet run --project HandMirrorMcp

⚙️ Configuración

Claude Desktop

Agrega lo siguiente a tu archivo de configuración de Claude Desktop:

Windows: %APPDATA%\Claude\claude_desktop_config.json macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "handmirror": {
      "command": "dotnet",
      "args": ["run", "--project", "C:\\path\\to\\HandMirrorMcp"]
    }
  }
}

O si has compilado el proyecto:

{
  "mcpServers": {
    "handmirror": {
      "command": "C:\\path\\to\\HandMirrorMcp\\bin\\Debug\\net8.0\\HandMirrorMcp.exe"
    }
  }
}

VS Code con GitHub Copilot

Agrega a tu configuración de VS Code o configuración del espacio de trabajo:

{
  "servers": {
    "handmirror": {
      "command": "dotnet",
      "args": ["run", "--project", "/path/to/HandMirrorMcp"]
    }
  }
}

📖 Ejemplos de Uso

Verificar API Antes de Escribir Código

Cuando necesites usar una API de .NET desconocida:

Use inspect_nuget_package_type to show me the HttpClient class from System.Net.Http

Diagnosticar Errores de Compilación

Cuando encuentres errores como CS0246, CS1061 o CS7036:

I'm getting CS1061 error. Use inspect_nuget_package to check the Newtonsoft.Json package 
and show me the available methods on JObject

Explorar Paquetes NuGet

Search for packages related to "json serialization" and show me the top results

Verificar Vulnerabilidades de Paquetes

Check if there are any known vulnerabilities in System.Text.Json version 6.0.0

Analizar Problemas de Proyectos

Analyze my .csproj file at C:\MyProject\MyProject.csproj and identify any issues

🏗️ Arquitectura

HandMirrorMcp/
├── Constants/
│   └── Emoji.cs              # Unicode emoji constants for output formatting
├── Prompts/
│   ├── AssemblyInspectorPrompts.cs
│   └── NuGetInspectorPrompts.cs
├── Services/
│   ├── NuGetService.cs       # NuGet package operations
│   ├── PeAnalyzerService.cs  # PE file analysis
│   ├── RepositoryService.cs  # Repository operations
│   └── XmlDocService.cs      # XML documentation parsing
├── Tools/
│   ├── AssemblyInspectorTool.cs
│   ├── InteropInspectorTool.cs
│   ├── NuGetInspectorTool.cs
│   ├── ProjectAnalyzerTool.cs
│   └── SystemInfoTool.cs
└── Program.cs

🧪 Pruebas

Ejecuta el conjunto de pruebas:

dotnet test

Las pruebas usan MSTest y se conectan al servidor MCP real para pruebas de integración.

📦 Dependencias

🤝 Contribuciones

¡Las contribuciones son bienvenidas! No dudes en enviar una Solicitud de Extracción (Pull Request).

  1. Haz un fork del repositorio
  2. Crea tu rama de características (git checkout -b feature/AmazingFeature)
  3. Realiza tus cambios (git commit -m 'Add some AmazingFeature')
  4. Empuja a la rama (git push origin feature/AmazingFeature)
  5. Abre una Solicitud de Extracción

📄 Licencia

Este proyecto está licenciado bajo la Licencia Apache 2.0 - consulta el archivo LICENSE para más detalles.

🙏 Agradecimientos

  • Model Context Protocol por la especificación MCP
  • Mono.Cecil por las capacidades de inspección de ensamblados .NET
  • La comunidad .NET por la inspiración continua

💖 Apoya Este Proyecto

Si encuentras HandMirror útil en tu flujo de trabajo de desarrollo, ¡considera apoyar el proyecto!

Sponsor on GitHub

Tu patrocinio ayuda a mantener y mejorar este proyecto, agregar nuevas funciones y mantenerlo gratuito para todos. ¡Cada contribución, por pequeña que sea, es muy apreciada! ⭐


HandMirror - Mira antes de codificar 🪞