Skip to main content
Glama
oaslananka

MCP Infra Lens

mcp-infra-lens

기준선을 인식하는 MCP 도구를 사용하여 SSH를 통해 Linux 인시던트를 설명합니다.

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

데모

mcp-infra-lens demo

Claude가 "prod-01에 무슨 문제가 있나요?"라고 물었을 때의 샘플 analyze_server 응답:

{
  "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는 SSH를 통해 Linux 호스트에 연결하여 실시간 인프라 스냅샷을 캡처하고, 최근 기록된 기준선과 비교하며, 이상 징후를 평이한 영어로 설명합니다.

  • 대상 호스트를 변경하지 않고 CPU, 메모리, 디스크, 네트워크, 프로세스 및 OS 데이터를 수집합니다.

  • 기준선, 비교 및 추세 조회를 위해 로컬 메트릭 기록을 SQLite에 저장합니다.

  • 충분한 기준선 샘플이 존재하면 z-점수 분석을 사용하여 CPU 이상 징후를 탐지합니다.

  • 단순한 원시 메트릭 값이 아닌 압박의 원인을 설명합니다.

  • stdio 및 Streamable HTTP를 통한 MCP를 지원합니다.

작동 방식

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 동안 실제 샘플링 수집을 수행하고, 수집 기간 동안의 CPU 및 메모리 압박을 평균화하며, 결과 스냅샷을 유지한 다음 선택된 기준선에 대해 이상 탐지를 실행합니다.

도구

도구

기능

주요 매개변수

analyze_server

샘플링된 스냅샷을 수집, 저장하고 이상 징후를 설명합니다

connection, duration_minutes, include_processes, include_network

snapshot

분석 없이 현재 시점의 메트릭을 캡처하고 저장합니다

connection

record_baseline

향후 비교를 위해 레이블이 지정된 정상 상태 샘플을 저장합니다

connection, label

compare_to_baseline

현재 상태를 명명된 기준선과 비교하고 차이점을 설명합니다

connection, baseline_label

get_history

SQLite에서 과거 CPU, 메모리 또는 부하 지점을 반환합니다

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 전송을 위한 포트

상태 점수

  • 90-100: 정상, 유의미한 이상 징후 없음

  • 70-89: 경미하거나 고립된 압박

  • 40-69: 다수의 경고 또는 진행 중인 주요 문제

  • 0-39: 긴급한 수정이 필요한 위기 상태

권장 워크플로우

  1. 정상 작동 기간 동안 record_baseline 샘플을 기록합니다.

  2. 인시던트나 부하 급증 시 analyze_server를 사용합니다.

  3. 명명된 기준선과 더 정밀한 차이점을 보려면 compare_to_baseline을 사용합니다.

  4. 추세를 조사하고 기본 스냅샷과 레이블이 지정된 기준선 세션을 구분하려면 get_history를 사용합니다.

인증

SSH 입력 스키마는 다음을 지원합니다:

  • 비밀번호 인증

  • 인라인 개인 키 인증

  • 암호화된 키에 대한 선택적 암호문 지원

자격 증명 필드는 stderr에 기록되기 전에 구조화된 로그에서 삭제됩니다.

보안 참고 사항

  • SSH 수집은 대상 호스트에서 읽기 전용입니다.

  • SSH 자격 증명은 SQLite에 저장되지 않습니다.

  • 호환성을 위해 v1에서는 호스트 키 확인이 허용적입니다. 프로덕션 배포 시에는 아웃바운드 네트워크 액세스를 제한하고 향후 릴리스에서 엄격한 호스트 확인을 적용할 계획을 세워야 합니다.

  • HTTP 전송에는 내장된 인증이 없습니다. 루프백에 바인딩하고 로컬이 아닌 배포 환경에서는 인증된 리버스 프록시 뒤에 배치하십시오.

보고 정책 및 저장된 데이터 범위는 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 확장)

{
  "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 전송)

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로 실행됩니다.

  • SQLite 데이터를 /home/appuser/.mcp-infra-lens/metrics.db에 저장합니다.

기여

기여를 환영합니다. CONTRIBUTING.md에서 시작한 다음 다음을 사용하십시오:

운영 / CI 참고 사항

  • azure-pipelines.yml은 표준 CI 파이프라인이며 현재 Node 20 및 Node 22에서 Quality 단계를 실행하고, JUnit 및 Cobertura 아티팩트를 게시하며, Node 20에서 Docker 기반 SSH e2e 커버리지를 실행합니다.

  • .azure/pipelines/publish.yml은 수동 npm 릴리스 파이프라인으로 유지됩니다.

  • .azure/pipelines/mirror.yml은 저장소 미러링 워크플로우를 위해 계속 사용할 수 있습니다.

  • 로컬 게시 전 체크리스트와 CI가 모두 Node 20에서 정상적으로 통과된 후에만 게시하십시오.

  • 변경 사항에 npm, MCP Registry 또는 레지스트리 전용 사전 릴리스 게시가 필요한지 결정할 때는 RELEASE_POLICY.md를 따르십시오.

라이선스

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