sharplens-mcp
SharpLensMcp
Un servidor del Protocolo de Contexto de Modelos (MCP) que proporciona 62 herramientas optimizadas para IA para el análisis semántico, navegación, refactorización y generación de código en .NET/C# utilizando Microsoft Roslyn.
Creado para agentes de codificación de IA: proporciona una comprensión del código precisa del compilador que la IA no puede inferir solo leyendo archivos fuente.
Instalación
Vía NuGet (Recomendado)
dotnet tool install -g SharpLensMcpLuego ejecute con:
sharplensVía npm
npx -y sharplens-mcpCompilar desde el código fuente
dotnet build -c Release
dotnet publish -c Release -o ./publishConfiguración de Claude Code
Instale la herramienta (elija una):
dotnet tool install -g SharpLensMcp
# or
npx -y sharplens-mcpCree
.mcp.jsonen la raíz de su proyecto:
{
"mcpServers": {
"sharplens": {
"type": "stdio",
"command": "npx",
"args": ["-y", "sharplens-mcp"],
"env": {
"DOTNET_SOLUTION_PATH": "/path/to/your/Solution.sln (or .slnx)"
}
}
}
}Reinicie Claude Code para cargar el servidor MCP
Verifique pidiendo a Claude que ejecute una comprobación de estado en el servidor Roslyn
¿Por qué usar esto con Claude Code?
Claude Code tiene soporte nativo de LSP para navegación básica (ir a la definición, buscar referencias). SharpLensMcp añade análisis semántico profundo:
Capacidad | LSP Nativo | SharpLensMcp |
Ir a la definición | ✅ | ✅ |
Buscar referencias | ✅ | ✅ |
Buscar métodos asíncronos sin CancellationToken | ❌ | ✅ |
Análisis de impacto (¿qué se rompe?) | ❌ | ✅ |
Detección de código muerto | ❌ | ✅ |
Métricas de complejidad | ❌ | ✅ |
Refactorización segura con vista previa | ❌ | ✅ |
Operaciones por lotes | ❌ | ✅ |
Configuración
Variable de entorno | Descripción | Predeterminado |
| Ruta al archivo | Ninguno (debe llamar a |
| Usar rutas absolutas en lugar de relativas |
|
| Verbosidad del registro: |
|
| Tiempo de espera para operaciones de larga duración |
|
| Máximo de diagnósticos a devolver |
|
| Habilitar caché del modelo semántico |
|
Si DOTNET_SOLUTION_PATH no está configurado, debe llamar a la herramienta load_solution antes de usar otras herramientas.
Consejos de configuración para agentes de IA
Los modelos de IA pueden tener un sesgo entrenado hacia el uso de sus herramientas nativas (Grep, Read, LSP) en lugar de las herramientas del servidor MCP, incluso cuando SharpLensMcp proporciona mejores capacidades.
Para garantizar un uso óptimo de las herramientas:
Claude Code: Añada a su
CLAUDE.mddel proyecto:For C# code analysis, prefer SharpLensMcp tools over native tools: - Use `roslyn:search_symbols` instead of Grep for finding symbols - Use `roslyn:get_method_source` instead of Read for viewing methods - Use `roslyn:find_references` for semantic (not text) referencesOtros clientes MCP: Configure la prioridad de las herramientas en el prompt del sistema de su agente
El análisis semántico de Roslyn es más preciso que la búsqueda basada en texto, especialmente para métodos sobrecargados, clases parciales y jerarquías de herencia.
Responsabilidad del agente: Sincronización de documentos
Importante: SharpLensMcp mantiene una representación en memoria de su solución para consultas rápidas. Cuando los archivos se modifican externamente (a través de herramientas de Edición/Escritura), el agente es responsable de sincronizar los cambios.
Cuándo llamar a sync_documents:
Acción | ¿Llamar a sync_documents? |
Usó la herramienta Editar para modificar archivos .cs | ✅ Sí |
Usó la herramienta Escribir para crear nuevos archivos .cs | ✅ Sí |
Eliminó archivos .cs | ✅ Sí |
Usó herramientas de refactorización de SharpLensMcp (renombrar, extraer, etc.) | ❌ No (actualizado automáticamente) |
Modificó archivos .csproj | ❌ No (use |
Uso:
# After editing specific files
sync_documents(filePaths: ["src/MyClass.cs", "src/MyService.cs"])
# After bulk changes - sync all documents
sync_documents()¿Por qué este diseño?
Esto refleja cómo funciona LSP (Language Server Protocol): el cliente (editor) notifica al servidor de los cambios. Este enfoque:
Elimina condiciones de carrera (el agente controla el tiempo)
Evita la complejidad del observador de archivos y las peculiaridades de la plataforma
Es más rápido que recargar la solución completa
Da a los agentes un control explícito sobre el estado del espacio de trabajo
Si no sincroniza: Las consultas pueden devolver datos obsoletos (firmas de métodos antiguas, archivos nuevos faltantes, etc.)
Características
62 herramientas de análisis semántico - Navegación, refactorización, generación de código, diagnósticos, descubrimiento
Descripciones optimizadas para IA - Patrones claros de USO/SALIDA/FLUJO DE TRABAJO
Respuestas estructuradas - Formato consistente de
success/error/dataconsuggestedNextToolsCoordenadas basadas en cero - Advertencias claras para evitar errores de desfase
Modo de vista previa - Refactorización segura con vista previa antes de aplicar
Operaciones por lotes - Múltiples búsquedas en una sola llamada para reducir el uso de contexto
Categorías de herramientas
Navegación y descubrimiento (17 herramientas)
Herramienta | Descripción |
| Información semántica en la posición |
| Saltar a la definición del símbolo |
| Todas las referencias en la solución |
| Implementaciones de interfaz/abstractas |
| Análisis de impacto: ¿quién llama a esto? |
| Cadena de herencia |
| Búsqueda por patrón glob ( |
| Búsqueda con múltiples filtros (asíncrono, público, etc.) |
| Todos los miembros por nombre de tipo |
| Múltiples tipos en una llamada |
| Firma detallada por nombre |
| Encontrar todas las subclases |
| Cadena de herencia completa |
| Listar atributos en un símbolo |
| Símbolo envolvente en la posición |
| Todas las sobrecargas de un método |
| Encontrar tipos/miembros por atributo |
Análisis (11 herramientas)
Herramienta | Descripción |
| Errores/advertencias del compilador |
| Asignaciones y uso de variables |
| Ramificación/alcanzabilidad |
| ¿Qué se rompe si se cambia? |
| ¿Puede A asignarse a B? |
| ¿Qué llama este método? |
| Detección de código muerto |
| Comprobación de compilación sin escribir |
| Ciclomática, anidamiento, LOC, cognitiva |
| Detección de ciclos de proyecto y espacio de nombres |
| Miembros de interfaz/abstractos no implementados |
Refactorización (14 herramientas)
Herramienta | Descripción |
| Renombrado seguro en toda la solución |
| Añadir/eliminar/reordenar parámetros |
| Extraer con análisis de flujo de datos |
| Generar interfaz desde clase |
| Desde campos/propiedades |
| Ordenar y eliminar los no utilizados |
| Organizar por lotes múltiples archivos |
| Formatear archivos por lotes en el proyecto |
| Todas las refactorizaciones de Roslyn en la posición |
| Aplicar cualquier refactorización por título |
| Generar stubs de interfaz |
| Campo a propiedad |
| Variable temporal en línea |
| Extraer expresión a variable |
Generación de código (2 herramientas)
Herramienta | Descripción |
| Generar guardias ArgumentNullException |
| Equals/GetHashCode/operadores |
Herramientas compuestas (6 herramientas)
Herramienta | Descripción |
| Información completa del tipo en una llamada |
| Firma + llamadores + llamadas salientes + ubicación |
| Resumen del archivo con diagnósticos |
| Código fuente por nombre |
| Múltiples fuentes de métodos en una llamada |
| Cómo crear un tipo |
Descubrimiento (2 herramientas)
Herramienta | Descripción |
| Escanear registros de servicios DI |
| Detectar uso de reflexión/dinámico |
Infraestructura (10 herramientas)
Herramienta | Descripción |
| Estado del servidor |
| Cargar .sln/.slnx para análisis |
| Sincronizar cambios de archivo en la solución cargada |
| Estructura de la solución |
| Dependencias del proyecto |
| Correcciones disponibles para un diagnóstico |
| Aplicar una corrección de código específica |
| Listado de paquetes NuGet por proyecto |
| Listar generadores de fuente activos |
| Ver código fuente generado |
Otros clientes MCP
Para clientes MCP distintos de Claude Code, añada a su configuración:
{
"mcpServers": {
"sharplens": {
"command": "sharplens",
"args": [],
"env": {
"DOTNET_SOLUTION_PATH": "/path/to/your/Solution.sln (or .slnx)"
}
}
}
}Uso
Cargar una solución: Llame a
roslyn:load_solutioncon la ruta al archivo.slno.slnx(o configureDOTNET_SOLUTION_PATH)Analizar código: Use cualquiera de las 57 herramientas para navegación, análisis, refactorización
Refactorizar de forma segura: Previsualice los cambios antes de aplicar con
preview: true
Arquitectura
MCP Client (AI Agent)
| stdin/stdout (JSON-RPC 2.0)
v
SharpLensMcp
- Protocol handling
- 57 AI-optimized tools
|
v
Microsoft.CodeAnalysis (Roslyn)
- MSBuildWorkspace
- SemanticModel
- SymbolFinderRequisitos
.NET 8.0 SDK o posterior — funciona con .NET 8, 9, 10 y versiones futuras. Analiza cualquier proyecto/solución .NET 8+.
Agente de IA compatible con MCP
Desarrollo
Añadir nuevas herramientas
Añadir método a
src/RoslynService.cs:
public async Task<object> YourToolAsync(string param1, int? param2 = null)
{
EnsureSolutionLoaded();
// Your logic...
return CreateSuccessResponse(
data: new { /* results */ },
suggestedNextTools: new[] { "next_tool_hint" }
);
}Añadir definición de herramienta a
src/McpServer.csenHandleListToolsAsyncAñadir enrutamiento a
src/McpServer.csen el switchHandleToolCallAsyncCompilar y publicar:
dotnet build -c Release
dotnet publish -c Release -o ./publishArchivos clave
Archivo | Propósito |
| Implementaciones de herramientas (57 métodos) |
| Protocolo MCP, definiciones de herramientas, enrutamiento |
Licencia
MIT - Ver LICENSE para más detalles.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/pzalutski-pixel/sharplens-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server