HandMirrorMcp
Um servidor Model Context Protocol (MCP) para inspeção de assemblies .NET e pacotes NuGet
Documentação
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 XMLlist_namespaces- Listar todos os namespaces em um assemblyget_type_info- Obter informações detalhadas sobre um tipo específico
Exploração de Pacotes NuGet
search_nuget_packages- Pesquisar pacotes por palavra-chaveget_nuget_package_info- Obter metadados e dependências do pacoteget_nuget_package_versions- Listar todas as versões disponíveisinspect_nuget_package- Analisar assemblies em um pacoteinspect_nuget_package_type- Obter informações detalhadas de tipos de um pacotelist_nuget_sources- Listar fontes de pacotes NuGet configuradasclear_nuget_cache- Limpar o cache local de pacotes NuGetget_nuget_vulnerabilities- Verificar vulnerabilidades de segurança conhecidasinspect_nupkg_contents- Inspecionar o conteúdo de um arquivo .nupkgextract_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 problemasanalyze_solution- Analisar arquivos de soluçãoexplain_build_error- Obter explicações para erros de build comunsanalyze_file_based_app- Analisar aplicativos baseados em arquivosanalyze_config_file- Analisar arquivos de configuraçãoanalyze_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
- ModelContextProtocol - Implementação do servidor MCP
- Microsoft.Extensions.Hosting - Abstrações de hospedagem .NET
- Mono.Cecil - Inspeção de assemblies .NET
- NuGet.Protocol - Operações de pacotes NuGet
🤝 Contribuindo
Contribuições são bem-vindas! Sinta-se à vontade para enviar um Pull Request.
- Faça um fork do repositório
- Crie sua branch de feature (
git checkout -b feature/AmazingFeature) - Faça commit das suas alterações (
git commit -m 'Add some AmazingFeature') - Envie para a branch (
git push origin feature/AmazingFeature) - 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!
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 🪞