Skip to main content
Glama

Teams MCP Server

Claude를 위한 최초의 오픈소스 Microsoft Teams 커넥터입니다. 모든 Microsoft 365 사용자는 회사 계정으로 로그인하기만 하면 연결할 수 있습니다. 설정, 자격 증명, 자체 호스팅이 필요 없습니다.

메시지 읽기, 채널 목록 보기, Teams 전체 검색, 메시지 보내기 — 모두 Claude Code, Claude Desktop 또는 Claude Cowork에서 가능합니다.

SurgeEnterpriseAI 제작.

작동 방식

┌─────────────┐     Click "Connect"     ┌──────────────────────┐
│ Claude User  │ ──────────────────────► │ Teams MCP Server     │
│ (Cowork/     │                         │ (hosted by Surge)    │
│  Desktop/    │     SSE/MCP Protocol    │                      │
│  Code)       │ ◄─────────────────────► │  ┌────────────────┐  │
└─────────────┘                          │  │ OAuth (common)  │  │
                                         │  │ Any M365 user   │  │
       User signs in with their          │  │ can sign in     │  │
       own Microsoft account             │  └───────┬────────┘  │
       ─────────────────────►            │          │           │
                                         │  ┌───────▼────────┐  │
                                         │  │ Microsoft       │  │
                                         │  │ Graph API       │  │
                                         │  └────────────────┘  │
                                         └──────────────────────┘

사용자는 자신의 Microsoft 365 계정을 연결합니다. 자신의 팀, 자신의 채널, 자신의 메시지를 볼 수 있습니다. 각 사용자의 토큰은 격리됩니다. 서버는 브리지 역할만 하며 메시지를 저장하지 않고 전달만 합니다.

Related MCP server: Microsoft 365 MCP Server

기능

  • 원클릭 연결 — /connect 방문, Microsoft 로그인, 완료

  • 멀티 테넌트 — 모든 Microsoft 365 조직, 모든 사용자

  • 11가지 도구 — 팀, 채널, 메시지, 채팅, 검색, 프로필

  • 이중 전송 — Claude Code용 STDIO, Cowork 및 원격용 HTTP/SSE

  • 다중 사용자 — 각 세션은 격리된 OAuth 토큰을 받습니다

  • 자동 감지 — 실행 방법에 따라 올바른 전송을 선택합니다

  • 토큰 캐싱 — 자동 갱신, 세션마다 재로그인 불필요

  • 재시도 로직 — 제한된 Graph API 호출 시 자동 재시도

  • TypeScript — 완전한 타입, 깔끔한 아키텍처, MIT 라이선스

사용자: 1클릭으로 연결

누군가 이미 이 서버를 호스팅하고 있다면 (예: https://teams-mcp.surgeai.com):

  1. Claude가 Microsoft Teams 연결을 요청합니다

  2. 인증 링크를 클릭합니다

  3. Microsoft 회사 계정으로 로그인합니다

  4. 완료 — 이제 Claude가 Teams를 읽을 수 있습니다

API 키, Azure 포털, 설정이 필요 없습니다.

개발자: 자체 호스팅

1. 클론 및 설치

git clone https://github.com/SurgeEnterpriseAI/teams-mcp-server.git
cd teams-mcp-server
npm install
npm run build

2. Azure AD 앱 등록

  1. Azure Portal로 이동 → 앱 등록 → 새 등록

  2. 이름: Teams MCP Server

  3. 지원되는 계정 유형: "모든 조직 디렉터리의 계정(모든 Azure AD 디렉터리 - 다중 테넌트)"

  4. 리디렉션 URI: 웹 → https://your-server.com/auth/callback

  5. 등록 클릭

구성:

  • 인증서 및 비밀 → 새 클라이언트 비밀 → 값 복사

  • API 권한 → 위임된 권한 추가 (Microsoft Graph):

    • ChannelMessage.Read.All, ChannelMessage.Send

    • Chat.Read, Chat.ReadWrite, ChatMessage.Send

    • Team.ReadBasic.All, Channel.ReadBasic.All

    • User.Read

  • 관리자 동의 부여 클릭 (자신의 테넌트용; 다른 테넌트는 첫 로그인 시 동의)

3. 구성 및 배포

cp .env.example .env
# Set TEAMS_CLIENT_ID, TEAMS_CLIENT_SECRET
# Set BASE_URL and REDIRECT_URI to your production URL
# TEAMS_AUTHORITY=common (multi-tenant, default)

Railway, Render, Azure App Service 또는 모든 Node.js 호스트에 배포:

# Railway
railway login && railway init && railway up

# Or Azure
az webapp up --name teams-mcp-server --runtime "NODE:20-lts"

# Or just run directly
TRANSPORT_MODE=http node dist/index.js

4. MCP 레지스트리에 제출

배포 및 테스트가 완료되면 서버 URL을 Anthropic의 MCP 커넥터 레지스트리에 제출하세요. 그러면 사용자는 Claude Cowork에서 Slack 및 Gmail과 마찬가지로 "Microsoft Teams"를 연결 옵션으로 볼 수 있습니다.

Claude Code 사용자: 로컬 STDIO 모드

.mcp.json에 추가:

{
  "mcpServers": {
    "teams": {
      "command": "node",
      "args": ["/path/to/teams-mcp-server/dist/index.js"],
      "cwd": "/path/to/teams-mcp-server"
    }
  }
}

첫 실행 시 Microsoft 로그인을 위해 브라우저가 열립니다. 이후에는 토큰이 캐시됩니다.

사용 가능한 도구

도구

기능

teams_list_teams

모든 Teams 나열

teams_list_channels

팀의 채널 나열

teams_read_channel_messages

최근 채널 메시지 읽기

teams_send_channel_message

채널에 메시지 보내기

teams_reply_to_message

채널 스레드에서 답장

teams_read_message_replies

스레드 답장 읽기

teams_list_chats

DM 및 그룹 채팅 나열

teams_read_chat_messages

채팅에서 메시지 읽기

teams_send_chat_message

직접/그룹 채팅 메시지 보내기

teams_search_messages

모든 Teams에서 메시지 검색

teams_get_profile

Microsoft 365 프로필 가져오기

아키텍처

src/
├── index.ts               Main entry (auto-detects transport)
├── config.ts              Central configuration
├── logger.ts              Structured logging
├── types.ts               TypeScript interfaces
├── sessions.ts            Multi-user session manager
├── auth/
│   ├── oauth.ts           MSAL OAuth (multi-tenant, per-user)
│   └── token-store.ts     Persistent token cache
├── graph/
│   ├── client.ts          Graph HTTP client with retries
│   ├── teams.ts           Teams & channels API
│   ├── messages.ts        Channel messages API
│   ├── chats.ts           DM & group chat API
│   └── search.ts          Search & profile API
├── mcp/
│   ├── server.ts          MCP server factory
│   └── tools/             11 tool definitions
├── transport/
│   ├── stdio.ts           STDIO (Claude Code)
│   └── http.ts            Express + SSE (Cowork / remote)

환경 변수

변수

필수

기본값

설명

TEAMS_CLIENT_ID

예

—

Azure AD 앱 클라이언트 ID

TEAMS_CLIENT_SECRET

예

—

Azure AD 클라이언트 비밀

TEAMS_AUTHORITY

아니요

common

common은 다중 테넌트용, 또는 특정 테넌트 ID

TRANSPORT_MODE

아니요

auto

auto, stdio 또는 http

PORT

아니요

3000

HTTP 서버 포트

BASE_URL

아니요

http://localhost:3000

공개 URL

REDIRECT_URI

아니요

{BASE_URL}/auth/callback

OAuth 콜백 URL

TOKEN_STORE_PATH

아니요

./.data/tokens

토큰 캐시 디렉터리

LOG_LEVEL

아니요

info

로깅 수준

라이선스

MIT — LICENSE

기여

이슈와 PR을 환영합니다. SurgeEnterpriseAI 제작.

Related MCP Connectors

Related MCP Servers