HandMirrorMcp

Um servidor Model Context Protocol (MCP) para inspeção de assemblies .NET e pacotes NuGet

Documentação

HandMirrorMcp Logo

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

HandMirror MCP Server

Um servidor Model Context Protocol (MCP) para inspeção de assemblies .NET e pacotes NuGet. O HandMirror ajuda agentes de codificação de IA a entender APIs .NET com precisão e resolver erros de build, fornecendo acesso direto a metadados de assemblies e informações de pacotes NuGet.

🎯 Propósito

Assistentes de codificação de IA frequentemente alucinam ou adivinham detalhes de APIs, levando a erros de build e iterações de desenvolvimento desperdiçadas. O HandMirror resolve isso ao:

  • Fornecer informações de API precisas e específicas por versão diretamente dos assemblies
  • Permitir verificação de assinaturas de métodos, tipos e namespaces antes de escrever código
  • Ajudar a diagnosticar e corrigir erros de build .NET rapidamente
  • Suportar análise de dependências de interop nativo (P/Invoke, COM)

✨ Recursos

Inspeção de Assembly

  • inspect_assembly - Análise completa de todos os tipos, membros e atributos públicos com documentação XML
  • list_namespaces - Listar todos os namespaces em um assembly
  • get_type_info - Obter informações detalhadas sobre um tipo específico

Exploração de Pacotes NuGet

  • search_nuget_packages - Pesquisar pacotes por palavra-chave
  • get_nuget_package_info - Obter metadados e dependências do pacote
  • get_nuget_package_versions - Listar todas as versões disponíveis
  • inspect_nuget_package - Analisar assemblies em um pacote
  • inspect_nuget_package_type - Obter informações detalhadas de tipos de um pacote
  • list_nuget_sources - Listar fontes de pacotes NuGet configuradas
  • clear_nuget_cache - Limpar o cache local de pacotes NuGet
  • get_nuget_vulnerabilities - Verificar vulnerabilidades de segurança conhecidas
  • inspect_nupkg_contents - Inspecionar o conteúdo de um arquivo .nupkg
  • extract_nupkg_file - Extrair arquivos específicos de um .nupkg

Análise de Interop Nativo

  • inspect_native_dependencies - Encontrar tipos P/Invoke (DllImport/LibraryImport) e COM em um assembly

Análise de Projeto

  • analyze_csproj - Analisar arquivos de projeto .NET e identificar problemas
  • analyze_solution - Analisar arquivos de solução
  • explain_build_error - Obter explicações para erros de build comuns
  • analyze_file_based_app - Analisar aplicativos baseados em arquivos
  • analyze_config_file - Analisar arquivos de configuração
  • analyze_packages_config - Analisar arquivos packages.config

Informações do Sistema

  • get_system_info - Obter informações do sistema (SO, runtime .NET, hardware)
  • get_dotnet_info - Obter informações detalhadas da instalação do .NET

📋 Pré-requisitos

  • .NET 8.0 SDK ou posterior
  • Cliente compatível com MCP (ex.: Claude Desktop, VS Code com Copilot)

🚀 Instalação

Compilar a partir do Código-Fonte

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

Executar o Servidor

dotnet run --project HandMirrorMcp

⚙️ Configuração

Claude Desktop

Adicione o seguinte ao seu arquivo de configuração do 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"]
    }
  }
}

Ou se você compilou o projeto:

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

VS Code com GitHub Copilot

Adicione às configurações do VS Code ou às configurações do workspace:

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

📖 Exemplos de Uso

Verificar API Antes de Escrever Código

Quando você precisar usar uma API .NET desconhecida:

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

Diagnosticar Erros de Build

Quando você encontrar erros como CS0246, CS1061 ou 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 Pacotes NuGet

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

Verificar Vulnerabilidades de Pacotes

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

Analisar Problemas do Projeto

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

🏗️ Arquitetura

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

🧪 Testes

Execute a suíte de testes:

dotnet test

Os testes usam MSTest e se conectam ao servidor MCP real para testes de integração.

📦 Dependências

🤝 Contribuindo

Contribuições são bem-vindas! Sinta-se à vontade para enviar um Pull Request.

  1. Faça um fork do repositório
  2. Crie sua branch de feature (git checkout -b feature/AmazingFeature)
  3. Faça commit das suas alterações (git commit -m 'Add some AmazingFeature')
  4. Envie para a branch (git push origin feature/AmazingFeature)
  5. Abra um Pull Request

📄 Licença

Este projeto está licenciado sob a Apache License 2.0 - consulte o arquivo LICENSE para obter detalhes.

🙏 Agradecimentos

  • Model Context Protocol pela especificação do MCP
  • Mono.Cecil pelas capacidades de inspeção de assemblies .NET
  • A comunidade .NET pela inspiração contínua

💖 Apoie Este Projeto

Se você achar o HandMirror útil no seu fluxo de trabalho de desenvolvimento, considere apoiar o projeto!

Sponsor on GitHub

Seu patrocínio ajuda a manter e melhorar este projeto, adicionar novos recursos e mantê-lo gratuito para todos. Cada contribuição, por menor que seja, é muito apreciada! ⭐


HandMirror - Olhe antes de codificar 🪞