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
