Skip to main content
Glama
oaslananka

MCP Infra Lens

mcp-infra-lens

Анализ инцидентов в Linux через SSH с помощью инструментов MCP, учитывающих базовые показатели.

npm version npm downloads License: MIT Node 20+ MCP SDK Azure Pipelines

Демонстрация

mcp-infra-lens demo

Пример ответа 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, усредняет нагрузку на процессор и память за период сбора, сохраняет полученный снимок, а затем запускает обнаружение аномалий относительно выбранного базового показателя.

Инструменты

Инструмент

Что он делает

Ключевые параметры

analyze_server

Собирает выборочный снимок, сохраняет его и объясняет аномалии

connection, duration_minutes, include_processes, include_network

snapshot

Захватывает и сохраняет текущие метрики без анализа

connection

record_baseline

Сохраняет помеченную выборку здорового состояния для будущих сравнений

connection, label

compare_to_baseline

Сравнивает текущее состояние с именованным базовым показателем и объясняет различия

connection, baseline_label

get_history

Возвращает исторические данные по процессору, памяти или нагрузке из SQLite

host, metric, hours, label?

Быстрый старт

1. Запуск через npx

npx -y mcp-infra-lens

2. 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

Конфигурация

Переменная окружения

По умолчанию

Описание

INFRA_LENS_DB

~/.mcp-infra-lens/metrics.db

Путь к базе данных SQLite. Используйте :memory: для тестов

HOST

127.0.0.1

Адрес привязки для HTTP-транспорта

PORT

3000

Порт для HTTP-транспорта

Оценка состояния (Health Score)

  • 90-100: здорово, значимых аномалий не обнаружено

  • 70-89: умеренная или изолированная нагрузка

  • 40-69: несколько предупреждений или серьезная проблема в процессе

  • 0-39: критическое состояние, требуется срочное вмешательство

Рекомендуемый рабочий процесс

  1. Записывайте выборки record_baseline во время нормальной работы системы.

  2. Используйте analyze_server во время инцидентов или скачков нагрузки.

  3. Используйте compare_to_baseline для более детального сравнения с конкретным базовым состоянием.

  4. Используйте 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 или только в реестре

Лицензия

MIT

Install Server
A
security – no known vulnerabilities
A
license - permissive license
B
quality - B tier

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