dotnet-sherlock-mcp
Sherlock MCP для .NET
Sherlock MCP для .NET — это комплексный сервер протокола контекста модели (MCP), который предоставляет возможности глубокой интроспекции сборок .NET. Он позволяет языковым моделям (LLM) анализировать и понимать ваш код .NET с высокой точностью, предоставляя точные и контекстно-зависимые ответы для сложных сценариев разработки.
Этот инструмент необходим разработчикам, которые хотят использовать возможности LLM для:
Глубокого анализа кодовой базы — понимания сложных архитектур и зависимостей .NET
Точной информации о типах — получения подробных метаданных о типах, членах и их сигнатурах
Автоматизированной документации — извлечения и использования XML-документации и атрибутов
Пользовательских инструментов — создания сложных инструментов, взаимодействующих со сборками .NET
Генерации кода — создания точного кода на основе существующих структур типов
Основные возможности
Комплексный MCP-сервер: предоставляет 31+ специализированный инструмент для анализа сборок .NET
Расширенная интроспекция сборок: глубокий анализ типов, членов и метаданных на основе рефлексии
Богатый анализ членов: детальная проверка методов, свойств, полей, событий и конструкторов
Умная фильтрация и пагинация: расширенная фильтрация по имени/атрибутам с эффективной пагинацией для больших наборов данных
Интеграция XML-документации: автоматическое извлечение сводок, параметров, возвращаемых значений и примечаний
Оптимизация производительности: кэширование, потоковая передача и эффективная обработка памяти
Стабильный JSON API: согласованные конверты с версионированием и структурированными кодами ошибок
Нативный .NET 9.0: построен на новейшей платформе .NET с современными функциями C#
Интеграция с проектами: анализ решений и файлов проектов с разрешением зависимостей
Установка
Установите глобальный инструмент из NuGet (добавляет sherlock-mcp в ваш PATH):
dotnet tool install -g Sherlock.MCP.ServerАльтернативно, во время разработки вы можете запустить сервер локально:
dotnet run --project src/server/Sherlock.MCP.Server.csprojНастройка вашего MCP-клиента
Sherlock работает как стандартный MCP-сервер, который обменивается данными через stdio.
Cursor: Настройки → MCP / Пользовательские инструменты → Добавить инструмент → Команда:
sherlock-mcpClaude Desktop / другие MCP-клиенты: Добавьте запись сервера, указывающую на команду
sherlock-mcp. Пример записи JSON (обратитесь к документации вашего клиента для точного расположения файла/формата):
{
"servers": {
"sherlock": {
"command": "sherlock-mcp"
}
}
}Аргументы не требуются. Сервер автоматически регистрирует все инструменты при запуске.
Автоматическая настройка для проектов .NET
Чтобы автоматически использовать Sherlock при работе с кодом .NET, добавьте следующие конфигурации:
Claude Code (CLAUDE.md)
Добавьте это в файл CLAUDE.md вашего проекта:
## .NET Assembly Analysis
This project uses Sherlock MCP for .NET assembly analysis. When analyzing .NET types, methods, or assemblies:
1. Use sherlock-mcp tools instead of guessing about .NET APIs
2. For type analysis: `GetTypeInfo`, `GetTypeMethods`, `GetTypeProperties`
3. For assembly overview: `AnalyzeAssembly` or `GetTypesFromAssembly`
4. For project structure: `AnalyzeProject`, `AnalyzeSolution`
5. Assembly paths are typically: `./bin/Debug/net9.0/ProjectName.dll`
Always include assembly path, prefer full type names, and use pagination for large results.Cursor (.cursorrules)
Добавьте это в файл .cursorrules вашего проекта:
# .NET Analysis Rules
When working with .NET code, assemblies, or types:
- Use sherlock-mcp tools for accurate type/member information
- Assembly paths: ./bin/Debug/net9.0/*.dll or ./bin/Release/net9.0/*.dll
- For unknown types: GetTypesFromAssembly -> GetTypeInfo -> GetTypeMethods/Properties
- For code analysis: AnalyzeAssembly for overview, GetTypeInfo for details
- Use pagination (maxItems=50) for large results to avoid token limitsГлобальная конфигурация
Для использования во всей системе добавьте в глобальные настройки Claude Code или конфигурацию Cursor:
For .NET development: Use sherlock-mcp tools when analyzing assemblies, types, methods, or project structure. Prefer these over guessing .NET API details.Как составлять запросы
Ниже приведены компактные фрагменты запросов, которые вы можете вставить в свой чат, чтобы быстро начать работу. Настройте пути к вашим локальным DLL.
Общая настройка
You have access to an MCP server named "sherlock" that can analyze .NET assemblies. Prefer these tools for .NET questions and include short reasoning for which tool you chose. Ask me for the assembly path if missing.Перечисление членов типа
Analyze: /absolute/path/to/MyLib/bin/Debug/net9.0/MyLib.dll
Type: MyNamespace.MyType
List methods, including non-public, filter name contains "Async", include attributes, return JSON.Получение XML-документации для члена
Use GetXmlDocsForMember on /abs/path/MyLib.dll, type MyNamespace.MyType, member TryParse. Summarize the summary + params.Поиск типов и углубление
List types from /abs/path/MyLib.dll; then get type info for the first result and list its nested types.Настройка пагинации и фильтров
Use GetTypeMethods on /abs/path/MyLib.dll, type MyNamespace.MyType, sortBy name, sortOrder asc, skip 0, take 25, hasAttributeContains Obsolete.Обзор инструментов
Обнаружение и анализ сборок
AnalyzeAssembly: полный обзор сборки с публичными типами и метаданнымиFindAssemblyByClassName: поиск сборок, содержащих определенные имена классовFindAssemblyByFileName: поиск сборок по имени файла в общих путях сборки
Интроспекция типов
GetTypesFromAssembly: список всех публичных типов с метаданными (с пагинацией)AnalyzeType: комплексный анализ типа со всеми членамиGetTypeInfo: подробные метаданные типа (доступность, дженерики, вложенные типы)GetTypeHierarchy: цепочка наследования и реализация интерфейсовGetGenericTypeInfo: информация о параметрах дженериков, аргументах и вариативностиGetTypeAttributes: пользовательские атрибуты, объявленные в типахGetNestedTypes: объявления вложенных типов
Анализ членов (фильтруемый и с пагинацией)
GetAllTypeMembers: все члены по всем категориямGetTypeMethods: сигнатуры методов, перегрузки и метаданныеGetTypeProperties: детали свойств, включая геттеры/сеттеры и индексаторыGetTypeFields: информация о полях, включая константы и поля только для чтенияGetTypeEvents: объявления событий с типами обработчиковGetTypeConstructors: сигнатуры конструкторов и параметрыAnalyzeMethod: глубокий анализ метода с перегрузками и атрибутами
Обратный поиск
FindImplementationsOf: типы, реализующие интерфейс или наследующие от базового классаFindMethodsReturning: методы, чей возвращаемый тип соответствует заданному типу (поддерживается сопоставление открытых дженериков)FindReferencesTo: более широкий охват параметров, полей, свойств, событий и аргументов дженериков
Атрибуты и метаданные
GetMemberAttributes: атрибуты для конкретных членовGetParameterAttributes: информация об атрибутах на уровне параметров
XML-документация
GetXmlDocsForType: извлечение XML-документации на уровне типаGetXmlDocsForMember: документация конкретного члена (сводка/параметры/возвращаемые значения/примечания)
Анализ проектов и решений
AnalyzeSolution: разбор файлов .sln и перечисление проектовAnalyzeProject: метаданные проекта, ссылки и конфигурация сборкиGetProjectOutputPaths: разрешение выходных каталогов для различных конфигурацийResolvePackageReferences: сопоставление пакетов NuGet с кэшированными сборкамиFindDepsJsonDependencies: разбор deps.json для зависимостей времени выполнения
Конфигурация и время выполнения
GetRuntimeOptions: текущая конфигурация сервера и значения по умолчаниюUpdateRuntimeOptions: изменение пагинации, кэширования и поведения поиска
Расширенная фильтрация и пагинация
Все инструменты анализа членов поддерживают комплексную фильтрацию и пагинацию:
Параметры фильтрации:
caseSensitive(bool): сопоставление типов/членов с учетом регистраnameContains(string): фильтрация по подстроке имени членаhasAttributeContains(string): фильтрация по подстроке типа атрибутаincludePublic/includeNonPublic(bool): фильтрация по видимостиincludeStatic/includeInstance(bool): фильтрация по типу члена
Пагинация:
skip/take(int): стандартная пагинация со смещениемmaxItems(int): максимальное количество результатов на запросcontinuationToken(string): пагинация на основе токенов для больших наборов данныхsortBy/sortOrder(string): сортировка по имени/доступу в порядке возрастания/убывания
Разрешение типов:
Поддерживает полные имена (
Namespace.Type), простые имена (Type) и вложенные типы (Outer+Inner)Чувствительность к регистру управляется параметром
caseSensitiveАвтоматическое резервное разрешение для неоднозначных имен типов
Схема ответа
Все инструменты возвращают стабильный JSON-конверт:
{ "kind": "type.list|member.methods|...", "version": "1.0.0", "data": { /* result */ } }Ошибки используют согласованную форму:
{ "kind": "error", "version": "1.0.0", "code": "AssemblyNotFound|TypeNotFound|InvalidArgument|InternalError", "message": "...", "details": { } }
Common error codes include `AssemblyNotFound`, `TypeNotFound`, `MemberNotFound`, `InvalidArgument`, and `InternalError`.Вклад в проект
Вклад приветствуется. Этот репозиторий включает .editorconfig с современными предпочтениями C# (пространства имен в файле, члены с выражением, отступ в 4 пробела).
Формат сообщения коммита
Этот проект использует Conventional Commits для автоматической генерации списка изменений. Все коммиты должны следовать этому формату:
type(scope): descriptionДопустимые типы:
feat- новая функцияfix- исправление ошибкиdocs- только изменения в документацииstyle- изменения стиля кода (форматирование, точки с запятой и т.д.)refactor- изменение кода, которое не исправляет ошибку и не добавляет функциюperf- улучшение производительностиtest- добавление или исправление тестовbuild- изменения в системе сборки или зависимостяхci- изменения в конфигурации CIchore- другие изменения, которые не затрагивают исходные файлы или файлы тестовrevert- откат предыдущего коммита
Примеры:
git commit -m "feat(tools): add new assembly analysis tool"
git commit -m "fix: resolve null reference in type loader"
git commit -m "docs(readme): update installation instructions"Настройка разработки
# Restore .NET tools (versionize, husky)
dotnet tool restore
# Install git hooks for commit validation
dotnet husky installРуководство
Сохраняйте изменения небольшими и сфокусированными; добавляйте модульные тесты для нового поведения.
Соблюдайте соглашения о конверте ответа и кодах ошибок при добавлении инструментов.
Запустите
dotnet buildиdotnet testлокально перед открытием PR.
Создание релиза
Сопровождающие могут создавать релизы, используя:
# Restore tools if not already done
dotnet tool restore
# Preview what will change
dotnet versionize --dry-run
# Create release (bumps version, updates changelog, creates git tag)
dotnet versionize
# Push changes and tag to trigger release workflow
git push --follow-tagsРабочий процесс релиза автоматически:
Соберет и протестирует проект
Создаст GitHub Release с примечаниями к списку изменений
Опубликует пакет NuGet
Обновит
server.jsonновой версией
Реестр MCP
mcp-name: io.github.jcucci/dotnet-sherlock-mcp
Лицензия
Sherlock MCP для .NET лицензирован под лицензией MIT.
This server cannot be installed
Maintenance
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/jcucci/dotnet-sherlock-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server