📝 한줄 요약
지난 주에 - 슬랙 메시지에 이모지 하나만 달면 자동으로 리니어 이슈를 생성해주는 자동화를 했습니다.
관련 게시글
그런데 문제는 리니어 이슈 생성 시 연관 프로젝트를 자동으로 추천해주게 되어 있는데 정확도가 너무 낮았던겁니다. 그렇다고 정확도를 높이기 위해 매번 리니어 API를 호출하자니 시간도 오래 걸리도 토큰도 너무 많이 먹을 것 같아서 고민이었는데요...
김욱영 님이 만드신 MCP를 활용 - Linear Desktop App의 로컬 캐시를 활용하여 거의 100% 맞추게 됐습니다.
🎯 이런 분들께 도움돼요
AI 추천 정확도가 낮아서 고민이신 분
"AI한테 더 많은 맥락을 어떻게 줄까?" 고민이신 분
Linear + Slack 자동화 개선하고 싶으신 분
😫 문제 상황
Slack에서 :이슈: 이모지를 누르면 Linear 이슈가 자동 생성되는 봇을 운영 중입니다.
AI(Claude)가 대화 내용을 분석해서 적절한 프로젝트를 추천하는데, 문제는 체감 50% 확률로 틀린다는 것이었습니다.
"원티드 아웃바운드 메일 발송 건" → ❌ 일반 프로젝트로 분류
"Linear MCP 연동 이슈" → ❌ 엉뚱한 프로젝트로 분류
"오픈채팅방 자동화" → ❌ 매칭 실패
매번 Linear 들어가서 프로젝트를 수동으로 바꿔줘야 했습니다. 자동화의 의미가 없어지는 느낌이었어요.
🔍 원인 분석
기존에 AI한테 전달하던 정보:
프로젝트 이름
프로젝트 설명 (있으면)
팀 이름
문제: 프로젝트 이름만으로는 맥락을 알 수 없습니다.
예를 들어 "채용 프로젝트"라는 이름만 보고는 "원티드 아웃바운드"가 여기에 속하는지 AI가 알 길이 없어요.
프로젝트의 description도
💡 아이디어: 로컬 캐시에서 "최근 이슈 제목" 뽑기
저희 회사 욱영님이 만든 linear-mcp-fast를 보다가 아이디어를 얻었습니다.
Linear Desktop App은 성능을 위해 로컬에 IndexedDB 캐시를 유지합니다. 여기에 프로젝트, 이슈, 사용자 정보가 다 들어있어요.
핵심 아이디어: 프로젝트별 최근 이슈 제목 10개를 뽑아서 AI한테 같이 전달하면 어떨까?
[기존]
"채용 프로젝트 (Team: Product)"
[변경 후]
"채용 프로젝트 (Team: Product)
최근 이슈: 원티드 아웃바운드 메일 템플릿, 링크드인 DM 자동화, 채용 공고 업데이트"
이러면 AI가 "원티드 아웃바운드"라는 단어를 보고 채용 프로젝트로 정확히 매칭할 수 있습니다.
🛠️ 구현
1. Python 스크립트로 IndexedDB 읽기
Linear Desktop App의 IndexedDB 경로:
~/Library/Application Support/Linear/Local Storage/leveldb/
여기서 프로젝트 + 이슈 데이터를 추출하는 Python 스크립트를 작성했습니다.
# 프로젝트별 최근 10개 이슈 제목 추출
for project in projects:
recent_issues = [i for i in issues if i.get('projectId') == project['id']]
recent_issues.sort(key=lambda x: x.get('updatedAt', ''), reverse=True)
project['recentIssueTitles'] = [i['title'] for i in recent_issues[:10]]
2. Cloudflare KV에 동기화
wrangler kv:key put --binding=PROJECT_CACHE "projects" "$(cat projects.json)" --remote
3. macOS launchd로 5분마다 자동 동기화
제 Mac에서 5분마다 스크립트가 돌면서 KV에 업로드합니다. 팀원들이 Slack에서 이모지를 누르면 이 데이터를 사용하게 됩니다.
(팀원들이 Linear Desktop App을 쓰는지 여부는 상관없어요. 제 로컬 캐시를 공유하는 형태입니다.)
✅ 결과
정량적 개선
391개 추가 매칭 가능 키워드 (이슈 제목에만 있는 단어들)
프로젝트 이름/설명에 없던 용어들이 전부 매칭 가능해졌습니다
🎁 보너스: 토큰 절약
원래 Linear API를 매번 호출해서 프로젝트 목록을 가져왔는데, 이제 KV 캐시를 쓰니까 API 호출이 줄었습니다.
linear-mcp-fast의 핵심 가치도 이거예요. Linear API 호출 없이 로컬 캐시만으로 데이터를 읽어서 토큰 사용량을 획기적으로 줄일 수 있습니다.