mmcp v1.0.1 사용자 가이드

Mattermost MCP Gateway(mmcp) v1.0.1을 쓰는 일반 사용자를 위한 안내서입니다. 서버 설치·운영과 관리 콘솔 설명은 다루지 않습니다.

목차

  1. mmcp가 하는 일
  2. 로그인
  3. 화면 둘러보기·빠른 이동
  4. Mattermost 계정 연결
  5. AI 클라이언트 연결
  6. API 키 관리
  7. 도구 실행기
  8. 승인 흐름
  9. 사용 예시 프롬프트
  10. 도구 목록
  11. 내 활동·세션·연결된 앱
  12. 개인 암호화 키
  13. 프로필·테마
  14. FAQ / 문제 해결

1. mmcp가 하는 일

mmcp는 Claude Code, Codex, Cursor, 사내 AI 포털 같은 AI 클라이언트가 Mattermost를 대신 조회하고 메시지를 보낼 수 있게 해 주는 MCP 서버입니다.

flowchart LR
    U[나] -->|"어제 채널 요약해줘"| AI[AI 클라이언트<br/>Claude Code · Codex · Cursor]
    AI -->|MCP + OAuth / API 키| M[mmcp]
    M -->|내 Mattermost 권한| MM[(Mattermost)]
    M -.->|쓰기 작업은 미리보기 → 내 동의| U

2. 로그인

브라우저에서 mmcp 주소로 접속합니다. 로그인 화면과 오른쪽 위 프로필 메뉴에서 현재 서비스 버전(mmcp v1.0.1)을 확인할 수 있습니다.

로그인 화면

Keycloak SSO

로컬 계정

관리자가 로컬 로그인을 허용했다면 아이디/비밀번호로 로그인할 수 있습니다. SSO와 함께 켜져 있으면 "또는 로컬 계정" 아래에 입력 칸이 보입니다.

로그인 오류가 보일 때

메시지 할 일
로그인 요청이 만료되었거나 브라우저 쿠키가 차단되었습니다 쿠키 허용 후 다시 시도
Keycloak에서 로그인이 거부되었습니다 Keycloak 계정/권한 확인
mmcp 계정을 만들거나 연결하지 못했습니다 관리자에게 문의
사용 가능한 로그인 방법이 없습니다 관리자에게 문의

3. 화면 둘러보기·빠른 이동

로그인하면 내 공간이 열립니다.

내 홈

내 공간 메뉴

메뉴 하는 일 단축키
내 홈 시작 가이드, 보안 점검, 최근 7일 호출·API 키·승인 대기 요약 G → H
MCP 연결 가이드 Claude Code·Codex·Cursor 등 연결 설정 복사 G → C
내 API 키 개인 API 키 발급·회전·폐기 G → I
Mattermost 연결 계정 매핑과 개인 액세스 토큰 –
개인 암호화 키 내 데이터 키 버전과 회전 –
도구 실행기 MCP 도구를 직접 실행 G → R
승인 요청 AI가 요청한 쓰기 작업 확인 –
내 활동 도구 호출·로그인·키 변경 기록 –
세션·연결된 앱 브라우저 세션, OAuth 앱, MCP 세션 –
프로필·환경설정 이름, 비밀번호, 테마 G → P

내 홈의 보안 점검은 Mattermost 계정 연결, Mattermost 자격증명, API 키 회전, 개인 암호화 키 상태(로컬 계정이면 비밀번호 안내 포함)를 체크하고, 문제가 있는 항목에서 바로 해당 화면으로 이동할 수 있습니다.

빠른 이동과 단축키

명령 팔레트

키 동작
Ctrl/⌘ + K 또는 / 빠른 이동(명령 팔레트) 열기
G 다음 글자 위 표의 화면으로 바로 이동
? 단축키 도움말
Shift + T 라이트/다크 테마 전환

프로필 메뉴

오른쪽 위 아바타를 누르면 계정 정보(아이디, SSO/로컬 구분, 역할), 내 홈·내 API 키·프로필 바로가기, 테마(라이트/다크/시스템), 키보드 단축키, 서비스 버전(mmcp v1.0.1), 로그아웃이 있습니다.

프로필 메뉴


4. Mattermost 계정 연결

AI가 Mattermost를 쓰려면 먼저 내 mmcp 계정을 Mattermost 계정과 연결해야 합니다. 내 공간 → Mattermost 연결로 이동하세요.

Mattermost 연결

방법 1. 자동 연결

관리자가 자동 매핑(서비스 토큰)을 설정해 두었다면 자동으로 연결하기만 누르면 됩니다. mmcp 아이디와 같은 username의 Mattermost 계정을 찾아 연결합니다(관리자 설정에 따라 이메일로도 찾습니다).

관리자가 토큰 자동 발급을 켜 두었다면 첫 사용 시 개인 액세스 토큰이 자동으로 발급되며, 나중에 토큰 회전으로 교체할 수 있습니다.

방법 2. 내 개인 액세스 토큰 등록

  1. Mattermost에 접속합니다.
  2. 프로필 → 보안 → 개인 액세스 토큰으로 이동합니다(메뉴가 없으면 관리자에게 토큰 생성 권한을 요청하세요).
  3. 설명에 mmcp라고 적고 토큰을 만든 뒤 복사합니다.
  4. mmcp의 개인 액세스 토큰 등록 칸에 붙여 넣고 검증 후 저장을 누릅니다.

메시지는 누구 명의로 보내지나요?

관리자 설정에 따라 정해지며, 화면 오른쪽에 현재 방식이 안내됩니다.

방식 설명
본인(user) 내 Mattermost 계정 명의로 보냅니다. 자격증명이 필요합니다.
봇(bot) 봇 계정이 보내고, 메시지 상단에 "○○님의 요청" 같은 요청자 표시가 붙습니다.
자동(auto) 자격증명이 있으면 내 명의로, 없으면 봇이 요청자 표시와 함께 보냅니다.

어떤 방식이든 요청자 정보가 감사 로그와 메시지 props(requested_by)에 기록됩니다.


5. AI 클라이언트 연결

내 공간 → MCP 연결 가이드에 내 환경에 맞는 MCP 서버 주소와 설정이 준비되어 있습니다. 주소는 항상 {mmcp 주소}/mcp 형식이며 복사 버튼으로 복사할 수 있습니다.

MCP 연결 가이드

인증 방법은 두 가지입니다.

아래 예시의 https://mmcp.example.com/mcp는 연결 가이드에 표시된 실제 주소로 바꾸세요.

Claude Code

claude mcp add --transport http mmcp https://mmcp.example.com/mcp

Claude Code 안에서 /mcp → mmcp → Authenticate를 선택하면 브라우저에 동의 화면이 열립니다.

API 키로 연결하려면:

claude mcp add --transport http mmcp https://mmcp.example.com/mcp \
  --header "Authorization: Bearer mmcp_pk_…"

OAuth 동의 화면

OAuth 동의 화면

동의 화면에는 클라이언트 이름, 돌아갈 주소(로컬 앱이면 "로컬 앱" 표시), 요청 권한이 나옵니다.

내용을 확인하고 허용을 누르세요. **"이 클라이언트를 기억하고 다음부터 묻지 않기"**를 체크하면 다음부터 동의 화면이 생략됩니다(관리자가 허용한 경우에만 보입니다). 연결은 언제든 세션·연결된 앱에서 끊을 수 있습니다.

Codex CLI

~/.codex/config.toml:

[mcp_servers.mmcp]
url = "https://mmcp.example.com/mcp"
bearer_token_env_var = "MMCP_API_KEY"
export MMCP_API_KEY="mmcp_pk_…"
codex

OAuth를 지원하는 Codex 버전에서는 codex mcp add mmcp --url https://mmcp.example.com/mcp 후 codex mcp login mmcp를 쓸 수 있습니다.

Cursor

~/.cursor/mcp.json (OAuth 자동 처리):

{
  "mcpServers": {
    "mmcp": { "url": "https://mmcp.example.com/mcp" }
  }
}

VS Code (GitHub Copilot Agent 모드)

.vscode/mcp.json:

{
  "servers": {
    "mmcp": { "type": "http", "url": "https://mmcp.example.com/mcp" }
  }
}

사내 AI 포털 · 서버 간 연동

이미 Keycloak 토큰을 가진 사내 서비스는 그 Keycloak 액세스 토큰을 그대로 Bearer로 보냅니다. mmcp가 토큰을 검증하고 preferred_username으로 사용자를 찾습니다.

curl -s https://mmcp.example.com/mcp \
  -H "Authorization: Bearer $KEYCLOAK_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

연결 가이드의 테스트 (curl) 탭에는 API 키로 initialize와 도구 호출을 시험하는 예시가 있습니다.

연결 후 AI가 쓸 수 있는 것

프롬프트 인자 내용
summarize_channel channel(필수), days(기본 1) 채널 최근 대화를 결정 사항·할 일·미해결 질문으로 요약
find_decisions topic(필수) 주제 관련 결정 사항·일자·담당자·근거 링크를 표로 정리
daily_digest – 읽지 않은 메시지를 멘션 → DM → 기타 채널 순으로 정리
draft_dm recipient, topic(필수) DM 초안을 먼저 보여 주고 승인 후 발송

6. API 키 관리

내 공간 → 내 API 키. 키는 내 권한으로만 동작하며, 비밀값(mmcp_pk_…)은 발급 순간 한 번만 표시됩니다.

내 API 키

발급

새 키 발급(또는 팔레트의 새 API 키 발급)을 누르고:

발급 창에서 비밀값과 Claude Code 등록 예시를 바로 복사하세요. 창을 닫으면 다시 볼 수 없습니다. 사용자당 활성 키 개수에도 정책상 한도가 있습니다(화면 상단에 표시).

관리

동작 설명
이름 변경 이름 옆 연필 아이콘으로 바로 수정
회전 같은 설정으로 새 키를 발급하고, 이전 키는 즉시 / 1시간 / 24시간 / 7일 유예 후 만료. 유출이 의심되면 즉시, 여러 기기 교체는 24시간 권장
폐기 즉시 무효화. 이 키를 쓰는 클라이언트는 바로 끊깁니다
폐기·만료 키 보기 지난 키까지 목록에 표시

키가 정책의 회전 권장 주기를 넘으면 회전 권장 배지와 경고가 표시되고, 내 홈 보안 점검에도 나타납니다.


7. 도구 실행기

내 공간 → 도구 실행기(G → R)에서 AI 클라이언트가 쓰는 도구를 내 권한으로 직접 실행해 볼 수 있습니다. 정책·승인·감사가 실제 MCP 호출과 똑같이 적용됩니다.

도구 실행기

  1. 왼쪽 목록에서 도구를 고릅니다(검색 가능). 🔒 표시는 승인이 필요한 도구, 흐리게 보이는 도구는 지금 쓸 수 없는 도구이며 마우스를 올리면 이유가 나옵니다.
  2. 폼 또는 JSON 모드로 인자를 입력합니다. 일부 도구는 예시 값이 미리 채워져 있습니다.
  3. 실행을 누르면 결과(성공/오류 코드, 소요 시간)가 JSON으로 표시됩니다.

메시지 검색 실행 예

다크 테마에서도 동일하게 동작합니다.

다크 테마 도구 실행기


8. 승인 흐름

메시지 작성·DM 발송 같은 쓰기 작업은 기본적으로 2단계 확인을 거칩니다(관리자가 도구별로 정합니다).

sequenceDiagram
    participant 나
    participant AI
    participant mmcp
    나->>AI: kim에게 회의 DM 보내줘
    AI->>mmcp: mattermost_send_dm (confirm_token 없음)
    mmcp-->>AI: APPROVAL_REQUIRED + 미리보기 + confirm_token
    AI->>나: 받는 사람·내용 미리보기, 보낼까요?
    나->>AI: 네
    AI->>mmcp: 같은 인자 + confirm_token
    mmcp-->>AI: 발송 완료

승인 요청

받는 사람 지정

받는 사람은 username(kim, @kim), 이메일, 한글 전체 이름(김철수)으로 지정할 수 있습니다. 같은 이름이 여러 명이면 mmcp는 임의로 고르지 않고 후보 목록(AMBIGUOUS_RECIPIENT)을 돌려주며, AI가 나에게 누구인지 물어봅니다.

신뢰할 수 없는 콘텐츠 보호

Mattermost에서 읽어 온 결과는 "사용자가 작성한 신뢰할 수 없는 콘텐츠"로 감싸서 AI에 전달됩니다(관리자 설정, 기본 켜짐). 메시지 안에 "이전 지시를 무시하라" 같은 문장이 있어도 AI가 따르지 않도록 하는 장치입니다.


9. 사용 예시 프롬프트

AI 클라이언트에 평소 말하듯 요청하면 됩니다.

요청 AI가 주로 쓰는 도구
"어제 text2sql 채널 요약해줘" mattermost_recent_posts
"Text2SQL 장애 관련 결정사항 찾아줘" mattermost_search_posts, mattermost_get_thread
"kim에게 내일 10시 회의라고 DM 보내줘" mattermost_send_dm (승인 필요)
"읽지 않은 메시지 정리해줘" mattermost_unread
"kim, lee, park에게 그룹 메시지로 배포 일정 공유해줘" mattermost_send_group_dm (승인 필요)
"김철수랑 최근 DM 뭐였지?" mattermost_read_dm
"이 스레드에 '확인했습니다'라고 답글 달아줘" mattermost_reply (승인 필요)

팁:


10. 도구 목록

아래는 mmcp v1.0.1에 들어 있는 도구입니다. 관리자가 일부 도구를 끄거나 승인 여부·필요 역할을 바꿀 수 있으므로, 실제로 쓸 수 있는 목록은 도구 실행기에서 확인하세요. 읽기 전용 API 키나 mcp:read 권한으로 연결하면 쓰기 도구는 보이지 않습니다.

조회·검색 (기본 역할 mcp-user)

도구 하는 일 주요 인자
mattermost_me 내게 연결된 Mattermost 계정 정보 –
mattermost_teams 내 팀 목록 –
mattermost_channels 참여 중인 채널 목록 team, query, include_private, limit
mattermost_channel 채널 상세(목적, 헤더, 멤버 수, 읽음 상태) channel
mattermost_search_posts 메시지 검색 ("정확한 구문", -제외어, 접두어*) query, team, channel, from_user, after/before/on, limit
mattermost_get_post 메시지 한 건 조회 post_id
mattermost_get_thread 스레드 전체를 시간순 조회 post_id, limit
mattermost_recent_posts 채널 최근 메시지 channel, limit, since
mattermost_users username·이름·닉네임·이메일로 사용자 검색 query, limit
mattermost_unread 읽지 않은 메시지·멘션이 있는 채널 요약 team, include_posts, posts_per_channel
mattermost_pinned_posts 채널 고정 메시지 channel
mattermost_read_dm 특정 사용자와의 1:1 DM 최근 대화 (항상 본인 자격증명) user 또는 channel, limit, since
mattermost_recent_dms 최근 DM/그룹 대화 목록과 미확인 건수 limit, unread_only
mattermost_search_dm 내 DM/그룹 메시지 검색 — 기본 꺼짐(관리자가 DM 검색 허용 시) query, user, after, before, limit
mattermost_get_file 첨부 파일 정보와 텍스트 내용 — 기본 꺼짐(파일 다운로드 허용 시), 역할 mcp-file file_id

작성 (기본 역할 mcp-writer, ✅ = 기본 승인 필요)

도구 하는 일 주요 인자
mattermost_post_message ✅ 채널에 메시지 게시(root_id면 스레드 답글) channel, message, root_id
mattermost_reply ✅ 기존 메시지 스레드에 답글 post_id, message
mattermost_update_post ✅ 본인이 쓴 메시지 수정 post_id, message
mattermost_add_reaction 이모지 반응 추가 (기본 승인 없음) post_id, emoji
mattermost_send_dm ✅ 1:1 DM 보내기 recipient, message
mattermost_send_group_dm ✅ 2~7명에게 그룹 메시지 recipients, message
mattermost_reply_dm ✅ DM/그룹 메시지에 스레드 답장 post_id, message

파일 (✅ 기본 승인 필요)

도구 하는 일 역할
mattermost_upload_file ✅ 텍스트/base64 내용을 파일로 만들어 채널에 게시 mcp-file
mattermost_upload_dm_file ✅ 파일을 첨부해 1:1 DM mcp-writer + mcp-file

채널 관리 (역할 mcp-channel-admin, ✅ 기본 승인 필요)

도구 하는 일
mattermost_create_channel ✅ 팀에 공개(O)/비공개(P) 채널 생성
mattermost_add_member ✅ 채널에 사용자 추가

위험 도구 (역할 mcp-admin, 기본 비활성화)

도구 하는 일
mattermost_delete_post ✅ 메시지 삭제
mattermost_archive_channel ✅ 채널 보관(아카이브)

호환 이름 (기본 꺼짐)

관리자가 켜면 Mattermost 공식 MCP와 같은 이름도 쓸 수 있습니다: dm(= mattermost_send_dm), group_message(= mattermost_send_group_dm), create_post(= mattermost_post_message), search_users(= mattermost_users).

호출 한도

사용자별로 분당 호출 수가 제한됩니다(기본값: 조회 60, 검색 20, 쓰기 10, 파일 5회 — 관리자 설정에 따라 다를 수 있음). 넘으면 RATE_LIMITED와 함께 몇 초 뒤 다시 시도하라는 안내가 나옵니다.


11. 내 활동·세션·연결된 앱

내 활동

내 공간 → 내 활동에서 내 계정으로 실행된 도구 호출, 로그인, 키 변경 기록을 볼 수 있습니다. 작업·대상·오류 코드·요청 ID로 검색하고 분류(도구 호출/인증/OAuth/키/매핑)와 결과(성공/실패/거부/대기)로 거를 수 있습니다.

모르는 기록이 있다면 해당 API 키를 폐기하고 관리자에게 알리세요.

내 활동

세션·연결된 앱

내 공간 → 세션·연결된 앱

세션·연결된 앱

영역 내용 할 수 있는 일
연결된 앱 (OAuth) 허용한 AI 클라이언트, 승인·마지막 사용 시각, 활성 토큰 수, "동의 기억됨" 표시 연결 끊기 — 그 앱의 토큰이 즉시 폐기됨
브라우저 세션 브라우저, 로그인 방식(Keycloak/비밀번호), IP, 마지막 활동 현재 세션이 아닌 것은 로그아웃
MCP 세션 AI 클라이언트가 접속할 때마다 생기는 세션. 24시간 활동이 없으면 자동 종료 개별 종료

12. 개인 암호화 키

내 공간 → 개인 암호화 키. Mattermost 토큰 같은 내 자격증명은 나만의 데이터 키로 암호화됩니다.

개인 암호화 키

flowchart LR
    MK[마스터 키] -->|감쌈| DEK[내 데이터 키 vN]
    DEK -->|AES-256-GCM| C[자격증명<br/>Mattermost 토큰 등]

13. 프로필·테마

내 공간 → 프로필·환경설정(G → P)

프로필·환경설정

모바일에서도 같은 화면을 쓸 수 있습니다(왼쪽 위 메뉴 버튼으로 메뉴 열기).

모바일 연결 가이드


14. FAQ / 문제 해결

자주 보는 오류 코드

코드 의미 할 일
IDENTITY_NOT_MAPPED mmcp 계정이 Mattermost 계정과 연결되지 않음(또는 연결된 계정이 비활성화됨) Mattermost 연결에서 자동 연결하거나 개인 액세스 토큰 등록. 안 되면 관리자에게 수동 매핑 요청
CREDENTIAL_REQUIRED Mattermost 개인 액세스 토큰이 필요함 Mattermost 연결 화면에서 토큰 등록
CREDENTIAL_INVALID 저장된 토큰이 만료·무효 토큰 다시 등록 또는 회전
PERMISSION_DENIED 필요한 역할이 없음, 읽기 전용 키로 쓰기 시도, 또는 Mattermost 권한 부족(예: 남의 메시지 수정) 필요한 역할(예: mcp-writer)은 관리자에게 요청. 쓰기에는 일반 키/mcp 권한 사용
TOOL_DISABLED 관리자가 끈 도구 관리자에게 문의
POLICY_BLOCKED 비공개 채널·DM·그룹 메시지 접근이 관리자 정책으로 차단됨 관리자에게 문의
RATE_LIMITED 분당 호출 한도 초과 안내된 시간(초) 후 다시 시도
APPROVAL_REQUIRED 쓰기 작업 전 확인 필요 — 오류가 아니라 정상 단계 미리보기를 확인하고 동의하면 AI가 다시 호출
APPROVAL_EXPIRED / APPROVAL_MISMATCH / APPROVAL_USED / APPROVAL_REJECTED 승인 토큰을 쓸 수 없음 AI에게 처음부터 다시 요청
AMBIGUOUS_RECIPIENT 받는 사람 이름이 여러 명과 일치 후보 중 한 명을 골라 username으로 알려 주기
RECIPIENT_NOT_FOUND 받는 사람을 찾지 못함 철자 확인 또는 mattermost_users로 검색
CHANNEL_NOT_FOUND / AMBIGUOUS_CHANNEL 채널이 없거나 접근 불가 / 여러 팀에 같은 이름 채널 목록 확인, 팀/채널 형식 사용
IDENTITY_CONFLICT 등록한 토큰 주인이 내 계정과 다르거나, 그 Mattermost 계정이 이미 다른 사용자와 연결됨 내 토큰인지 확인. 그래도 안 되면 관리자에게 재매핑 요청
MATTERMOST_UNAVAILABLE / MATTERMOST_ERROR Mattermost 연결 문제 잠시 후 재시도, 계속되면 관리자에게 문의
INTERNAL 서버 내부 오류 메시지의 요청 ID를 관리자에게 전달

질문과 답

Q. AI 클라이언트에 도구가 하나도 안 보여요. 연결이 끝났는지 확인하세요(Claude Code는 /mcp에서 Authenticate). 그다음 도구 실행기에서 흐리게 표시된 도구의 이유를 확인합니다.

Q. 조회는 되는데 메시지 발송 도구가 안 보여요. 읽기 전용 API 키를 쓰고 있거나, OAuth 동의 시 mcp:read만 받았거나, mcp-writer 역할이 없는 경우입니다.

Q. AI가 동의도 없이 메시지를 보낼 수 있나요? 승인 모드인 도구는 confirm_token 없이 실행되지 않습니다. 단, 이모지 반응(mattermost_add_reaction)처럼 관리자가 자동 실행으로 둔 도구는 확인 없이 실행됩니다. 의심스러운 요청은 승인 요청 화면에서 거절하세요.

Q. API 키를 잃어버렸어요 / 유출된 것 같아요. 비밀값은 다시 볼 수 없습니다. 회전 → 즉시 폐기로 새 키를 받거나 키를 폐기하세요. 그다음 내 활동에서 모르는 기록이 없는지 확인합니다.

Q. 노트북을 바꿨어요. API 키는 회전 → 24시간 유예로 새 키를 받아 교체하고, 예전 기기의 OAuth 연결은 세션·연결된 앱에서 끊으세요.

Q. 로그아웃했는데 다시 자동 로그인되지 않아요. 의도된 동작입니다. 직접 로그아웃한 직후에는 사일런트 SSO가 실행되지 않으니 Keycloak SSO로 로그인 버튼을 누르세요.

Q. 봇이 "○○님의 요청"으로 메시지를 보내요. 관리자가 발신 계정을 봇(또는 자동)으로 설정했기 때문입니다. 자동 모드라면 내 Mattermost 토큰을 등록하면 내 명의로 보냅니다.

Q. 지금 쓰는 mmcp 버전은? 로그인 화면 하단, 프로필 메뉴, 프로필·환경설정의 계정 정보에서 확인할 수 있습니다. 이 가이드는 mmcp v1.0.1 기준입니다.