SharpLens — MCP-сервер для Claude Code: что делает и как установить
Семантический анализ и рефакторинг проектов на C# и .NET через компилятор Roslyn. Помогает находить неиспользуемый код, пропущенные CancellationToken и оценивать влияние правок.
claude mcp add --env DOTNET_SOLUTION_PATH=<DOTNET_SOLUTION_PATH> --env ROSLYN_LOG_LEVEL=<ROSLYN_LOG_LEVEL> --env ROSLYN_TIMEOUT_SECONDS=<ROSLYN_TIMEOUT_SECONDS> --transport stdio sharplens -- npx -y sharplens-mcpЧто делает SharpLens
Сервер подключает к агенту компиляторные механизмы Roslyn вместо простого поиска по тексту или базового LSP. Обычный текстовый поиск здесь не нужен. В каталоге заложено 92 инструмента для работы с решениями .NET. Они позволяют переименовывать символы, исследовать иерархии типов, вычислять метрики сложности и находить методы без CancellationToken.
Для работы сервер держит структуру решения в оперативной памяти. Путь к файлу .sln, .slnx или .slnf передают через переменную DOTNET_SOLUTION_PATH либо указывают прямо вызовом load_solution. Если проект собирается под несколько целевых платформ, результаты объединяются с указанием списка targetFrameworks.
После правок через обычные файловые команды агенту нужно вручную запускать sync_documents. Без синхронизации сервер вернёт ошибку STALE_DOCUMENT при попытке применить изменения. Файлы без маркера порядка байтов в несовместимой кодировке также вызовут отказ с ошибкой UNSUPPORTED_ENCODING.
Какие задачи решает
- находить асинхронные методы без передачи токена отмены
- оценивать последствия правок и потенциальные поломки в зависимом коде
- выявлять неиспользуемый код и замерять сложность методов
- переименовывать символы и безопасно рефакторить C#-проекты
Примеры запросов агенту
- Найди в решении все асинхронные методы, где забыли передать CancellationToken.
- Проанализируй влияние изменений в классе UserService перед рефакторингом.
- Вызови sync_documents после редактирования файлов контроллера.
Как установить SharpLens
Командой платформы
claude mcp add --env DOTNET_SOLUTION_PATH=<DOTNET_SOLUTION_PATH> --env ROSLYN_LOG_LEVEL=<ROSLYN_LOG_LEVEL> --env ROSLYN_TIMEOUT_SECONDS=<ROSLYN_TIMEOUT_SECONDS> --transport stdio sharplens -- npx -y sharplens-mcpВместо <…> подставьте свои значения
Командой платформы
codex mcp add sharplens --env DOTNET_SOLUTION_PATH=<DOTNET_SOLUTION_PATH> --env ROSLYN_LOG_LEVEL=<ROSLYN_LOG_LEVEL> --env ROSLYN_TIMEOUT_SECONDS=<ROSLYN_TIMEOUT_SECONDS> -- npx -y sharplens-mcpВместо <…> подставьте свои значения
Файл настроек
{
"mcpServers": {
"sharplens": {
"command": "npx",
"args": [
"-y",
"sharplens-mcp"
],
"env": {
"DOTNET_SOLUTION_PATH": "<DOTNET_SOLUTION_PATH>",
"ROSLYN_LOG_LEVEL": "<ROSLYN_LOG_LEVEL>",
"ROSLYN_TIMEOUT_SECONDS": "<ROSLYN_TIMEOUT_SECONDS>"
}
}
}
}Вместо <…> подставьте свои значения
Файл настроек
{
"servers": {
"sharplens": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"sharplens-mcp"
],
"env": {
"DOTNET_SOLUTION_PATH": "<DOTNET_SOLUTION_PATH>",
"ROSLYN_LOG_LEVEL": "<ROSLYN_LOG_LEVEL>",
"ROSLYN_TIMEOUT_SECONDS": "<ROSLYN_TIMEOUT_SECONDS>"
}
}
}
}Вместо <…> подставьте свои значения
Командой платформы
gemini mcp add -e DOTNET_SOLUTION_PATH=<DOTNET_SOLUTION_PATH> -e ROSLYN_LOG_LEVEL=<ROSLYN_LOG_LEVEL> -e ROSLYN_TIMEOUT_SECONDS=<ROSLYN_TIMEOUT_SECONDS> sharplens npx -y sharplens-mcpВместо <…> подставьте свои значения
По шагам, с командами для каждой платформы: Как подключить MCP-сервер: Claude Code, Codex, Cursor, VS Code, Gemini CLI и другие
Вопросы о SharpLens
Как установить SharpLens в Claude Code?
Выполните команду claude mcp add sharplens -- npx -y sharplens-mcp. Если требуется сразу настроить переменные окружения, выполните `claude mcp add --env DOTNET_SOLUTION_PATH=<DOTNET_SOLUTION_PATH> --env ROSLYN_LOG_LEVEL=<ROSLYN_LOG_LEVEL> --env ROSLYN_TIMEOUT_SECONDS=<ROSLYN_TIMEOUT_SECONDS> --transport stdio sharplens -- npx -y sharplens-mcp`.
Что делает SharpLens?
Сервер даёт ИИ-агентам доступ к компилятору Roslyn для глубокого анализа решений C# и .NET. Он умеет находить ошибки типизации, исследовать ссылки на символы, отслеживать мёртвый код и безопасно применять рефакторинг.
Почему сервер выдаёт ошибку STALE_DOCUMENT?
SharpLens хранит состояние решения в памяти. Если файлы .cs были изменены внешними инструментами агента, необходимо вызвать sync_documents, иначе сервер заблокирует запись из-за устаревшего снимка.