rxjs-mcp-server
RxJS MCP Server
Японская версия README доступна здесь
⚠️ Это неофициальный общественный проект, не связанный с командой RxJS.
Выполняйте, отлаживайте и визуализируйте потоки RxJS прямо из ИИ-ассистентов, таких как Claude.
Возможности
🚀 Выполнение потоков
Выполнение кода RxJS и захват эмиссий
Визуализация временной шкалы с метками времени
Отслеживание использования памяти
Поддержка всех основных операторов RxJS
📊 Marble-диаграммы
Генерация ASCII marble-диаграмм
Визуализация поведения потока во времени
Автоматическое обнаружение паттернов
Понятные легенды и пояснения
🔍 Анализ операторов
Анализ цепочек операторов на производительность
Обнаружение потенциальных проблем и узких мест
Предложение альтернативных подходов
Категоризация операторов по функциям
🛡️ Обнаружение утечек памяти
Идентификация неподписанных подписок
Обнаружение отсутствующих паттернов очистки
Рекомендации для конкретных фреймворков (Angular, React, Vue)
Предоставление примеров правильной очистки
💡 Предложения по паттернам
Получение проверенных в бою паттернов RxJS
Реализации для конкретных фреймворков
Охвачены распространенные сценарии использования:
HTTP-повторы с экспоненциальной задержкой
Поиск с автодополнением (typeahead)
Переподключение WebSocket
Валидация форм
Управление состоянием
И многое другое...
Установка
# Install globally
npm install -g @shuji-bonji/rxjs-mcp
# Or use with npx
npx @shuji-bonji/rxjs-mcpКонфигурация
Claude Desktop
Добавьте в ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"rxjs": {
"command": "npx",
"args": ["@shuji-bonji/rxjs-mcp"]
}
}
}VS Code с Continue/Copilot
Добавьте в .vscode/mcp.json:
{
"mcpServers": {
"rxjs": {
"command": "npx",
"args": ["@shuji-bonji/rxjs-mcp"]
}
}
}Cursor
Добавьте в ~/.cursor/mcp.json:
{
"mcpServers": {
"rxjs": {
"command": "npx",
"args": ["@shuji-bonji/rxjs-mcp"]
}
}
}Доступные инструменты
execute_stream
Выполняет код RxJS и захватывает эмиссии потока с временной шкалой.
Инструмент принимает либо выражение, которое вычисляется как Observable, либо фрагмент кода, заканчивающийся таким выражением — return является необязательным.
// ✅ Trailing expression (v0.2.0+): the last expression is returned implicitly
interval(100).pipe(
take(5),
map((x) => x * 2),
);
// ✅ Declaration + trailing reference
const stream$ = interval(100).pipe(
take(5),
map((x) => x * 2),
);
stream$;
// ✅ Explicit return (always works)
return interval(100).pipe(
take(5),
map((x) => x * 2),
);generate_marble
Генерирует ASCII marble-диаграммы из данных событий.
// Input: array of timed events
[
{ time: 0, value: 'A' },
{ time: 50, value: 'B' },
{ time: 100, value: 'C' },
];
// Output: A----B----C--|analyze_operators
Анализирует цепочки операторов RxJS на предмет производительности и лучших практик.
// Analyzes chains like:
source$.pipe(
map((x) => x * 2),
filter((x) => x > 10),
switchMap((x) => fetchData(x)),
retry(3),
);detect_memory_leak
Обнаруживает потенциальные утечки памяти и отсутствие очистки.
// Detects issues like:
- Missing unsubscribe
- No takeUntil operator
- Uncompleted Subjects
- Infinite intervalssuggest_pattern
Получение готовых к использованию паттернов для распространенных сценариев.
Доступные паттерны:
http-retry- Устойчивый HTTP с повторамиsearch-typeahead- Поиск с задержкой (debounce)polling- Умный опрос с задержкойwebsocket-reconnect- Автоматическое переподключение WebSocketform-validation- Реактивная валидация формstate-management- Простое хранилище состоянияcache-refresh- Кэш со стратегией обновленияИ многое другое...
Примеры использования
С Claude
User: "Execute this RxJS stream and show me the output"
Claude: I'll execute that RxJS stream for you.
[Uses execute_stream tool]
## Stream Execution Result
✅ Completed
Execution Time: 523ms
Values Emitted: 5
### Emitted Values
[0, 2, 4, 6, 8]Отладка утечек памяти
User: "Check this Angular component for memory leaks"
Claude: I'll analyze your component for potential memory leaks.
[Uses detect_memory_leak tool]
## Memory Leak Analysis
⚠️ Potential leaks detected
1. 🔴 subscription (high severity)
- Found 3 subscribe() calls but only 1 unsubscribe()
- Fix: Use takeUntil pattern with destroy$ subjectПолучение паттернов
User: "Show me how to implement search with RxJS"
Claude: I'll show you the search typeahead pattern.
[Uses suggest_pattern tool with useCase: 'search-typeahead']
## Search Typeahead with Debounce
[Full implementation with explanation]Безопасность
Инструмент execute_stream запускает предоставленный пользователем код в изолированном потоке Worker, чтобы предотвратить:
Загрязнение основного процесса
Утечки ресурсов из-за бесконечных циклов или таймеров
Доступ к чувствительным API Node.js (process, fs и т.д.)
Выполнение принудительно завершается, если оно превышает настроенное время ожидания.
Разработка
# Clone the repository
git clone https://github.com/shuji-bonji/rxjs-mcp-server
cd rxjs-mcp-server
# Install dependencies
npm install
# Build
npm run build
# Run tests
npm test # Unit tests (vitest)
npm run test:mcp # MCP integration test
npm run test:inspector # MCP Inspector (GUI)
# Run in development
npm run devРелиз
Релизы автоматизированы через GitHub Actions и публикуются в npm с использованием Trusted Publisher (OIDC) — статические токены не используются, и каждый релиз содержит аттестацию происхождения npm. См. RELEASING.md для полного описания рабочего процесса (и начальной настройки npm).
Интеграция с другими MCP-серверами
RxJS MCP Server отлично работает вместе с:
Angular MCP - Для создания каркаса проектов Angular
TypeScript MCP - Для проверки типов
ESLint MCP - Для контроля качества кода
Будущая интеграция Meta-MCP позволит беспрепятственно координировать работу этих инструментов.
Архитектура
┌─────────────────┐
│ AI Assistant │
│ (Claude, etc) │
└────────┬────────┘
│
MCP Protocol
│
┌────────┴────────┐
│ RxJS MCP Server│
├─────────────────┤
│ • execute_stream│
│ • generate_marble│
│ • analyze_operators│
│ • detect_memory_leak│
│ • suggest_pattern│
└─────────────────┘Вклад в проект
Вклад приветствуется! Пожалуйста, не стесняйтесь отправлять PR.
Лицензия
MIT
Автор
Shuji Bonji
Ссылки
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/shuji-bonji/rxjs-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server