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#
Интеграция с проектами: анализ решений и файлов проектов с разрешением зависимостей
Related MCP server: sharplens-mcp
Установка
Установите глобальный инструмент из 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
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityAmaintenanceRoslyn-based MCP server providing semantic code intelligence for .NET codebases — type hierarchies, call sites, DI registrations, and reflection usage for Claude Code6748MIT
- AlicenseAqualityAmaintenanceA Model Context Protocol (MCP) server providing 62 AI-optimized tools for .NET/C# semantic code analysis, navigation, refactoring, and code generation using Microsoft Roslyn. Built for AI coding agents - provides compiler-accurate code understanding that AI cannot infer from reading source files alone.6231MIT
- AlicenseAqualityCmaintenanceMCP server for .NET assembly analysis. Vendor-neutral wrapper around AsmResolver and ILSpy for parsing and decompiling .NET assemblies.111MIT
- FlicenseAqualityCmaintenanceAn MCP server that decompiles and inspects .NET assemblies to C# source, wrapping ILSpy. Enables querying .NET DLLs via natural language to decompile types, list members, and search symbols.7
Related MCP Connectors
An MCP server that gives your AI access to the source code and docs of all public github repos
Security scanner for MCP servers. Detect vulnerabilities, prompt injection, and tool poisoning.
Augments MCP Server - A comprehensive framework documentation provider for Claude Code
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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