ultrasharp-tools-mcp
Ultra-fast MCP server enabling AI agents to comprehensively work with C# solutions: instant structural search, code modification with automatic linting/formatting/fixes, static debugging and backwards crash analysis, integrated Git automation. Your AI's survival kit for massive codebases!
Links
README
From the repo.
██ ██
██ ██ ██ ██████ █████▄ ▄████▄
██ ██ ██ ██ ██▄▄██▄ ██▄▄██
██ ██ ██ ██ ██ ██ ██ ██
██ ██ ██████ ██ ██ ██ ██ ██
▀████▀ ▄▄▄▄ ▄▄ ▄▄ ▄▄▄ ▄▄▄▄ ▄▄▄▄
███▄▄ ██▄██ ██▀██ ██▄█▄ ██▄█▀
▄▄██▀ ██ ██ ██▀██ ██ ██ ██
╔═════════════════════════════════════════════════════╗
║ 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
📦 Установка
- Скачайте релиз на GitHub Releases и распакуйте.
- Настройте ИИ (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.cmd
Linux/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 |
| Индексация с кешем | < 9 секунд | Cache hit (5.4x быстрее) |
| Поиск символа | < 100 миллисекунд | Bloom filter + FastSymbolIndex |
| Переключение Git ветки | < 20 мс | Layered index (base + deltas) |
| Компиляция solution | В памяти | Мгновенная проверка ошибок |
Ожидаемое время загрузки по размеру проекта
| Размер проекта | Проектов | Время загрузки | Примечание |
|---|---|---|---|
| ~100K LOC | 10-20 | 5 сек | Типичный микросервис |
| ~500K LOC | 50-100 | 10 сек | Средний enterprise проект |
| ~1M LOC | 100-200 | 20 сек | Крупный монолит |
| ~2-3M LOC | 400-600 | 40 сек | ASP.NET Core (1504 проекта*) |
| ~4-5M LOC | 250-400 | 60 сек | Roslyn compiler (663 проекта*) |
🎯 Главные возможности
Точные модификации через Roslyn
"Добавь метод Calculate в класс MathService" → добавляется в правильное место с using'ами
Semantic Find & Replace
Находит все реальные использования символа через SymbolFinder, не просто текст
Автоматический Git workflow
Каждое изменение → автоматический commit с описанием изменений
Quality Tools из коробки
CSharpier форматирование + Roslyn analyzers + автофиксы прямо в процессе
Advanced Tracing (статическая отладка)
- TraceExecution: путь выполнения через Control Flow Graph
- TraceBackwards: обратная трассировка от точки краша
- SymbolicExecution: Z3 SMT solver для проверки path feasibility
Semantic Merge (умное слияние)
3-way merge с пониманием структуры кода, обнаружением движения и переименований
Поддержка любых .NET проектов
.NET Framework, Core, 5+, legacy csproj, SDK-style, respects .editorconfig
🔌 Режимы работы
UltrasharpTools предоставляет два режима работы под разные сценарии.
📍 Droid - Локальный режим (stdio)
Основной режим для разработчиков
Архитектура (три процесса):
┌─────────────────────────────────────────────────────────────────────────┐
│ Claude Desktop Claude Code Cursor VS Code + Continue.dev │
│ ↓ ↓ ↓ ↓ │
│ UltraSharp-tools.com .com .com .com │
│ (stdio bridge) (stdio bridge) ... ... │
└────────┬───────────────┬────────────┬──────────────┬────────────────────┘
│ │ │ │
└───────────────┴─────┬──────┴──────────────┘
│ Named Pipes (IPC)
↓
┌─────────────────────────────────────────────────────────────┐
│ UltrasharpTools.Droid.exe (singleton, auto-start) │
│ ├─ MCP Server (многоклиентный) │
│ ├─ Roslyn Workspace (анализ и модификация кода) │
│ ├─ Git Integration (автокоммиты) │
│ └─ VectorDB Client ──────┐ │
└───────────────────────────│─────────────────────────────────┘
│ Named Pipes (IPC)
↓
┌─────────────────────────────────────────────────────────────┐
│ UltrasharpTools.VectorDB.exe (singleton, lazy start) │
│ ├─ Semantic Index (sqlite-vec / vectorlite) │
│ ├─ Embedding Generator (TEI/Ollama) │
│ └─ Power Management (Efficiency Mode в idle) │
└─────────────────────────────────────────────────────────────┘
↓
Ваши C# проекты на диске
Почему три процесса?
| Процесс | Роль | Lifecycle |
|---|---|---|
| Comm | Универсальный stdio-bridge (~700 KB) | Один на каждый AI-агент/редактор |
| Droid | Roslyn workspace, Git, MCP tools | Singleton — один на все Comm |
| VectorDB | Semantic index, embeddings | Singleton — lazy start по требованию |
| Преимущество | Описание |
|---|---|
| Общие ресурсы | 5 редакторов используют ОДИН Droid+VectorDB вместо 5 копий (экономия 2-3 GB RAM на процесс) |
| Общий кеш | Roslyn compilation cache, symbol index — загружаются один раз |
| Изоляция памяти | VectorDB 500MB+ не влияет на Droid, Comm минималистичен |
| Независимый перезапуск | VectorDB перезапускается без потери Droid сессии |
| Энергосбережение | VectorDB → Efficiency Mode после 3 минут простоя |
| Ленивый запуск | VectorDB стартует только при первом semantic запросе |
Конфигурация (~/.claude.json):
Windows:
{
"mcpServers": {
"ultrasharp-tools": {
"command": "D:\\path\\to\\UltraSharp-tools.com"
}
}
}
macOS/Linux:
{
"mcpServers": {
"ultrasharp-tools": {
"command": "/path/to/ultrasharp-tools"
}
}
}
⚠️ macOS/Linux: Используйте
ultrasharp-toolswrapper (решает 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 автоматически использует Ollama
2. Централизованная семантика (Overlord)
Для командной работы - shared semantic index на Overlord сервере. Все разработчики используют единую базу векторов и embedding service.
Адаптивные векторные бэкенды (автоматическое переключение):
- SqliteVec (< 10K символов): Brute-force SIMD, 100% accuracy, fast indexing
- Vectorlite HNSW (> 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 (< 1ms)
- ✅ При
git commit→ Working Delta → Branch Delta - ✅ Cleanup orphaned branches автоматически
Производительность:
- Переключение ветки: 16.6ms вместо полной переиндексации
- Background compaction: 2.2s для 112 веток
- SQLite persistence: 5.4x быстрее холодного старта
Подробнее: Dev.Docs/Development/LAYERED_INDEXING_DESIGN.md
Конфигурация
Command line options:
# Droid (stdio)
--log-level <level> # Trace|Debug|Information|Warning|Error|Critical
--load-solution <path> # Автозагрузка .sln при старте
--build-configuration <config> # Debug|Release
--disable-git # Отключить Git integration
--symbol-cache # Включить persistent cache (по умолчанию: true)
--symbol-cache-clear # Очистить cache при старте
--low-memory # Режим экономии памяти (SQLite для reflection types)
# Overlord (HTTP/SSE)
--port <number> # 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
📄 License
MIT License - см. LICENSE
Основан на: sharp-tools by tluyben. (Отличия от оригинального проекта)
Links: GitHub • Documentation • MCP Protocol
Collected info
- ★ 15 stars
- ⎇ 1 forks
- Language: C#
- Source updated: 7/23/2026
Config for your environment
Replace {MCP_ENDPOINT_URL} with this MCP’s endpoint URL (from its repo or docs above). No API key — you connect directly.
Tool
OS
Config file: ~/.cursor/mcp.json
{
"mcpServers": {
"mcp-server": {
"url": "{MCP_ENDPOINT_URL}"
}
}
}Paste into mcpServers in the config file. Restart Cursor after saving.
If this MCP is also published on mcpchannel.ai, you can subscribe from Browse and use the gateway config there instead.