MCP Infra Lens
mcp-infra-lens
Анализ инцидентов в Linux через SSH с помощью инструментов MCP, учитывающих базовые показатели.
Демонстрация

Пример ответа analyze_server, когда Claude спрашивает: "Что не так с prod-01?":
{
"host": "prod-01.internal",
"health_score": 42,
"summary": "Found 2 anomalies on prod-01.internal. Most urgent signal: CPU is at 91% (3.4σ above baseline 28.2%). Load is 7.2/6.8/5.1. Top CPU consumer: java (87%).",
"anomalies": [
{
"metric": "cpu",
"severity": "high",
"value": 91,
"z_score": 3.4,
"explanation": "CPU is at 91% (3.4σ above baseline 28.2%). Load is 7.2/6.8/5.1. Top CPU consumer: java (87%).",
"recommendation": "Investigate java (PID 18432) and review application logs or scale-out options."
},
{
"metric": "disk:/",
"severity": "high",
"value": 91,
"explanation": "Disk / is 91% full (182GB/200GB).",
"recommendation": "Run du -sh //* | sort -rh | head -20 and clean logs or temporary files."
}
]
}Что это делает
mcp-infra-lens подключается к хостам Linux по SSH, делает моментальный снимок инфраструктуры в реальном времени, сравнивает его с недавно записанными базовыми показателями и объясняет аномалии простым языком.
Собирает данные о процессоре, памяти, диске, сети, процессах и ОС, не изменяя целевой хост
Записывает историю локальных метрик в SQLite для создания базовых показателей, сравнений и поиска трендов
Использует z-оценку для обнаружения аномалий процессора при наличии достаточного количества базовых выборок
Объясняет вероятную причину нагрузки, а не просто выдает необработанные значения метрик
Поддерживает MCP через
stdioи Streamable HTTP
Как это работает
flowchart TD
A["Claude / Cursor / VS Code / Windsurf"] --> B["mcp-infra-lens"]
B --> C["server-core.ts"]
C --> D["collector.ts"]
C --> E["analyzer.ts"]
C --> F["baseline.ts + db.ts"]
D --> G["ssh.ts"]
G --> H["Linux host over SSH"]
F --> I["SQLite history + baselines"]analyze_server теперь выполняет реальный выборочный сбор данных в течение указанного duration_minutes, усредняет нагрузку на процессор и память за период сбора, сохраняет полученный снимок, а затем запускает обнаружение аномалий относительно выбранного базового показателя.
Инструменты
Инструмент | Что он делает | Ключевые параметры |
| Собирает выборочный снимок, сохраняет его и объясняет аномалии |
|
| Захватывает и сохраняет текущие метрики без анализа |
|
| Сохраняет помеченную выборку здорового состояния для будущих сравнений |
|
| Сравнивает текущее состояние с именованным базовым показателем и объясняет различия |
|
| Возвращает исторические данные по процессору, памяти или нагрузке из SQLite |
|
Быстрый старт
1. Запуск через npx
npx -y mcp-infra-lens2. Claude Desktop
Опубликованный пакет:
{
"mcpServers": {
"infra-lens": {
"command": "npx",
"args": ["-y", "mcp-infra-lens"],
"env": {
"INFRA_LENS_DB": "/Users/you/.mcp-infra-lens/metrics.db"
}
}
}
}Локальная разработка:
{
"mcpServers": {
"infra-lens": {
"command": "node",
"args": ["/absolute/path/to/mcp-infra-lens/dist/mcp.js"],
"env": {
"INFRA_LENS_DB": "/Users/you/.mcp-infra-lens/metrics.db"
}
}
}
}3. Docker
docker build -t mcp-infra-lens .
docker run --rm -it \
-v "$HOME/.mcp-infra-lens:/home/appuser/.mcp-infra-lens" \
mcp-infra-lensКонфигурация
Переменная окружения | По умолчанию | Описание |
|
| Путь к базе данных SQLite. Используйте |
|
| Адрес привязки для HTTP-транспорта |
|
| Порт для HTTP-транспорта |
Оценка состояния (Health Score)
90-100: здорово, значимых аномалий не обнаружено70-89: умеренная или изолированная нагрузка40-69: несколько предупреждений или серьезная проблема в процессе0-39: критическое состояние, требуется срочное вмешательство
Рекомендуемый рабочий процесс
Записывайте выборки
record_baselineво время нормальной работы системы.Используйте
analyze_serverво время инцидентов или скачков нагрузки.Используйте
compare_to_baselineдля более детального сравнения с конкретным базовым состоянием.Используйте
get_historyдля отслеживания трендов и отделения стандартных снимков от помеченных сессий базовых показателей.
Аутентификация
Схема ввода SSH поддерживает:
Аутентификацию по паролю
Аутентификацию по закрытому ключу (inline)
Опциональную поддержку парольной фразы для зашифрованных ключей
Поля с учетными данными удаляются из структурированных логов перед записью в stderr.
Заметки по безопасности
Сбор данных по SSH осуществляется только для чтения на целевом хосте
Учетные данные SSH никогда не сохраняются в SQLite
Проверка ключа хоста в v1 является разрешительной для совместимости; в производственных развертываниях следует ограничить исходящий сетевой доступ и планировать внедрение строгой проверки хостов в будущих релизах
HTTP-транспорт не имеет встроенной аутентификации; привязывайтесь к loopback и размещайте его за аутентифицированным обратным прокси в любых нелокальных развертываниях
См. SECURITY.md для ознакомления с политикой отчетности и областью хранения данных.
Интеграции
Claude Desktop
{
"mcpServers": {
"infra-lens": {
"command": "npx",
"args": ["-y", "mcp-infra-lens"],
"env": {
"INFRA_LENS_DB": "/Users/you/.mcp-infra-lens/metrics.db"
}
}
}
}Cursor IDE
{
"mcpServers": {
"infra-lens": {
"command": "npx",
"args": ["-y", "mcp-infra-lens"]
}
}
}VS Code (MCP extension)
{
"inputs": [],
"servers": {
"infra-lens": {
"type": "stdio",
"command": "npx",
"args": ["-y", "mcp-infra-lens"]
}
}
}Windsurf
{
"mcpServers": {
"infra-lens": {
"command": "npx",
"args": ["-y", "mcp-infra-lens"]
}
}
}Docker (HTTP transport)
docker run -d \
-p 3000:3000 \
-v $HOME/.mcp-infra-lens:/home/appuser/.mcp-infra-lens \
ghcr.io/oaslananka/mcp-infra-lens:latestЗатем настройте ваш MCP-клиент на использование http://localhost:3000.
Docker
Входящий в комплект образ Docker:
Собирает проект TypeScript на отдельном этапе
Пересобирает
better-sqlite3для архитектуры контейнера на обоих этапахЗапускается от имени пользователя
appuser(не root)Хранит данные SQLite в
/home/appuser/.mcp-infra-lens/metrics.db
Вклад в проект
Вклад приветствуется. Начните с CONTRIBUTING.md, затем используйте:
docs/usage.md для примеров инструментов
docs/architecture.md для карты компонентов
docs/testing.md для локальной проверки и проверок перед публикацией
RELEASE_POLICY.md для правил версионирования npm и MCP Registry
AGENTS.md,CLAUDE.md,GEMINI.md,.github/copilot-instructions.mdи.agent/rules/repository.mdдля специфических рекомендаций по AI-кодингу в репозитории
Операционные заметки / CI
azure-pipelines.ymlявляется каноническим CI-конвейером и теперь запускает этапQualityна Node 20 и Node 22, публикует артефакты JUnit и Cobertura, а также выполняет e2e-тестирование SSH на базе Docker на Node 20.azure/pipelines/publish.ymlостается ручным конвейером для релиза npm.azure/pipelines/mirror.ymlостается доступным для рабочих процессов зеркалирования репозиторияПубликуйте только после того, как локальный чек-лист перед публикацией и CI успешно пройдены на Node 20
Следуйте RELEASE_POLICY.md при принятии решения о том, требует ли изменение публикации пре-релиза в npm, MCP Registry или только в реестре
Лицензия
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/oaslananka/mcp-infra-lens'
If you have feedback or need assistance with the MCP directory API, please join our Discord server