错误自动处理服务

一个通过Loki/Tempo自动收集错误日志并通过GitHub API分析代码并创建GitHub问题的Kotlin MCP服务器。

  • by 12OneTwo12
  • Kotlin
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 12OneTwo12/error-autopilot-mcp

使用说明

Error Autopilot MCP (Kotlin)

Loki/Tempo에서 에러를 자동으로 수집하고, GitHub API를 통해 코드를 분석한 후 GitHub 이슈를 생성하는 Claude Code MCP 서버입니다.

Kotlin 버전 - 공식 Kotlin MCP SDK 사용

Features

  • 🔍 Loki 에러 모니터링: 실시간 에러 로그 수집 및 필터링
  • 🔗 Tempo 분산 트레이싱: trace_id로 전체 요청 흐름 추적
  • 📝 GitHub 이슈 자동 생성: 분석된 에러를 이슈로 변환
  • 🌐 GitHub API 코드 분석: 로컬 파일 없이 원격 저장소 코드 분석
  • 📋 이슈 템플릿 관리: GitHub 이슈 템플릿 가져오기 및 렌더링
  • 🌍 환경 분리 (dev/prod): 개발/운영 환경 별도 조회 지원

Action Screen

Triger Action Result Created ISSUE

Quick Start

# 1. 클론 및 빌드
git clone https://github.com/12OneTwo12/error-autopilot-mcp-kotlin.git
cd error-autopilot-mcp-kotlin
./gradlew build

# 2. Fat JAR 생성
./gradlew jar

# 3. 연결 테스트 (선택)
./gradlew testConnection

# 4. Claude Code에 등록

Claude Code 설정

~/.claude.json에 MCP 서버 추가:

{
  "mcpServers": {
    "error-autopilot": {
      "type": "stdio",
      "command": "java",
      "args": ["-jar", "/path/to/error-autopilot-mcp-kotlin/build/libs/error-autopilot-mcp-1.0.0.jar"],
      "env": {
        "LOKI_URL_DEV": "https://dev-loki.example.com",
        "TEMPO_URL_DEV": "https://dev-tempo.example.com",
        "LOKI_URL_PROD": "https://prod-loki.example.com",
        "TEMPO_URL_PROD": "https://prod-tempo.example.com"
      }
    }
  }
}

환경변수

모든 Loki/Tempo 도구는 env 파라미터를 지원합니다 (dev/prod, 기본: dev)

개발 환경 (DEV)

변수 설명 기본값
LOKI_URL_DEV 개발 Loki 서버 URL http://localhost:3100
TEMPO_URL_DEV 개발 Tempo 서버 URL http://localhost:3200

운영 환경 (PROD)

변수 설명 기본값
LOKI_URL_PROD 운영 Loki 서버 URL http://localhost:3100
TEMPO_URL_PROD 운영 Tempo 서버 URL http://localhost:3200

공통

변수 설명 기본값
LOKI_ORG_ID Loki 조직 ID default
TEMPO_ORG_ID Tempo 조직 ID default

MCP 도구

Note: 모든 Loki/Tempo 도구는 env 파라미터를 지원합니다. "dev" (기본) 또는 "prod"를 지정하세요.

Loki 로그 도구

도구 설명
fetch_errors Loki에서 에러 로그 조회 (env, severity, service 필터링)
query_logs 커스텀 LogQL 쿼리 실행
list_services 사용 가능한 서비스 목록 조회
list_labels Loki 레이블 목록 조회
get_error_summary 에러 요약 (서비스별/심각도별 통계)
test_connection Loki 연결 테스트

Tempo 트레이스 도구

도구 설명
get_trace trace_id로 분산 트레이스 조회
search_traces 서비스, 시간, 지속시간으로 트레이스 검색
test_tempo_connection Tempo 연결 테스트

쿼리 최적화

fetch_errors는 다음과 같은 최적화된 LogQL 쿼리를 생성합니다:

  • deployment_environment: 인덱싱된 레이블로 빠른 환경 필터링
  • level: structured metadata로 심각도 필터링 (대소문자 모두 매칭)

예시:

{deployment_environment="dev"} | level=~"error|ERROR|critical|CRITICAL"

이슈 템플릿 도구

도구 설명
list_issue_templates 등록된 이슈 템플릿 목록 조회
get_issue_template 특정 템플릿 상세 조회
import_github_template GitHub 리포에서 이슈 템플릿 가져오기
set_default_template 기본 템플릿 설정
render_issue 템플릿과 변수로 이슈 내용 생성

빌드

# 개발 빌드
./gradlew build

# Fat JAR 생성 (모든 의존성 포함)
./gradlew jar

# 테스트 실행
./gradlew test

# 연결 테스트 (실제 서버 필요)
./gradlew testConnection

# 실행
java -jar build/libs/error-autopilot-mcp-1.0.0.jar

프로젝트 구조

error-autopilot-mcp-kotlin/
├── src/main/kotlin/io/github/onetwo/errorautopilot/
│   ├── Main.kt                    # MCP 서버 진입점
│   ├── TestConnection.kt          # 연결 테스트 스크립트
│   ├── adapter/
│   │   ├── LokiAdapter.kt         # Loki API 클라이언트
│   │   └── TempoAdapter.kt        # Tempo API 클라이언트
│   ├── formatter/
│   │   └── Formatters.kt          # 출력 포맷터 (에러, 트레이스)
│   ├── model/
│   │   ├── ConfigModels.kt        # 설정 데이터 클래스
│   │   ├── ErrorModels.kt         # 에러 데이터 클래스
│   │   ├── LokiModels.kt          # Loki API 응답 모델
│   │   ├── Severity.kt            # 심각도 enum
│   │   ├── TemplateModels.kt      # 템플릿 데이터 클래스
│   │   └── TraceModels.kt         # 트레이스 데이터 클래스
│   ├── template/
│   │   └── TemplateManager.kt     # 이슈 템플릿 관리
│   └── tool/
│       └── ToolRegistry.kt        # MCP 도구 등록 및 핸들러
├── src/test/kotlin/               # 단위 테스트
├── src/main/resources/
│   └── logback.xml                # 로깅 설정
├── .claude/skills/
│   └── autopilot.md               # /autopilot 스킬 정의
├── build.gradle.kts
└── settings.gradle.kts

아키텍처

┌─────────────────────────────────────────────────────────────┐
│                     Claude Code                              │
└─────────────────────┬───────────────────────────────────────┘
                      │ MCP Protocol (STDIO)
┌─────────────────────▼───────────────────────────────────────┐
│                   Main.kt (MCP Server)                       │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────────────┐  │
│  │ToolRegistry │  │ Formatters  │  │  TemplateManager    │  │
│  └──────┬──────┘  └──────┬──────┘  └──────────┬──────────┘  │
└─────────┼────────────────┼────────────────────┼─────────────┘
          │                │                    │
┌─────────▼────────┐ ┌─────▼─────┐    ┌────────▼────────┐
│   LokiAdapter    │ │ 출력 변환  │    │  템플릿 CRUD    │
│   TempoAdapter   │ │           │    │  GitHub Import  │
└────────┬─────────┘ └───────────┘    └─────────────────┘
         │
    ┌────▼────┐  ┌─────────┐
    │  Loki   │  │  Tempo  │
    └─────────┘  └─────────┘

License

MIT