본문으로 건너뛰기

© 2026 Molayo

GitHub요약2026. 06. 15. 09:26

loonghao/wecom-bot-mcp-server

요약

WeCom(기업용 위챗) 봇을 위한 Model Context Protocol(MCP) 준수 서버 구현체입니다. Markdown, 이미지, 파일 등 다양한 메시지 유형을 지원하며 멀티 봇 구성이 가능합니다.

핵심 포인트

  • MCP 표준을 준수하여 Claude Desktop 및 Cline 등과 연동 가능
  • Markdown V2, 이미지, 템플릿 카드 등 풍부한 메시지 포맷 지원
  • Pydantic 기반의 데이터 검증 및 멀티 봇 환경 설정 지원
  • npx 또는 VSCode Cline 확장을 통한 간편한 설치 방법 제공

WeCom (WeChat Work) 봇을 위한 Model Context Protocol (MCP) 준수 서버 구현체입니다.

  • 다양한 메시지 유형 지원:
  • Markdown 메시지 (@mention 및 글자 색상 포함)
  • Markdown V2 메시지 (표, 리스트, 임베디드 이미지 포함)
  • 이미지 메시지 (base64/로컬 파일/URL)
  • 파일 메시지
  • 템플릿 카드 메시지 (text_notice 및 news_notice)

멀티 봇 지원: 여러 개의 WeCom 봇을 구성하고 사용 가능

  • @mention 지원 (사용자 ID 또는 전화번호를 통해)

  • 메시지 기록 추적

  • 설정 가능한 로깅 시스템

  • 완전한 타입 어노테이션 (Type annotations)

  • Pydantic 기반 데이터 검증

  • Python 3.10+

  • WeCom 봇 Webhook URL (WeCom 그룹 설정에서 획득)

WeCom Bot MCP Server를 설치하는 방법은 여러 가지가 있습니다:

npx -y @smithery/cli install wecom-bot-mcp-server --client claude

  • VSCode 마켓플레이스에서 Cline Extension 설치
  • 명령 팔레트(Command Palette) 열기 (Ctrl+Shift+P / Cmd+Shift+P)
  • "Cline: Install Package" 검색
  • "wecom-bot-mcp-server"를 입력하고 Enter 누르기

MCP 클라이언트 설정 파일에 서버를 추가하세요:

// macOS의 Claude Desktop용: ~/Library/Application Support/Claude/claude_desktop_config.json
// Windows의 Claude Desktop용: %APPDATA%\Claude\claude_desktop_config.json
// Windsurf용: ~/.windsurf/config.json
...
# Windows PowerShell
$env:WECOM_WEBHOOK_URL = "your-webhook-url"
# 선택적 설정
...

다음 방법 중 하나를 사용하여 여러 봇을 구성할 수 있습니다:

방법 1: JSON 설정 (권장)

# Windows PowerShell
$env:WECOM_BOTS = '{"alert": {"name": "Alert Bot", "webhook_url": "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx", "description": "For alerts"}, "ci": {"name": "CI Bot", "webhook_url": "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=yyy", "description": "For CI/CD"}}'
# Linux/macOS
...

방법 2: 개별 환경 변수

Windows PowerShell

$env:WECOM_BOT_ALERT_URL = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx"
$env:WECOM_BOT_CI_URL = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=yyy"
...

방법 3: 결합 모드 (Combined Mode)

# WECOM_WEBHOOK_URL이 '기본(default)' 봇으로 설정됩니다.
$env:WECOM_WEBHOOK_URL = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=default"
# 추가 봇
...
{
"mcpServers": {
"wecom": {
...

로깅 시스템은 크로스 플랫폼 로그 파일 관리를 위해 platformdirs.user_log_dir()를 사용합니다:

  • Windows:
    C:\Users\<사용자 이름>\AppData\Local\hal\wecom-bot-mcp-server\Logs

  • Linux:
    ~/.local/state/hal/wecom-bot-mcp-server/log

  • macOS:
    ~/Library/Logs/hal/wecom-bot-mcp-server

로그 파일은 mcp_wecom.log라는 이름으로 위 디렉터리에 저장됩니다.

환경 변수를 사용하여 로그 레벨과 파일 경로를 사용자 정의할 수 있습니다:

MCP_LOG_LEVEL<br>:<span style="font-family: monospace;">DEBUG, INFO, WARNING, ERROR, 또는 CRITICAL로 설정</span><br>MCP_LOG_FILE<br>:<span style="font-family: monospace;">사용자 지정 로그 파일 경로로 설정</span>

설정 후에는 MCP 서버가 MCP 클라이언트 시작 시 자동으로 실행됩니다. AI 비서에서 자연어로 상호 작용할 수 있습니다.

시나리오 1: WeCom으로 날씨 정보 전송

USER: "오늘 선전의 날씨는 어때? WeCom으로 보내줘"
ASSISTANT: "선전의 날씨를 확인하고 WeCom으로 보낼게요"
[어시스턴트는 send_message 도구를 사용하여 날씨 정보를 전송할 것입니다]

시나리오 2: 회의 알림 및 관련 인원 @멘션하기

USER: "오후 3시 프로젝트 검토 회의 알림을 보내고, 장산과 리사에게 참석하라고 알려줘"
ASSISTANT: "회의 알림을 보낼게요"
[어시스턴트는 mentioned_list 매개변수를 사용하여 send_message 도구를 사용할 것입니다]

시나리오 3: 파일 전송

USER: "이 주간 보고서를 WeCom 그룹에 보내줘"
ASSISTANT: "주간 보고서를 보낼게요"
[어시스턴트는 send_file 도구를 사용할 것입니다]

시나리오 4: 이미지 전송

USER: "이 차트 이미지를 WeCom으로 보내줘"
ASSISTANT: "이미지를 보낼게요"
[어시스턴트는 send_image 도구를 사용할 것입니다]

서버는 귀하의 AI 어시스턴트가 사용할 수 있는 다음과 같은 도구들을 제공합니다:

send_message- 텍스트 또는 마크다운 (markdown) 메시지 전송

  • 매개변수 (Parameters):
    content
    , msg_type
    (markdown/markdown_v2), mentioned_list
    , mentioned_mobile_list
    , bot_id

markdown: 콘텐츠에 <@userid> 멘션이나 글자 색상이 포함된 경우 사용합니다. <@userid> 구문은 WeCom의 공식 멘션 형식으로, @user@email.com과 같은 이메일 주소와의 충돌을 방지합니다.

markdown_v2: 표 (tables), 리스트 (lists), 임베디드 이미지 (embedded images) 또는 일반 콘텐츠에 사용합니다 (기본값).

  • 매개변수 (Parameters):

send_wecom_file- WeCom으로 파일 전송

  • 매개변수 (Parameters):
    file_path
    , bot_id

  • 매개변수 (Parameters):

send_wecom_image- WeCom으로 이미지 전송

  • 매개변수 (Parameters):
    image_path
    (로컬 경로 또는 URL), bot_id

  • 매개변수 (Parameters):

send_wecom_template_card_text_notice- 텍스트 공지 템플릿 카드 전송

  • 매개변수 (Parameters):
    template_card_source
    , template_card_main_title
    , template_card_card_action
    , bot_id
    , 그리고 선택적 필드들 - 강조된 콘텐츠, 인용구, 액션 버튼이 포함된 알림에 사용합니다.

  • 매개변수 (Parameters):

send_wecom_template_card_news_notice- 뉴스 공지 템플릿 카드 전송

  • 매개변수 (Parameters):
    template_card_source
    , template_card_main_title
    , template_card_card_action
    , template_card_image
    , bot_id
    , 그리고 선택적 필드들 - 이미지와 풍부한 콘텐츠가 포함된 뉴스 스타일의 알림에 사용합니다.

  • 매개변수 (Parameters):

list_wecom_bots- 구성된 모든 봇 목록 나열

  • 반환값 (Returns): ID, 이름, 설명이 포함된 사용 가능한 봇 목록

시나리오 5: 특정 봇에게 알림 전송

USER: "알람 봇에게 긴급 알림을 보내줘: 서버 CPU 사용량이 90%를 초과했습니다"
ASSISTANT: "알람 봇에게 알림을 보낼게요"
[어시스턴트는 bot_id="alert"와 함께 send_message를 사용할 것입니다]

시나리오 6: 사용 가능한 봇 목록 나열

USER: "사용 가능한 WeCom 봇은 무엇인가요?"
ASSISTANT: "사용 가능한 봇을 확인하겠습니다"
[시스턴트는 list_wecom_bots 도구를 사용할 것입니다]

시나리오 7: CI 알림 전송

USER: "CI 봇에게 빌드 성공 알림을 보내줘"
ASSISTANT: "CI 봇에게 알림을 보내겠습니다"
[시스턴트는 bot_id="ci"와 함께 send_message를 사용할 것입니다]

시나리오 8: 템플릿 카드 알림 전송

USER: "대시보드 링크가 포함된 배포 성공 알림 카드를 보내줘"
ASSISTANT: "템플릿 카드 알림을 보내겠습니다"
[시스턴트는 send_wecom_template_card_text_notice 도구를 사용할 것입니다]

시나리오 9: 뉴스 스타일 알림 전송

USER: "이미지가 포함된 신규 기능 출시 관련 뉴스 카드를 보내줘"
ASSISTANT: "뉴스 공지 카드를 보내겠습니다"
[시스턴트는 send_wecom_template_card_news_notice 도구를 사용할 것입니다]

이 패키지를 (MCP 서버가 아닌) Python 코드에서 직접 사용하려면:

from wecom_bot_mcp_server import send_message, send_wecom_file, send_wecom_image, send_wecom_template_card
# 마크다운 메시지 전송 (기본 봇 사용)
await send_message(
...
from wecom_bot_mcp_server.bot_config import get_bot_registry, list_available_bots
# 사용 가능한 모든 봇 목록 나열
bots = list_available_bots()
...
  • 저장소(Repository) 클론:
git clone https://github.com/loonghao/wecom-bot-mcp-server.git
cd wecom-bot-mcp-server
  • 가상 환경(Virtual Environment) 생성 및 의존성 설치:
# uv 사용 (권장)
pip install uv
uv venv
...
# 커버리지(Coverage)와 함께 모든 테스트 실행
uvx nox -s pytest
# 임포트(Import) 테스트만 실행
...
# 코드 검사
uvx nox -s lint
# 코드 스타일 이슈 자동 수정
...
# 패키지 빌드
uvx nox -s build
# PyPI에 배포 (인증 필요)
...

이 프로젝트는 CI/CD를 위해 GitHub Actions를 사용합니다:

MR Checks: 모든 Pull Request (PR)에서 실행되며, Python 3.10, 3.11, 3.12 환경의 Ubuntu, Windows, macOS에서 테스트를 수행합니다.
Code Coverage: Codecov에 코드 커버리지 (Code Coverage) 보고서를 업로드합니다.
Import Tests: 설치 후 패키지가 올바르게 임포트 (Import)되는지 확인합니다.

모든 의존성 (Dependencies)은 문제를 조기에 발견하기 위해 CI 과정에서 자동으로 테스트됩니다.

wecom-bot-mcp-server/
├── src/
│ └── wecom_bot_mcp_server/
...

이 프로젝트는 MIT 라이선스 (MIT License) 하에 배포됩니다 - 자세한 내용은 LICENSE 파일을 참조하세요.

AI 자동 생성 콘텐츠

본 콘텐츠는 GitHub AI Tools의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0