██ ██
██ ██ ██ ██████ █████▄ ▄████▄
██ ██ ██ ██ ██▄▄██▄ ██▄▄██
██ ██ ██ ██ ██ ██ ██ ██
██ ██ ██████ ██ ██ ██ ██ ██
▀████▀ ▄▄▄▄ ▄▄ ▄▄ ▄▄▄ ▄▄▄▄ ▄▄▄▄
███▄▄ ██▄██ ██▀██ ██▄█▄ ██▄█▀
▄▄██▀ ██ ██ ██▀██ ██ ██ ██
╔═════════════════════════════════════════════════════╗
║ ULTRASHARP-TOOLS MCP SERVER ║
╚═════════════════════════════════════════════════════╝  
Умный инструмент работы с C# кодом для вас и вашего ИИ
Если вы активно используете ИИ для написания кода, то наверняка сталкивались с проблемами: ИИ тратит много времени и токенов на полнотекстовый поиск. Для массовых изменений пишет одноразовые скрипты, которые работают после десятой правки — и хорошо, если ничего не ломают.
Ultrasharp Tools решает эти проблемы.
### Как это работает
Умный парсинг: - Весь код парсится в связанную структуру. Все инструменты работают с ней, а не с текстом. - Скорость: 500К строк за 10 сек, 6М строк за 50 сек. Повторный доступ — 0.02 сек из кеша.
Кеширование: - Структура кешируется и инкрементно обновляется. - Для каждой git-ветки — свой слой. Переключил ветку — всё сразу готово. - Аналогично работает векторная база для embed-моделей (Ollama/TEI).
Точечная работа: - Поиск, анализ, модификация — сразу на нужных участках кода. Без перебора файлов. - После изменений автоматически запускается линтинг и форматирование. Результат приходит сразу.
Естественные команды: - "Добавь метод в этот класс" - "Найди где используется этот сервис" - "Покажи что сломается если изменить интерфейс"
Семантическая модель сама разберёт запрос и запустит нужные инструменты.
Умные замены: - semantic_replace меняет код с пониманием контекста. - Можно за секунды обновить 500+ точек логирования на новый формат. - Если модель не уверена — честно скажет, а не выдумает.
Статическая трассировка: - Задаёте точку старта и конца — получаете последовательность выполнения. - Или наоборот: есть точка падения — инструмент "отмотает назад" и покажет причины.
Умный merge: - semantic_merge разбирается со сложными конфликтами на трёх уровнях автоматически.
### Архитектура
Три процесса с lazy-запуском: - Comm — лёгкий Named Pipe bridge (~700 KB, один бинарник для всех ОС), запускается у каждого агента - Droid — основной Roslyn-сервер (singleton, multi-client через Named Pipe) - VectorDB — семантический движок (lazy start, shared между всеми)
Claude₁ ←stdio→ Comm₁ ──┐
Claude₂ ←stdio→ Comm₂ ──┼── Named Pipe ──→ Droid (singleton) ──→ VectorDB
Claude₃ ←stdio→ Comm₃ ──┘Сколько бы агентов ни работало — Droid и VectorDB всегда одни. Экономия до 10 GB RAM.
Данный проект работает только с C#. Для проектов с JS/TS/Python - используйте аналогичный ultrascript-tools-mcp
📦 Установка
- Скачайте релиз на и распакуйте.
- Настройте ИИ (Claude Code / Claude Desktop) - .claude.json:
Windows:
{
"mcpServers": {
"ultrasharp-tools": {
"command": "C:\\Tools\\UltrasharpTools\\UltraSharp-tools.com"
}
}
}macOS/Linux:
{
"mcpServers": {
"ultrasharp-tools": {
"command": "/path/to/ultrasharp-tools"
}
}
}Примечание: Запускается UltraSharp-tools.com (Windows) или ultrasharp-tools wrapper (macOS/Linux). Первый Comm автоматически запустит Droid в daemon-режиме. Последующие Comm подключатся к существующему Droid.
⚠️ macOS: Используйтеultrasharp-toolswrapper, а не.comнапрямую (решает ENOEXEC). Альтернатива: обновите zsh до 5.9+ (brew install zsh) — тогда.comработает напрямую.
- Добавить в CLAUDE.md описание работы с инструментами
- Настройте семантический поиск - запустите мастер настройки и следуйте его инструкциям:
Windows:
C:\Tools\UltrasharpTools\Scripts\setup-semantic-embedding.cmdLinux/macOS:
PATH/Tools/UltrasharpTools/Scripts/setup-semantic-embedding.shВ зависимости от опредёленного GPU - будет предложено выбрать систему Ollama/TEI-в-docker. Потом выбрать наиболее подходящую вам embedding модель.
Специально для GTX50xx (Blackwood) используется неофициальная TEI, которая поддерживает такую архитектуру.
💡 Что это даёт вам?
Работайте с C# кодом как человек-разработчик
Вместо простых текстовых операций, AI получает те же инструменты что и вы:
Примеры команд:
- "Добавь метод ValidateEmail в класс UserService"
- "Покажи все места где используется PaymentProcessor"
- "Переименуй метод GetUser → FetchUserAsync и обнови все вызовы"
- "Что сломается если я изменю интерфейс IAuthService?"
- "Найди дубликаты этого метода в проекте"
Результат: точные изменения + автоформатирование + проверка ошибок + git commit.
Экономьте время на рутине
| Задача | Обычный AI (текст) | С UltrasharpTools (Roslyn) |
|---|---|---|
| Добавить метод в класс | Часто ломает синтаксис, не видит using'и | Точное добавление в нужное место с корректными using'ами |
| Переименовать символ | Находит только текст, пропускает вызовы | 100% замена всех ссылок в solution через SymbolFinder |
| Найти использование | grep по коду, много false positives | Semantic Find References - только реальные вызовы |
| Проверить на ошибки | "Запусти dotnet build" | Мгновенная компиляция в памяти после каждого изменения |
Умный анализ через Roslyn, а не текст
Текстовые операции AI:
AI: "Добавляю метод в конец файла..."
Результат: ❌ Метод внутри другого метода
❌ Отсутствуют using'и
❌ Не скомпилируетсяUltrasharpTools с Roslyn:
AI использует add_member:
✅ Метод добавлен в правильное место класса
✅ Автоматически добавлены нужные using System.Linq
✅ Код отформатирован через CSharpier
✅ 0 ошибок компиляции
✅ Git commit создан автоматическиПотому что понимает структуру кода, а не просто текст.
🚀 Реальные примеры использования
1. Добавление нового функционала
Проблема: Нужно добавить валидацию email во все user-сервисы.
Решение:
Вы: "Добавь метод ValidateEmail в класс UserService с проверкой на regex"
UltrasharpTools:
✅ Метод добавлен в Services/UserService.cs
✅ Автоматически добавлен using System.Text.RegularExpressions
✅ Код отформатирован через CSharpier
✅ Компиляция успешна (0 ошибок)
✅ Git commit: "feat: Add email validation to UserService"
Время: 2 секунды вместо 5 минут ручного редактирования2. Масштабный рефакторинг
Проблема: Нужно переименовать IUserRepository → IUserDataAccess во всём solution (120 файлов).
Решение:
Вы: "Переименуй IUserRepository в IUserDataAccess везде в solution"
UltrasharpTools:
✅ Найдено 347 использований в 23 файлах
✅ Обновлены:
- Определение интерфейса
- Все реализации (UserRepository, TestUserRepository)
- Все DI регистрации
- Все параметры конструкторов
- Все XML документации
✅ Компиляция успешна
✅ Git commit: "refactor: Rename IUserRepository to IUserDataAccess"
Без ошибок, без пропущенных мест. Время: 8 секунд.3. Анализ влияния изменений
Проблема: Нужно изменить сигнатуру метода ProcessPayment, но не понятно что сломается.
Решение:
Вы: "Покажи где используется PaymentService.ProcessPayment"
UltrasharpTools:
✅ Найдены все вызовы:
1. OrderController.Checkout() - прямой вызов
File: Controllers/OrderController.cs:45
Code: await _paymentService.ProcessPayment(order.Total)
2. SubscriptionService.RenewSubscription() - через DI
File: Services/SubscriptionService.cs:78
3. PaymentQueueWorker.ProcessAsync() - background job
File: Workers/PaymentQueueWorker.cs:112
Затронуто: 3 компонента, 3 файла
Рекомендация: добавить перегрузку метода для обратной совместимости⚡ Насколько это быстро?
Производительность на реальных проектах:
| Операция | Результат | Детали |
|---|---|---|
| Индексация 500К символов | 10 секунд | Cold start с Type Dictionary Cache |
| Индексация с кешем | ⚠️ macOS/Linux:** Используйте ultrasharp-tools wrapper (решает ENOEXEC). Или обновите zsh до 5.9+. |
Возможности:
- ✅ Много агентов — один сервер — Claude Desktop + Claude Code + Cursor одновременно
- ✅ Общий Roslyn workspace — все редакторы видят одни и те же изменения
- ✅ Локальный Git — автоматические коммиты в
sharptools/*ветки - ✅ Максимальная скорость — нет сетевых задержек
- ✅ NuGet packages из локального кэша (
~/.nuget/packages/) - ✅ Локальная семантика — semantic search через Ollama/TEI (VectorDB)
- ✅ Auto-recovery — Droid и VectorDB перезапускаются при сбоях
Use case: Индивидуальная разработка с несколькими AI-агентами/редакторами одновременно
🌐 Overlord - Semantic Hub для команды (в тестировании)
⚠️ Статус: В активном тестировании. API может меняться.
Централизованный сервер для semantic обработки кода
Архитектура:
Droid (на машине разработчика)
↓ работает с локальными файлами
↓ создаёт code embeddings
↓ отправляет векторы через HTTP
↓
Overlord (Docker/Kubernetes)
↓ принимает векторы от всех Droid клиентов
↓ хранит в едином MultiProjectVectorStore
↓ использует мощную embedding модель (Ollama/TEI)
↓ выполняет cross-project semantic search
↓ возвращает результаты с рекомендациямиКлючевая особенность: Overlord НЕ работает с файлами напрямую! Каждый Droid работает со своими локальными проектами, а Overlord:
- Агрегирует векторы от всех разработчиков
- Предоставляет единую точку доступа к мощной embedding модели
- Выполняет поиск по всем проектам команды одновременно
Deployment через Docker:
docker run -d \
--name ultrasharp-overlord \
-p 3001:3001 \
-v ultrasharp-vectors:/app/data \
-e EMBEDDING_URL=http://ollama:11434 \
-e EMBEDDING_MODEL=granite-embedding \
ghcr.io/faxenoff/ultrasharp-tools-overlord:latestПодключение Droid к Overlord:
# Ваш Droid работает с локальными файлами
# + использует Overlord для semantic операций
UltrasharpTools.Droid.exe \
--overlord-url http://overlord:3001 \
--load-solution D:/MyProject/MyApp.slnЧто получаете:
- 🧠 Shared semantic brain - единая база знаний о коде всей команды
- 🔍 Cross-project search - "найди дубликаты во ВСЕХ проектах команды"
- 💪 Powerful embedding - дорогая модель на GPU доступна всем
- 📊 Smart recommendations - "в проекте TeamA уже есть такая реализация!"
- ⚡ No local GPU needed - embedding выполняется на сервере
- 🔄 Auto-enrichment - все инструменты автоматически обогащаются semantic данными
Use case:
- Команды разработчиков с несколькими проектами
- Поиск дубликатов кода между микросервисами
- Централизованный доступ к мощной embedding модели
- Knowledge sharing через semantic recommendations
📖 Подробнее: Run.Docs/OVERLORD_README.md | Deployment Guide
🎨 Полный список инструментов (52 tools)
🔷 Solution Management (2)
| Инструмент | Что делает |
|---|---|
load_solution | Загружает .sln и инициализирует Roslyn workspace |
load_project | Детальный обзор структуры проекта (namespaces, types) |
🔍 Analysis Tools (15)
| Инструмент | Что делает | Semantic |
|---|---|---|
get_members | Список членов типа с сигнатурами и XML docs | - |
view_definition | Показывает source code символа с контекстом | - |
list_implementations | Находит реализации интерфейса/производные классы | - |
find_references | Все использования символа в solution | - |
search_definitions | Regex поиск по декларациям в коде и assemblies | - |
view_call_graph | Incoming/outgoing вызовы метода | - |
view_inheritance_chain | Цепочка наследования типа | - |
get_all_subtypes | Рекурсивный список вложенных членов | - |
manage_usings | Чтение/запись using директив | - |
manage_attributes | Чтение/запись атрибутов на декларациях | - |
analyze_complexity | Метрики сложности (cyclomatic, cognitive, coupling) | - |
pattern_search | 4 режима поиска: entity, content, semantic, hybrid | * |
find_duplicates | Семантический поиск похожего кода | |
detect_technology_stack | Определяет frameworks, languages, dependencies | - |
list_file_entities | Список types и members в файле | - |
\*pattern_searchработает без semantic в режимахentityиcontent
✏️ Modification Tools (8)
| Инструмент | Что делает |
|---|---|
add_member | Добавляет member (method/property/field/class) в тип |
modify_code | Заменяет или удаляет member definition |
rename_symbol | Переименовывает символ + все references в solution |
replace_all_references | Заменяет все ссылки на символ указанным кодом |
replace_references_by_pattern | Batch переименование по паттерну (wildcards/regex) |
find_and_replace | Regex find & replace в коде/файлах |
move_member | Перемещает member между типами/namespaces |
undo | Откатывает последнее изменение через Git |
✨ Quality Tools (4)
| Инструмент | Что делает |
|---|---|
format_code | Форматирование через CSharpier (.cs, .csproj, .xml) |
analyze_code_style | Анализ через Roslyn analyzers (presets, filters, 5-min cache) |
apply_code_fixes | Автоприменение code fixes (unused usings и др.) |
cleanup_usings | Удаляет usings дублирующие GlobalUsings.cs |
✅ Validation Tools (3)
| Инструмент | Что делает |
|---|---|
validate_file | Валидация C# файла с Roslyn analyzers |
validate_directory | Batch валидация директории (параллельно) |
compare_validation | Сравнение результатов до/после изменений |
🐛 Debugging & Tracing (5)
| Инструмент | Что делает |
|---|---|
trace_execution | Статическая трассировка через Control Flow Graph |
trace_backwards | Обратная трассировка от точки краша (с кешем 5-10x) |
analyze_path_feasibility | Symbolic execution с Z3 solver (null checks, div by zero) |
export_call_graph | Экспорт графа (DOT/Mermaid/GraphML) |
analyze_logs | Анализ логов (ECS/JSON, PlainText, Logcat, XML) |
📄 Document Tools (3)
| Инструмент | Что делает |
|---|---|
read_file | Читает файл (без indentation для экономии токенов) |
create_file | Создаёт новый файл с контентом |
overwrite_file | Перезаписывает существующий файл |
📁 File Operations (2)
| Инструмент | Что делает |
|---|---|
split_file | Разбивает файл по top-level типам (класс → файл) |
synthesize_files | Объединяет несколько файлов в один |
🧠 Semantic Tools (8) — требуют Semantic Mode
| Инструмент | Что делает |
|---|---|
semantic_search | Поиск кода по смыслу (natural language) |
semantic_diff | Сравнение semantic изменений (поведение vs текст) |
detect_code_clones | Обнаружение дубликатов через ML |
semantic_replace | Batch find & replace с контекстом (preview + apply) |
get_semantic_replace_info | Справка по возможностям semantic_replace |
reindex_changed_files | Инкрементальная переиндексация |
semantic_merge | 3-way merge с пониманием структуры кода |
get_semantic_merge_info | Справка по возможностям semantic_merge |
💾 Snapshot Tools (4)
| Инструмент | Что делает |
|---|---|
create_snapshot | Создаёт точку восстановления (backup) |
list_snapshots | Список доступных снимков |
rollback_snapshot | Откат к предыдущему состоянию ⚠️ |
cleanup_snapshots | Удаление старых снимков ⚠️ |
📦 Package & Misc (2)
| Инструмент | Что делает |
|---|---|
add_package | Добавляет/обновляет NuGet пакет в проект |
request_new_tool | Запрос новых инструментов (логируется для review) |
⚙️ System (1)
| Инструмент | Что делает |
|---|---|
get_capabilities | Проверка возможностей сервера (semantic mode, версия, features) |
📊 Semantic vs Instrumental
Работают всегда (без Semantic Mode):
- Все Solution, Modification, Quality, Validation, Tracing, Document, File Ops, Snapshot, Package, System инструменты
pattern_searchв режимахentityиcontent
Требуют Semantic Mode (проверка через get_capabilities()):
semantic_search,semantic_diff,detect_code_clonessemantic_replace,get_semantic_replace_infofind_duplicates,reindex_changed_filessemantic_merge,get_semantic_merge_infopattern_searchв режимахsemanticиhybrid
📖 Подробная документация: Run.Docs/Claude/ - примеры, best practices, workflows для каждого инструмента.
🔧 Дополнительные возможности
Semantic Code Search
Для поиска похожего кода по смыслу (не по тексту) можно включить векторные embeddings.
Что получите:
- ✅ Поиск дубликатов даже с разными названиями переменных
- ✅ "Найди код похожий на этот метод" → семантический поиск
- ✅ Автоматическая группировка похожих методов/классов
Два варианта setup:
1. Локальная семантика (Droid)
Быстрая настройка через setup-semantic-embedding.cmd:
# Windows
Dev.Scripts\setup-semantic-embedding.cmd
# Linux/Mac
pwsh Dev.Scripts/setup-semantic-embedding.ps1Выберите embedding provider:
- Ollama - простая установка, работает на CPU/GPU
- TEI - максимальная производительность, требует Docker + NVIDIA GPU
- Memory - для тестирования без внешних зависимостей
Ollama quick start:
# 1. Установите Ollama (https://ollama.ai)
ollama pull granite-embedding
# 2. Запустите setup
setup-semantic-embedding.cmd
# Выберите "Ollama"
# 3. Готово! Droid автоматически использует Ollama2. Централизованная семантика (Overlord)
Для командной работы - shared semantic index на Overlord сервере. Все разработчики используют единую базу векторов и embedding service.
Адаптивные векторные бэкенды (автоматическое переключение):
- SqliteVec ( 10K символов): 3-100x быстрее поиск, 99.9%+ recall, масштабируется до 100K+ векторов
- Auto-switching: автоматический выбор оптимального backend по размеру базы
📖 Подробнее: Run.Docs/Deployment/SEMANTIC_SETUP_GUIDE.md
Layered Indexing для Git workflow (включено по умолчанию)
Автоматическое управление индексами при работе с Git ветками:
Что происходит автоматически:
- ✅ При
git checkout feature→ индекс переключается на feature - ✅ При изменении файла → обновляется Working Delta ( # Trace|Debug|Information|Warning|Error|Critical
--load-solution # Автозагрузка .sln при старте --build-configuration # Debug|Release --disable-git # Отключить Git integration --symbol-cache # Включить persistent cache (по умолчанию: true) --symbol-cache-clear # Очистить cache при старте --low-memory # Режим экономии памяти (SQLite для reflection types)
Overlord (HTTP/SSE)
--port # HTTP порт (по умолчанию: 3001)
+ все опции Droid
**Layered Indexing** (настраивается в DI):services.WithLayeredIndexing( maxBranchDeltas: 50, // Max веток в кеше (LRU eviction) enablePersistence: true, // SQLite persistence deltaCompactionThreshold: 500 // Порог для compaction );
**Symbol Cache** (10x faster startup):services.WithUltrasharpToolsServices( symbolCacheOptions: new SymbolCacheOptions { Enabled = true, // Включить persistent cache ClearOnStartup = false, // Очистка при старте CacheDirectory = null // null = %TEMP%/UltrasharpTools/SymbolCache } );
**Low Memory Mode** (экономия ~50-100MB):services.WithUltrasharpToolsServices( lowMemoryMode: true // Использует SQLite для reflection types вместо FrozenDictionary );
Или через CLI:UltrasharpTools.Droid.exe --low-memory
**Оптимизации в режиме `--low-memory`:**
- SQLite FTS5 для reflection type search вместо in-memory FrozenDictionary
- LRU cache (500 типов) для горячих данных
- Lazy loading Type объектов через MetadataLoadContext
- Уменьшенные лимиты MemoryCache (150MB + 250MB вместо 500MB + 1GB)
---
## 🛠️ **Для разработчиков**
Инструкции по сборке из исходников, запуску тестов и разработке см. [Dev.Docs/CLAUDE.md](Dev.Docs/CLAUDE.md)
---
## 📄 **License**
MIT License - см. [LICENSE](LICENSE)
**Основан на**: [sharp-tools](https://github.com/tluyben/sharp-tools) by tluyben.
([Отличия от оригинального проекта](Dev.Docs/ULTRA-SHARPED.md))