Graph API 없이 Cursor에서 Microsoft Teams 읽는 방법 (Claude, VS Code, Windsurf)
Mac에서 Cursor, Claude Desktop, VS Code 또는 모든 MCP 클라이언트에 Microsoft Teams 메시지 접근 권한을 부여하세요. Graph API도, OAuth도, Azure AD도 필요 없습니다. LevelDB를 통해 로컬 Teams 캐시에서 직접 읽어옵니다.
문제점
한창 코딩에 몰입해 있는데 누군가 Teams에서 API 엔드포인트 스키마가 변경되었다고 언급합니다. 또는 동료가 세 시간 전에 채널에 새 데이터베이스 자격 증명을 올렸습니다. 보통이라면 Teams로 전환해서 대화를 스크롤하고 관련 메시지를 찾아 정보를 복사한 다음 다시 에디터로 돌아와야 합니다.
Teams에 프로그래밍 방식으로 접근하는 공식적인 방법은 Microsoft Graph API인데, 이는 Azure AD 앱 등록, OAuth 범위 구성, 토큰 갱신 처리, 속도 제한 대응을 필요로 합니다. 코딩하면서 메시지 하나를 읽고 싶을 뿐인 개발자에게는 터무니없이 많은 절차입니다.
LMCP가 해결하는 방법
LMCP는 완전히 다른 접근 방식을 취합니다. Microsoft’s의 클라우드 API를 거치는 대신, Mac의 로컬 캐시에서 Teams 데이터를 직접 읽습니다. Teams 데스크톱 앱은 메시지를 LevelDB 데이터베이스(Chromium 기반 렌더러의 IndexedDB 백업 저장소)에 저장합니다. LMCP는 이 데이터베이스를 로컬에서 읽으며, 이는 곧 다음을 의미합니다:
- Microsoft Graph API 등록 불필요
- OAuth 토큰이나 Azure AD 구성 불필요
- 속도 제한이나 API 할당량 없음
- Microsoft 서버로의 네트워크 요청 없음
- VPN이나 회사 프록시가 Graph API를 차단해도 작동
설치하고 나면 AI 어시스턴트에게 다음과 같은 것을 요청할 수 있습니다:
API 마이그레이션에 관한 내 Teams 채널의 읽지 않은 메시지를 요약해 줘
AI가 LMCP를 통해 메시지를 읽고 에디터 안에서 바로 요약을 제공합니다. 컨텍스트 전환도, 복사-붙여넣기도 없습니다.
작동 원리
Mac의 Microsoft Teams 데스크톱 앱(새 Teams, 버전 2.x)은 Electron 기반으로 만들어졌으며 데이터를 다음 위치의 Chromium 기반 LevelDB 데이터베이스에 저장합니다:
~/Library/Containers/com.microsoft.teams2/.../https_teams.microsoft.com_0.indexeddb.leveldb
LMCP는 Chromium IndexedDB 저장소를 읽기 위한 오픈소스 라이브러리인 ccl_chromium_reader를 사용해 이 데이터베이스를 파싱합니다. 단 한 번의 네트워크 요청도 없이 채팅 메시지, 채널 게시물, 팀 이름, 대화 메타데이터를 추출합니다.
데이터는 읽기 전용입니다. LMCP는 메시지를 보내거나, 대화를 수정하거나, Teams 데이터베이스에 쓸 수 없습니다. Teams 앱이 이미 로컬에 캐시한 내용만 읽습니다.
1단계: Mac에 LMCP 설치하기
LMCP 다운로드 후 설치하세요:
- 다운로드 폴더에서 받은
.dmg파일을 엽니다 - Local MCP를 응용 프로그램 폴더로 드래그합니다
- 응용 프로그램 폴더에서 Local MCP를 엽니다 — 메뉴 막대에 나타납니다
약 30초 정도 걸립니다. AI 클라이언트는 자동으로 구성됩니다.
2단계: AI 클라이언트 재시작하기
설치 후, 새 MCP 도구를 인식하도록 AI 클라이언트를 재시작하세요:
- Cursor — 에디터를 재시작합니다
- Claude Desktop — 완전히 종료(Cmd+Q)한 뒤 다시 엽니다
- VS Code — 창을 다시 로드합니다 (Cmd+Shift+P → “Reload Window”)
- ChatGPT / Windsurf — 애플리케이션을 재시작합니다
3단계: Teams가 실행 중인지 확인하기
LMCP는 로컬 Teams 캐시에서 읽기 때문에, Teams 데스크톱 앱이 설치되어 있어야 하고 최소 한 번은 로그인한 적이 있어야 합니다. 쿼리하는 순간에 앱이 실행 중일 필요는 없습니다 — 캐시된 데이터는 디스크에 유지됩니다. 하지만 가장 최근 메시지를 위해서는 Teams를 계속 실행해 두어 새 데이터를 동기화하게 하세요.
4단계: AI에서 Teams 쿼리하기
AI 클라이언트를 열고 다음과 같은 프롬프트를 시도해 보세요:
- “내 최근 Teams 채팅 목록을 보여줘” — 1:1 및 그룹 대화를 확인합니다.
- “백엔드 팀이 오늘 #deployments 채널에 무엇을 올렸어?” — 특정 채널을 검색합니다.
- “API 마이그레이션에 관한 내 Teams 채널의 읽지 않은 메시지를 요약해 줘” — 집중된 요약을 받습니다.
- “Sarah가 새 스테이징 URL을 공유한 메시지를 찾아줘” — 모든 대화에서 검색합니다.
어떤 Teams 데이터를 사용할 수 있나요?
LMCP는 AI 어시스턴트에 다음 Teams 도구를 제공합니다:
- 채팅 목록 — 1:1 대화와 그룹 채팅을 탐색합니다
- 채팅 메시지 읽기 — 모든 채팅 대화의 내용을 가져옵니다
- 팀 목록 — 소속된 모든 팀을 확인합니다
- 채널 목록 — 팀 내 채널을 탐색합니다
- 채널 메시지 읽기 — 모든 채널의 게시물과 답글을 가져옵니다
모든 작업은 읽기 전용입니다. LMCP를 통해 메시지를 보낼 수는 없습니다.
개발자 워크플로
코드 리뷰 컨텍스트
결제 서비스 리팩터링에 관한 논의가 있었는지 내 Teams 메시지를 확인하고, 이 저장소의 열린 PR을 본 다음 둘을 함께 요약해 줘.
AI가 Teams와 코드베이스에서 동시에 컨텍스트를 가져와, 리뷰를 시작하기 전에 전체 그림을 제공합니다.
장애 대응
Teams의 #incidents 채널에서 최신 메시지를 읽고 이 프로젝트의 오류 로그를 확인해 줘. 500 오류의 원인은 무엇일 가능성이 높아?
장애 상황에서 에디터 안에 바로 Teams 컨텍스트가 있으면 결정적인 몇 분을 절약할 수 있습니다.
자주 묻는 질문
이것이 구버전 Teams 앱(Teams Classic)에서도 작동하나요?
아니요. 로컬 LevelDB 방식은 새 Microsoft Teams(버전 2.x), 즉 Microsoft가 2023년부터 배포해 온 Electron 기반 앱에서 작동합니다. 구버전 Teams Classic은 다른 저장 형식을 사용했습니다. 아직 Teams Classic을 사용 중이라면 새 버전으로 업데이트하세요 — Microsoft는 2년 넘게 이 마이그레이션을 추진해 왔습니다.
LMCP가 Teams에서 메시지를 보낼 수 있나요?
아니요. Teams 접근은 읽기 전용입니다. LMCP는 로컬 캐시에서 읽지만 거기에 쓸 수는 없습니다. 메시지를 보내려면 Graph API가 필요한데, 이는 로컬 우선 접근 방식의 목적을 무색하게 만듭니다. 메시지를 보내야 한다면 Teams를 직접 사용하세요.
Teams 데이터가 오래된 경우는 어떻게 되나요?
LMCP는 로컬 캐시에 있는 내용을 읽습니다. Teams 데스크톱 앱이 실행 중이고 연결되어 있으면 캐시는 최신 상태를 유지합니다. Teams가 한동안 닫혀 있었다면 데이터는 마지막으로 동기화된 시점을 반영합니다. 가장 신선한 데이터를 위해서는 Teams를 백그라운드에서 실행해 두세요.
모든 주요 AI 클라이언트와 호환
이 가이드는 Cursor에 초점을 맞추지만, LMCP는 모든 MCP 호환 클라이언트와 작동합니다. Claude Desktop, Copilot을 사용하는 VS Code, Windsurf, ChatGPT, Zed 등에서도 Teams에 접근할 수 있습니다. 설치 명령은 모두 동일합니다.
LMCP로 또 무엇을 할 수 있나요?
Teams는 LMCP가 AI 어시스턴트에 연결하는 앱 중 하나일 뿐입니다. Mail 및 이메일, OAuth 없는 Calendar, Contacts, OneDrive, Outlook 등에도 접근할 수 있습니다. 사용 가능한 모든 통합은 전체 가이드 목록에서 확인하세요.