AI(Claude, Cursor, VS Code)로 Microsoft Teams 메시지 읽기 — 토큰 불필요, Graph API 불필요
OAuth나 Graph API 없이 AI에 Microsoft Teams 접근 권한을 부여하세요. Claude, Cursor, VS Code, ChatGPT와 함께 작동합니다. Mac의 로컬 Teams 캐시를 읽습니다.
다른 솔루션이 Graph API를 요구하는 이유
Microsoft Teams는 AI 어시스턴트와 통합하기 가장 어려운 생산성 앱 중 하나입니다. 프로그래밍 방식으로 Teams 데이터에 접근하는 공식적인 방법은 Microsoft Graph API를 통하는 것이며, 다음이 필요합니다:
- Azure AD 앱 등록 — 올바른 권한을 가진 앱을 Microsoft Entra(이전 명칭 Azure AD)에서 생성해야 합니다
- 관리자 동의 — 테넌트 관리자가 앱의 Teams 데이터 접근을 승인해야 하는데, 대부분의 IT 부서는 이를 꺼립니다
- OAuth 토큰 관리 — 액세스 토큰은 만료되며, 갱신이 필요하고, 안전하게 저장되어야 합니다
- 위임 권한 대 애플리케이션 권한 — 권한 모델이 복잡하며, 올바른 범위를 얻는 것은 시행착오의 연속입니다
- 속도 제한 — Graph API는 특히 Teams 엔드포인트에 대해 요청을 공격적으로 제한합니다
대부분의 개인과 소규모 팀에게 이것은 시작조차 할 수 없는 일입니다. 파일이나 데이터베이스에 연결하듯이 그냥 “AI를 Teams에 연결”할 수는 없습니다. 조직적 부담이 엄청납니다.
LMCP가 Teams를 다르게 읽는 방법
LMCP는 Graph API를 완전히 우회합니다. Microsoft 서버로 네트워크 요청을 보내는 대신, Teams 데스크톱 앱이 Mac에 유지하는 로컬 캐시에서 Teams 데이터를 읽습니다.
Microsoft Teams(새 버전, Teams 2.0이라고도 함)는 디스크의 LevelDB로 뒷받침되는 IndexedDB 데이터베이스에 데이터를 저장하는 Electron 기반 앱입니다. 이 데이터베이스에는 최근 채팅, 채널 메시지, 팀 멤버십, 대화 메타데이터가 포함되어 있으며 — 모두 Teams의 정상적인 작동의 일부로 로컬에 저장됩니다.
LMCP는 전용 파서를 사용하여 이 LevelDB 데이터베이스를 직접 읽습니다. 네트워크 요청도, API 토큰도, 관리자 승인도 없습니다. Teams가 설치되어 있고 로그인되어 있다면, 메시지는 이미 디스크에 있으며 LMCP가 이를 읽을 수 있습니다.
접근할 수 있는 것
LMCP를 통해 AI 어시스턴트는 다음을 할 수 있습니다:
- 채팅 목록 보기 — 최근 활동이 있는 모든 1:1 및 그룹 대화를 확인합니다
- 채팅 메시지 읽기 — 모든 채팅 대화의 전체 메시지 기록을 가져옵니다
- 팀 목록 보기 — 자신이 속한 Teams 워크스페이스를 확인합니다
- 채널 목록 보기 — 팀 내의 채널을 둘러봅니다
- 채널 메시지 읽기 — 접근 권한이 있는 모든 채널의 메시지를 가져옵니다
이것은 읽기 전용 접근입니다. LMCP는 메시지를 보내거나 Teams에서 무언가를 수정할 수 없습니다 — 머신에 이미 캐시된 것만 읽습니다.
설치 방법
LMCP 다운로드 후 설치하세요:
- 다운로드 폴더에서 다운로드한
.dmg파일을 엽니다 - Local MCP를 응용 프로그램 폴더로 드래그합니다
- 응용 프로그램 폴더에서 Local MCP를 엽니다 — 메뉴 막대에 나타납니다
약 30초 정도 걸립니다. AI 클라이언트는 자동으로 구성됩니다.
설치 후, AI 클라이언트를 재시작하여 새 MCP 도구를 인식하도록 하세요:
- Claude Desktop — 완전히 종료(Cmd+Q)한 후 다시 엽니다
- Cursor — 편집기를 재시작합니다
- VS Code — 창을 다시 로드합니다(Cmd+Shift+P → “Reload Window”)
- ChatGPT / Windsurf — 애플리케이션을 재시작합니다
Microsoft Teams가 설치되어 있고 로그인되어 있는지 확인하세요. LMCP가 자동으로 Teams 데이터를 감지합니다.
Teams를 위한 추가 구성은 필요 없습니다 — API 키도, 부여할 권한도 없습니다. Teams 데이터가 디스크에 있으면 LMCP가 찾아냅니다.
예시 프롬프트
연결되면 AI 어시스턴트와 다음 프롬프트를 시도해 보세요:
- “오늘 General 채널에서 팀이 무엇을 논의했나요?” — 최근 채널 메시지를 읽고 핵심 포인트를 요약합니다
- “Marco와의 대화를 보여줘” — 특정 채팅의 최근 메시지를 나열합니다
- “배포 마감일에 관한 메시지를 찾아줘” — 채팅과 채널을 검색합니다
- “오늘 아침 Teams에서 내가 놓친 것을 요약해줘” — 여러 대화에 걸친 메시지를 집계합니다
- “오늘 어떤 채널에 새 메시지가 있나요?” — 최근 활동을 위해 팀을 스캔합니다
- “디자인 팀이 새 목업에 대해 뭐라고 했나요?” — 관련 논의를 찾아 요약합니다
AI 어시스턴트는 바쁜 채널을 따라잡는 데 특히 유용합니다. 수백 개의 메시지를 스크롤하는 대신, 중요한 것의 요약을 요청할 수 있습니다.
제한 사항
LMCP는 실시간 API가 아니라 로컬 캐시에서 읽기 때문에, 알아두어야 할 몇 가지 본질적인 제한이 있습니다:
- 캐시된 메시지만 사용 가능 — Teams는 최근 대화를 캐시하지만, 매우 오래된 메시지는 디스크에 없을 수 있습니다. 몇 달 동안 채팅을 열지 않았다면, 그 메시지는 캐시에 없을 수 있습니다.
- 읽기 전용 — LMCP를 통해 메시지를 읽을 수는 있지만 보내거나 편집하거나 삭제할 수는 없습니다
- Teams 데스크톱 앱 필요 — Teams의 웹 버전은 LMCP가 읽을 수 있는 로컬 캐시를 생성하지 않습니다
- 캐시 최신성 — 캐시는 Teams가 동기화할 때 업데이트되며, 이는 보통 Teams 실행 중에 거의 실시간으로 발생합니다. Teams가 닫혀 있으면 캐시는 마지막으로 열려 있던 시점의 상태를 반영합니다.
- 멀티 테넌트 — 여러 조직에 로그인되어 있는 경우, LMCP는 그 모두의 데이터를 읽을 수 있습니다
기술 심층 분석: LevelDB 파싱이 작동하는 방식
기술적으로 궁금한 분들을 위해, LMCP가 로컬 캐시에서 Teams 데이터를 추출하는 방법은 다음과 같습니다.
Microsoft Teams(새 버전)는 다음 위치의 IndexedDB 데이터베이스에 데이터를 저장합니다:
~/Library/Containers/com.microsoft.teams2/Data/Library/Application Support/Microsoft/Teams/Profiles/*/IndexedDB/https_teams.microsoft.com_0.indexeddb.leveldb
이것은 Chrome, Electron 앱 및 기타 Chromium 기반 애플리케이션에서 사용하는 것과 동일한 형식인 Chromium 스타일의 LevelDB 데이터베이스입니다. 데이터에는 메시지 내용, 메타데이터, 타임스탬프, 참가자 정보를 담은 직렬화된 JavaScript 객체가 포함됩니다.
LMCP는 이 LevelDB 형식을 파싱하기 위해 ccl_chromium_reader 라이브러리 — 원래 디지털 포렌식을 위해 개발된 오픈 소스 도구 — 를 사용합니다. 이 라이브러리는 다음을 포함한 Chromium의 IndexedDB 구현의 복잡성을 처리합니다:
- JavaScript 객체를 위한 V8 직렬화 형식
- LevelDB의 추가 전용(append-only) 로그 구조 및 압축
- IndexedDB의 객체 저장소 및 인덱스 구성
- 삭제되거나 덮어쓰인 레코드 처리
파싱된 데이터는 그런 다음 AI 어시스턴트가 작업할 수 있는 깔끔한 JSON으로 필터링되고 구조화됩니다. 메시지 내용, 발신자 정보, 타임스탬프, 대화 메타데이터가 추출되어 MCP 도구를 통해 제공됩니다.
이 접근 방식은 설계상 읽기 전용입니다 — LevelDB는 읽기 모드로 열리며, 어떤 데이터도 다시 쓰이지 않습니다. LMCP는 Teams 캐시를 손상시키거나 수정할 수 없습니다.
다른 접근 방식과의 비교
AI가 Teams 데이터에 접근하는 방법은 몇 가지가 있습니다. 비교하면 다음과 같습니다:
- Microsoft Graph API — 완전한 읽기/쓰기 접근이 가능하지만 Azure AD, 관리자 동의, 토큰 관리가 필요합니다. IT 지원이 있는 엔터프라이즈 배포에 가장 적합합니다.
- Microsoft 365 Connector(공식 Anthropic) — 내부적으로 Graph API를 사용하며, Entra 테넌트 관리자 설정이 필요합니다. IT 부서가 협조적이라면 좋습니다.
- LMCP(로컬 캐시) — 읽기 전용, 구성 불필요, 즉시 작동합니다. 빠른 접근이 필요한 개인과 소규모 팀에게 가장 적합합니다.
실제 워크플로우
개별 메시지를 읽는 것은 시작에 불과합니다. 진정한 가치는 AI 어시스턴트에게 대화 전반의 정보를 종합하고 행동을 취하도록 요청할 때 나옵니다:
일일 스탠드업 요약
오늘 엔지니어링 채널 메시지를 읽고, 각자가 무엇을 작업 중인지 추출하고, 차단 요소를 식별하고, 요약 노트를 만들어줘.
바쁜 채널을 스크롤하는 대신, AI가 모든 것을 읽고 사람별로 정리하며 차단 요소를 강조합니다. 모든 메시지를 읽지 않고도 정보를 파악해야 하는 관리자에게 완벽합니다.
Teams로부터 회의 준비
지난주 동안 모든 채널에서 팀이 Project X에 대해 논의한 내용을 확인하고, 주요 결정 사항을 요약하고, 내일 회의에서 내가 제기해야 할 미해결 질문을 나열해줘.
AI가 여러 채널을 스캔하고, 관련 논의를 찾고, 브리핑 문서를 준비합니다. 따라잡으려 허둥대는 대신 충분히 정보를 갖춘 채로 회의에 들어갑니다.
채팅에서 작업 생성
오늘 내 Teams 채팅을 살펴보고, 작업이나 내가 한 약속처럼 보이는 것을 찾아, 누가 요청했고 언제인지와 함께 나열해줘.
Teams의 대화에는 종종 암묵적인 약속이 포함됩니다 — “그건 내가 알아볼게” 또는 “문서를 보내줄게.” AI가 이런 것들을 찾아 드러내어 아무것도 놓치지 않게 합니다.
프로젝트 문서화
#architecture 채널의 마지막 50개 메시지를 읽고, API 설계에 대해 내려진 결정을 추출하고, 아키텍처 결정 로그가 담긴 Word 문서를 만들어줘.
중요한 결정은 종종 채팅 기록에 묻힙니다. AI가 이를 추출하고, 적절한 문서로 구조화하고, 저장하여 팀이 영구적인 기록을 갖게 합니다.
LMCP는 또한 AI 어시스턴트를 이메일, Outlook, Calendar, Contacts, OneDrive, 로컬 파일에 연결합니다. 가이드 전체 목록을 보거나 local-mcp.com에서 자세히 알아보세요.