HandMirrorMcp
Un servidor del Protocolo de Contexto de Modelo (MCP) para la inspección de ensamblados .NET y paquetes NuGet
Documentación
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 XMLlist_namespaces- Listar todos los espacios de nombres en un ensambladoget_type_info- Obtener información detallada sobre un tipo específico
Exploración de Paquetes NuGet
search_nuget_packages- Buscar paquetes por palabra claveget_nuget_package_info- Obtener metadatos del paquete y dependenciasget_nuget_package_versions- Listar todas las versiones disponiblesinspect_nuget_package- Analizar ensamblados en un paqueteinspect_nuget_package_type- Obtener información detallada de tipos desde un paquetelist_nuget_sources- Listar fuentes de paquetes NuGet configuradasclear_nuget_cache- Limpiar la caché local de paquetes NuGetget_nuget_vulnerabilities- Verificar vulnerabilidades de seguridad conocidasinspect_nupkg_contents- Inspeccionar el contenido de un archivo .nupkgextract_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 problemasanalyze_solution- Analizar archivos de soluciónexplain_build_error- Obtener explicaciones para errores de compilación comunesanalyze_file_based_app- Analizar aplicaciones basadas en archivosanalyze_config_file- Analizar archivos de configuraciónanalyze_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
- ModelContextProtocol - Implementación del servidor MCP
- Microsoft.Extensions.Hosting - Abstracciones de hosting de .NET
- Mono.Cecil - Inspección de ensamblados .NET
- NuGet.Protocol - Operaciones de paquetes NuGet
🤝 Contribuciones
¡Las contribuciones son bienvenidas! No dudes en enviar una Solicitud de Extracción (Pull Request).
- Haz un fork del repositorio
- Crea tu rama de características (
git checkout -b feature/AmazingFeature) - Realiza tus cambios (
git commit -m 'Add some AmazingFeature') - Empuja a la rama (
git push origin feature/AmazingFeature) - 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!
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 🪞