auto-mcp-server
Allows creating, reading, updating, and managing Confluence wiki pages, including automated generation from Jira issues and branch/commit data.
Allows collecting branch commits and analyzing branch changes from Git repositories.
Allows managing Jira issues: querying, transitioning statuses, completing issues, creating filters, and extracting attachment contents.
Allows generating diagrams using Mermaid syntax and attaching them to Confluence wiki pages.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@auto-mcp-serverlist high priority Jira issues assigned to me"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
auto-mcp-server
Claude Desktop / Claude Code 등 에이전트에서 사용할 수 있는 로컬 MCP(Model Context Protocol) 서버입니다.
제공 기능:
Jira 이슈 조회/관리 (조회, 상태 전환, 완료 처리, 필터 생성, 첨부파일 내용 추출)
Wiki 페이지 자동 생성 (Jira 이슈 정리, 브랜치 커밋 기록, 자유 형식 커스텀 페이지, 멀티프로젝트 병합)
Wiki 페이지 조회/수정 (페이지 ID 또는 제목으로 조회, 하위 페이지 목록 조회, 내용 추가/삭제/수정)
Git 브랜치 커밋 수집 및 변경사항 분석 (베이스 브랜치 자동 탐지, 스마트 Diff 필터링)
프로젝트별 Jira 설정 외부화 (
JIRA_PROJECT_CONFIGS환경변수로 종료일 필드, Wiki 날짜 기준, 커스텀 필드, 상태 목록을 선언적으로 구성)다이어그램 생성 및 Wiki 첨부 (Mermaid, PlantUML, C4 등 15종 — Kroki + Docker 기반, 선택 기능)
목차
Related MCP server: jt-mcp-server
🛠 세팅 가이드
사전 요구사항
macOS
Python 3.11 이상
Git CLI (macOS 기본 설치, 확인:
git --version)Docker Desktop (선택 — 다이어그램 기능 사용 시 필요, 확인:
docker --version)
1. 환경 변수 설정
.env.local.example 파일을 복사하여 .env.local 파일을 생성합니다.
cp .env.local.example .env.local생성된 .env.local 파일을 열어 본인 환경에 맞게 수정합니다.
vi .env.local # 또는 원하는 에디터 사용환경 변수 설명
필수 설정:
변수 | 설명 | 예시 |
| 환경 구분. |
|
| MCP 서버 이름 |
|
| Jira 서버 URL (마지막 |
|
| Jira/Confluence 로그인 ID (Cloud: 이메일) |
|
| Jira/Confluence 비밀번호 (Cloud: API 토큰) |
|
Atlassian Cloud 사용 시:
USER_PASSWORD에 비밀번호가 아닌 API 토큰을 입력합니다. 생성: https://id.atlassian.com/manage-profile/security/api-tokens → "Create API token"
Wiki 설정 (선택 — Wiki 기능 사용 시 필수):
변수 | 설명 | 확인 방법 |
| Confluence 서버 URL | Jira와 같은 서버면 |
| Wiki Space Key (쉼표 구분으로 여러 공간 지정 가능, 왼쪽 우선순위) | 예: |
| Wiki 루트 페이지 ID | 페이지 |
추가 설정 (선택):
변수 | 설명 | 기본값 |
| Wiki 페이지 제목에 표시할 작성자 이름 (예: |
|
| Git 저장소 매핑 (JSON). 브랜치 자동 탐지에 사용 |
|
|
|
|
| 다이어그램 기능 사용 여부 ( |
|
| Kroki 서버 URL |
|
| Kroki Docker 컨테이너 이름 |
|
GIT_REPOSITORIES 예시:
GIT_REPOSITORIES='{"project-a": "/프로젝트A경로", "project-b": "/프로젝트B경로"}'프로젝트별 Jira 설정 (JIRA_PROJECT_CONFIGS)
프로젝트마다 다른 Jira 동작(종료일 필드, Wiki 날짜 기준, 커스텀 필드, 상태 목록)을 환경변수로 선언적으로 구성합니다.
JIRA_PROJECT_CONFIGS='[
{
"key": "프로젝트키",
"due_date_field": "customfield_12345",
"wiki_date_field": "customfield_12345",
"jira_custom_fields": {"종료일": "customfield_12345"},
"statuses": ["할일", "진행중", "검수대기", "완료"],
"status_mapping": {
"done": ["완료", "배포완료"],
"in progress": ["진행중"],
"to do": ["할일"],
"pending": ["검수대기"]
}
},
{
"key": "프로젝트키2",
"due_date_field": null,
"wiki_date_field": "created",
"jira_custom_fields": {},
"statuses": ["접수", "처리중", "답변완료"],
"status_mapping": {
"done": ["답변완료"],
"in progress": ["처리중"],
"to do": ["접수"]
}
}
]'속성 설명:
속성 | 필수 | 설명 |
| O | Jira 프로젝트 키 (이슈키 프리픽스, 예: |
| O | 완료 시 종료일을 기록할 Jira 필드명. |
| O | Wiki 년/월 경로에 사용할 Jira 필드명. |
| - | 커스텀 필드 표시명 → 필드 ID 매핑 (예: |
| - | MCP Tool 안내에 표시할 주요 상태값 목록 |
| - | 영어→한글 상태 매핑 (예: |
커스텀 필드 ID 확인 방법:
GET {JIRA_BASE_URL}/rest/api/2/fieldAPI 호출 → 응답에서name/id매핑 확인{ "id": "customfield_12345", "name": "종료일", "custom": true }
2. 가상환경 생성
방법 A: Miniconda (권장)
1) Miniconda 설치
# Homebrew로 설치
brew install --cask miniconda
# 설치 후 conda 초기화
conda init zsh # 또는 conda init bash또는 공식 사이트에서 macOS 설치파일 다운로드
2) 가상환경 생성
conda create -n 가상환경이름 python=3.11 -y3) 가상환경의 Python 파일 위치 찾기
conda activate 가상환경이름
which python
# 출력 예: /유저위치/miniconda3/envs/가상환경이름/bin/python이 경로를 메모해두세요. MCP 등록 시 필요합니다.
4) 가상환경 활성화
conda activate 가상환경이름5) 의존성 설치
cd /auto-mcp-server프로젝트경로/auto-mcp-server
pip install -r requirements.txt방법 B: Python venv
1) venv 가상환경 생성
cd /auto-mcp-server프로젝트경로/auto-mcp-server
python3.11 -m venv .venv2) 가상환경의 Python 파일 위치 찾기
source .venv/bin/activate
which python
# 출력 예: /auto-mcp-server프로젝트경로/auto-mcp-server/.venv/bin/python이 경로를 메모해두세요. MCP 등록 시 필요합니다.
3) 가상환경 활성화
source .venv/bin/activate4) 의존성 설치
pip install -r requirements.txt3. MCP 추가
Claude Code에서 사용
1) 명령어로 MCP 추가
MCP를 사용할 프로젝트의 일반 터미널에서 실행합니다. (Claude Code 안이 아닌, 일반 터미널에서 claude mcp add 명령 실행)
# MCP를 사용할 프로젝트 디렉토리에서 실행
cd /MCP를사용할프로젝트경로
claude mcp add auto-mcp-server \
-e APP_ENV=local \
-e PYTHONPATH=/auto-mcp-server프로젝트경로/auto-mcp-server \
-- /유저위치/miniconda3/envs/가상환경이름/bin/python -m srcvenv 사용 시 Python 경로를
/auto-mcp-server프로젝트경로/auto-mcp-server/.venv/bin/python으로 교체하세요.
2) 직접 설정 파일 수정
명령어 대신 JSON 파일을 직접 편집하여 추가할 수도 있습니다.
글로벌 설정 (모든 프로젝트에서 사용):
~/.claude/settings.json프로젝트별 설정 (해당 프로젝트에서만 사용):
/MCP를사용할프로젝트경로/.claude/settings.local.json
위 파일을 열고 mcpServers 섹션에 다음 내용을 추가합니다:
{
"mcpServers": {
"auto-mcp-server": {
"command": "/유저위치/miniconda3/envs/가상환경이름/bin/python",
"args": ["-m", "src"],
"cwd": "/auto-mcp-server프로젝트경로/auto-mcp-server",
"env": {
"APP_ENV": "local",
"PYTHONPATH": "/auto-mcp-server프로젝트경로/auto-mcp-server"
}
}
}
}한글로 표시된 부분을 본인의 실제 경로로 교체하세요.
3) 등록 확인
claude mcp listClaude Desktop에서 사용
1) 설정 메뉴 위치
Claude Desktop 앱 → 좌측 메뉴 → Settings → Developer → Edit Config
2) 직접 설정 파일 수정
파일 위치: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"auto-mcp-server": {
"command": "/유저위치/miniconda3/envs/가상환경이름/bin/python",
"args": ["-m", "src"],
"cwd": "/auto-mcp-server프로젝트경로/auto-mcp-server",
"env": {
"APP_ENV": "local",
"PYTHONPATH": "/auto-mcp-server프로젝트경로/auto-mcp-server"
}
}
}
}한글로 표시된 부분을 본인의 실제 경로로 교체하세요.
3) 설정 후 Claude Desktop 재시작 필요
4. Ignore 세팅
이 섹션은 MCP 서버 설정이 아닌, Claude Code 자체의 기본 설정에 대한 내용입니다. Claude Code가 프로젝트 파일을 읽을 때 민감한 파일을 제외하거나, Claude 관련 파일이 Git에 올라가지 않도록 설정하는 방법을 안내합니다.
.claudeignore 설정 (Claude Code가 보면 안 되는 파일)
.claudeignore는 Claude Code를 실행하는 각 프로젝트에서 개별적으로 설정합니다. (auto-mcp-server가 아닌, Claude Code로 작업하는 프로젝트에서 실행)
# claudeignore CLI 도구 설치 (최초 1회)
npm install -g claudeignore
# Claude Code를 사용하는 프로젝트에서 초기화
cd /Claude를사용할프로젝트경로
npx claude-ignore init생성된 .claudeignore 파일에 Claude Code가 읽지 않아야 할 파일/디렉토리 패턴을 추가합니다.
예시:
.env.local
logs/
*.secret.gitignore 설정 (Claude 관련 파일 Git 제외)
Claude Code를 사용하는 프로젝트의 .gitignore에 다음 패턴을 추가하여 Claude 관련 파일이 Git에 올라가지 않도록 합니다.
# Claude Code 관련
.claude/
.claudeignore
CLAUDE.md
CLAUDE-*.mdClaude Code가 자동 생성하는 설정/메모리 파일이 Git 저장소에 포함되지 않도록 설정
팀 공유가 필요한 파일이 있는 경우 선택적으로 제외 가능
🎯 제공 기능
MCP Tool 전체 목록
카테고리 | Tool | 설명 |
Jira |
| 특정 이슈 조회 (key로) |
| 내 이슈 목록 조회 (상태/프로젝트 필터링) | |
| 프로젝트 이슈 유형 및 상태값 조회 | |
| 이슈 완료 처리 (상태 전환 + 종료일 설정) | |
| 이슈 상태 전환 (임의 상태로) | |
| JQL 기반 필터 생성 | |
Wiki |
| Wiki 페이지 조회 (페이지 ID 또는 제목으로) |
| Wiki 하위 페이지 목록 조회 | |
| Wiki 페이지 수정 (2단계 승인 프로세스) | |
| Jira 이슈 정리 Wiki 페이지 생성 (워크플로우 A) | |
| 브랜치/커밋 기반 Wiki 페이지 생성 (워크플로우 B) | |
| 자유 형식 커스텀 Wiki 페이지 생성 (워크플로우 C) | |
| Wiki 생성/수정 승인 (실제 페이지 생성 또는 수정) | |
| Wiki 생성 세션 상태 조회 | |
| Wiki 템플릿 핫 리로드 | |
Git |
| 브랜치 커밋 수집 (Wiki 생성용) |
| 브랜치 변경사항 분석 (범용) | |
다이어그램 |
| 다이어그램 코드를 SVG/PNG로 렌더링 (선택 기능) |
| 다이어그램을 렌더링하여 Wiki 페이지에 첨부 (선택 기능) |
Context 사용량
MCP 서버 연결 시 19개 Tool 정의(description + inputSchema)가 에이전트의 context에 로드됩니다.
항목 | 토큰 수 |
Tool description | ~1,700 |
inputSchema (파라미터 정의) | ~5,500 |
합계 | ~7,200 |
200k context 기준 약 3.6% 소모. 도구를 호출하지 않아도 연결만으로 이 만큼 사용됩니다.
1. Jira 기능
1.1 특정 이슈 조회 (get_jira_issue)
Claude에게: "MYPROJECT-2365 이슈 상세정보 알려줘"파라미터:
key(필수): Jira 이슈 키 (예:MYPROJECT-2365)
응답:
이슈 키, 제목, 상태, 담당자, 유형
클릭 가능한 Jira 링크
전체 설명(Description)
JIRA_PROJECT_CONFIGS에 등록된 커스텀 필드 값 (설정된 경우)첨부파일 내용 (아래 표 참고)
첨부파일 처리:
이슈에 첨부된 파일을 자동으로 감지하여, 파일 유형에 따라 내용을 추출합니다.
분류 | 대상 | 크기 제한 | 반환 방식 |
이미지 | PNG, JPEG, GIF, WebP | 5MB | Base64 |
엑셀 | XLSX, XLS | 2MB | 시트별 텍스트 변환 (최대 3시트, 시트당 200행) |
텍스트 | TXT, CSV, JSON, XML, HTML, SVG, LOG 등 | 500KB | UTF-8 텍스트로 디코딩하여 반환 |
기타/대용량 | 위 조건 외 모든 파일 | — | 메타정보 + 다운로드 URL만 제공 |
첨부파일 조회 실패 시에도 이슈 본문은 정상 반환됩니다. 개별 파일 처리 실패 시 해당 파일만 메타정보로 폴백합니다.
1.2 내 이슈 목록 조회 (get_jira_issues)
Claude에게: "내 Jira 이슈 목록 보여줘"
Claude에게: "진행 중인 이슈만 보여줘"파라미터:
statuses(선택): 조회할 상태 목록 (생략 시 전체 조회)project_key(선택): 특정 프로젝트로 필터링issuetype(선택): 이슈 유형 필터 (예:"버그","스토리")created_after(선택): 이 날짜 이후 생성된 이슈 (YYYY-MM-DD)created_before(선택): 이 날짜 이전 생성된 이슈 (YYYY-MM-DD)text(선택): 제목/설명에서 키워드 검색assignee(선택): 담당자 지정 (미지정 시 현재 사용자)custom_field_filters(선택): 커스텀 필드 범위 필터 ({필드명: {after?, before?}})
영어 상태값 자동 변환:
영어 입력 | 변환되는 한글 상태값 |
| 완료 관련 모든 상태 (완료, 개발완료 등) |
| 진행중 관련 모든 상태 |
| 할일 관련 모든 상태 |
| 보류 관련 상태 |
| 검수 관련 상태 |
1.3 프로젝트 메타 조회 (get_jira_project_meta)
Claude에게: "MYPROJECT 프로젝트 이슈 유형 알려줘"파라미터:
project_key(필수): Jira 프로젝트 키
응답:
이슈 유형 목록 (Bug, Task, Story 등)
각 유형별 사용 가능한 상태값
1.4 이슈 완료 처리 (complete_jira_issue)
Claude에게: "MYPROJECT-1234 이슈 완료처리 해줘"파라미터:
key(필수): Jira 이슈 키due_date(선택): 종료일 (YYYY-MM-DD, 생략 시 오늘)
동작:
이슈를 완료 상태로 자동 전환
JIRA_PROJECT_CONFIGS에 설정된due_date_field에 종료일을 기록due_date_field가null인 프로젝트는 종료일 미설정설정이 없는 프로젝트도 종료일 미설정
1.5 이슈 상태 전환 (transition_jira_issue)
Claude에게: "MYPROJECT-1234 진행중으로 바꿔줘"파라미터:
key(필수): Jira 이슈 키target_status(필수): 전환할 목표 상태명
해당 이슈에서 실제로 전환 가능한 상태 목록 안에서만 동작합니다.
JIRA_PROJECT_CONFIGS의statuses에 등록된 주요 상태값이 Tool 안내에 표시됩니다.
1.6 Jira 필터 생성 (create_jira_filter)
Claude에게: "내 진행중 이슈 필터 만들어줘"파라미터:
name(필수): 필터 이름jql(필수): JQL 쿼리
예시:
name: "내 진행중 이슈"
jql: "assignee = currentUser() AND status = '진행중'"2. Wiki 생성/조회/수정 기능
중요: 2단계 승인 프로세스
모든 Wiki 생성 및 수정은 반드시 사용자 승인이 필요합니다!
sequenceDiagram
actor User as 사용자
participant Claude
participant MCP as MCP Server
participant Wiki as Confluence
User->>Claude: Wiki 생성/수정 요청
Claude->>MCP: create_wiki_*_page<br/>또는 update_wiki_page
MCP-->>Claude: 프리뷰 + session_id<br/>+ approval_token
Note over MCP: 상태: WAIT_APPROVAL
Claude->>User: 프리뷰 확인 요청
alt 승인
User->>Claude: 승인
Claude->>MCP: approve_wiki_generation<br/>(session_id, approval_token)
MCP->>Wiki: 페이지 생성/수정
Wiki-->>MCP: 완료
MCP-->>Claude: 페이지 URL 반환
Note over MCP: 상태: DONE
else 거절
User->>Claude: 거절
Note over MCP: 세션 만료 (30분 TTL)
end참고: 페이지 조회 (
get_wiki_page)는 승인 없이 즉시 결과를 반환합니다.
2.1 Jira 이슈 정리 페이지 생성 (create_wiki_issue_page)
Jira 이슈 완료 후 Wiki에 정리 페이지를 생성합니다.
Claude에게: "MYPROJECT-1234 Wiki 이슈 정리 페이지 만들어줘"필수 파라미터:
issue_key: Jira 이슈 키 (예:MYPROJECT-1234)issue_title: Jira 이슈 제목
선택 파라미터:
commit_list: 커밋 목록 (줄바꿈 구분). 미제공 시 로컬 git에서 자동 조회change_summary: 변경 내용 요약. 미제공 시 커밋 메시지에서 자동 생성assignee: 담당자 (기본값: "미지정")resolution_date: 완료일 (YYYY-MM-DD, 기본값: 오늘)priority: 우선순위 (기본값: "보통")project_name: 프로젝트명. 동일 이슈 페이지가 이미 존재하면 프로젝트별 섹션으로 추가. 자세한 내용은 멀티프로젝트 Wiki 병합 참조
프로세스:
프리뷰 생성 → 승인 대기
사용자 확인
approve_wiki_generation(session_id, approval_token)호출Wiki 페이지 생성 완료 (또는 기존 페이지에 프로젝트 섹션 추가)
2.2 브랜치/커밋 내용으로 Wiki 생성 (create_wiki_page_with_content)
브랜치, GitLab MR, 커밋 범위 등으로 Wiki 페이지를 생성합니다.
Claude에게: "dev_feature 브랜치 커밋 목록으로 Wiki 페이지 만들어줘"필수 파라미터:
page_title: Wiki 페이지 제목commit_list: 커밋 목록 (줄바꿈 구분)
선택 파라미터:
input_type: 입력 유형 설명 (기본값: "브랜치명", 예: "GitLab MR", "커밋 범위")input_value: 브랜치명, MR 번호 등 원본 값base_date: 기준 날짜 (YYYY-MM-DD, 기본값: 오늘)change_summary: 변경 내용 요약 (생략 시 자동 생성)diff_stat: git diff --stat 결과 (collect_branch_commits에서 받은 값 전달 시 Wiki "변경 파일 목록" 섹션에 포함)jira_issue_keys: 관련 Jira 이슈 키 (콤마 구분, 예:MYPROJECT-1234,MYPROJECT-567)포함 시 Jira 이슈 내용이 Wiki에 추가됨
JIRA_PROJECT_CONFIGS의wiki_date_field설정에 따라 프로젝트별 날짜 기준 자동 적용
project_name: 프로젝트명. 동일 제목의 페이지가 이미 존재하면 프로젝트별 섹션으로 추가. 자세한 내용은 멀티프로젝트 Wiki 병합 참조
2.3 커스텀 Wiki 페이지 생성 (create_wiki_custom_page)
특정 부모 페이지 아래에 자유 형식(마크다운/텍스트)으로 Wiki 페이지를 생성합니다.
Claude에게: "'AI' 페이지 아래에 기술 문서 작성해줘"필수 파라미터:
page_title: 생성할 페이지 제목content: 페이지 내용 (마크다운 또는 텍스트)parent_page_id또는parent_page_title중 하나
선택 파라미터:
space_key: Confluence Space 키 (생략 시WIKI_ISSUE_SPACE_KEY에 등록된 공간을 우선순위 순서대로 검색)
특징:
기존 워크플로우(A/B)와 달리 연/월 계층 구조를 사용하지 않음
사용자가 지정한 부모 페이지 바로 아래에 페이지 생성
parent_page_title사용 시 여러 공간에서 자동 fallback 검색 (예: DEV에 없으면 OPS에서 검색)마크다운 형식 지원 (제목, 목록, 코드블록, 볼드, 이탤릭 등)
일반 텍스트도 자동으로 Confluence HTML로 변환
2.4 Wiki 페이지 조회 (get_wiki_page)
페이지 ID 또는 제목으로 Wiki 페이지를 조회합니다. 승인 없이 즉시 결과를 반환합니다.
Claude에게: "AI Wiki 페이지 내용 보여줘"
Claude에게: "페이지 ID 339090255 내용 조회해줘"파라미터:
page_id(선택): 페이지 ID (직접 조회)page_title(선택): 페이지 제목 (Space 내 검색)space_key(선택): Confluence Space 키 (생략 시WIKI_ISSUE_SPACE_KEY에 등록된 공간을 우선순위 순서대로 검색)
page_id와page_title중 최소 하나 필수. 둘 다 제공 시page_id우선.
응답:
페이지 ID, 제목, Space, URL, 버전
페이지 본문 (Confluence Storage Format HTML)
2.5 Wiki 하위 페이지 조회 (get_wiki_child_pages)
특정 페이지의 직계 하위 페이지 목록을 조회합니다. 페이지네이션을 자동 처리하여 전체 목록을 한 번에 반환합니다.
Claude에게: "페이지 ID 24273358의 하위 페이지 목록 보여줘"파라미터:
page_id(필수): 상위 페이지의 Confluence 페이지 ID
응답:
하위 페이지 번호, 페이지 ID, 제목, URL을 마크다운 테이블로 반환
하위 페이지가 없는 경우 안내 메시지 반환
WIKI_BASE_URL환경 변수만 필요합니다 (WIKI_ISSUE_ROOT_PAGE_ID불필요).
활용 패턴: get_wiki_child_pages로 하위 페이지 ID를 확인한 뒤, get_wiki_page로 내용을 읽거나 update_wiki_page로 수정하는 워크플로우에 유용합니다.
2.6 Wiki 페이지 수정 (update_wiki_page)
기존 Wiki 페이지의 내용을 수정합니다. 2단계 승인 프로세스가 적용됩니다.
Claude에게: "AI 페이지에 새 내용 추가해줘"
Claude에게: "339090255 페이지에서 불필요한 섹션 삭제해줘"파라미터:
page_id(선택): 수정할 페이지 IDpage_title(선택): 수정할 페이지 제목body(필수): 수정된 전체 페이지 본문 (Confluence Storage Format HTML)space_key(선택): Confluence Space 키
page_id와page_title중 최소 하나 필수. 둘 다 제공 시page_id우선.
프로세스:
현재 페이지 조회 → 버전 캡처
프리뷰 생성 → 승인 대기 (
WAIT_APPROVAL)사용자 확인
approve_wiki_generation(session_id, approval_token)호출실제 페이지 수정 (Optimistic Locking: 버전 충돌 시 자동 재시도 최대 3회)
일반적인 사용 흐름:
get_wiki_page로 현재 페이지 내용 조회Claude가 HTML 내용을 분석하여 수정 사항 반영
update_wiki_page로 수정된 HTML 전달 → 프리뷰 확인승인 후 실제 수정 적용
2.7 Wiki 생성/수정 승인 (approve_wiki_generation)
Claude에게: "Wiki 생성 승인해줘"필수 파라미터:
session_id: 세션 IDapproval_token: 승인 토큰
응답:
생성/수정된 페이지 제목, ID, URL
새 페이지 생성 시: "Wiki 페이지 생성 완료 (승인)"
기존 페이지 수정 시: "Wiki 페이지 수정 완료 (승인)"
기존 페이지에 프로젝트 섹션 추가 시: "Wiki 페이지 업데이트 완료 (기존 페이지에 프로젝트 섹션 추가)"
2.8 Wiki 생성 상태 조회 (get_wiki_generation_status)
Claude에게: "Wiki 생성 세션 상태 확인해줘"필수 파라미터:
session_id: 세션 ID
응답:
세션 ID, 워크플로우 유형, 현재 상태
페이지 제목, 승인 토큰, 프리뷰
2.9 멀티프로젝트 Wiki 병합
하나의 Jira 이슈가 여러 프로젝트에 걸쳐 수정될 때, 각 프로젝트의 변경사항을 하나의 Wiki 페이지에 통합할 수 있습니다.
동작 원리:
project_name파라미터를 지정하여 Wiki 생성 도구를 호출하면, 동일 제목의 페이지가 이미 존재할 때 에러 대신 기존 페이지에 프로젝트별 섹션을 추가(append)합니다.추가되는 섹션은 Confluence info 매크로로 시각적으로 구분됩니다.
project_name을 생략하면 기존 동작과 동일합니다 (중복 페이지 시 에러).
페이지 구조 예시:
[MYPROJECT-1234] 로그인 버그 수정
├── (원본) 이슈 정보 테이블, 커밋 내역, 변경 요약 (첫 번째 프로젝트)
├── ──────── (구분선) ────────
└── [info 매크로] project-b 추가 변경사항 (2026-03-04)
├── 브랜치 및 커밋 내역
├── 커밋 요약
└── 변경 내용 요약Upsert 동작 흐름:
flowchart TD
A["Wiki 생성 도구 호출"] --> B{"project_name 지정?"}
B -->|"지정"| C{"동일 제목 페이지 존재?"}
B -->|"생략"| D{"동일 제목 페이지 존재?"}
C -->|"없음"| E["새 페이지 생성"]
C -->|"있음"| F["기존 페이지에<br/>프로젝트 섹션 추가"]
D -->|"없음"| G["새 페이지 생성"]
D -->|"있음"| H["에러 발생<br/>(하위호환)"]주의: 첫 번째 프로젝트부터
project_name을 명시하세요첫 번째 호출에서
project_name을 생략하면 프로젝트 구분 없이 페이지가 생성되고, 두 번째 호출에서만 프로젝트별 섹션이 추가되어 비대칭적인 페이지 구조가 됩니다.
2.10 Wiki 템플릿 커스터마이징 (선택)
템플릿 파일 위치: config/wiki_templates.yaml
# 페이지 제목 형식
title_formats:
year: "[{{ AUTHOR_NAME }}] {{ YEAR }}"
month: "[{{ AUTHOR_NAME }}] {{ YEAR }}-{{ MONTH_PADDED }}"
# 워크플로우별 본문 템플릿
workflows:
workflow_a:
description: "Jira 이슈 완료 후 Wiki 생성"
body: |
<h2>이슈 정보</h2>
...사용 가능한 변수:
변수 | 워크플로우 | 설명 |
| 제목 형식 | 작성자 이름 ( |
| 제목 형식 | 년도 / 월(2자리) |
| A | Jira 이슈 키 / 제목 |
| A | 담당자 / 완료일 |
| A, B | 커밋 목록 (HTML) |
| A, B | 변경 내용 요약 (HTML) |
| B | 입력 유형 / 값 |
| C | 자유 형식 본문 (마크다운→HTML) |
템플릿 리로드: 수정 후 서버 재시작 없이 반영하려면 Claude에게 "Wiki 템플릿 리로드해줘"라고 요청하세요.
3. Git 커밋 수집 및 분석
3.1 브랜치 커밋 수집 (collect_branch_commits)
브랜치의 고유 커밋 목록과 변경사항(diff)을 수집합니다. Wiki 페이지 생성 워크플로우에 사용됩니다.
Claude에게: "dev_MYPROJECT-1234 브랜치 커밋 수집해줘"필수 파라미터:
branch_name: 조회할 브랜치명 (예:dev_MYPROJECT-1234)
선택 파라미터:
repository_path: git 저장소 경로 (생략 시GIT_REPOSITORIES에 등록된 저장소에서 자동 탐지)include_diff:true시 스마트 필터링된 diff 원본 포함 (기본값:false)
베이스 브랜치 자동 탐지: 다음 순서로 베이스 브랜치를 찾아 정확한 커밋 범위를 계산합니다:
dev→ 2.origin/dev→ 3.develop→ 4.origin/develop→ 5.main→ 6.master
저장소 자동 탐지:
repository_path미지정 시.env.local의GIT_REPOSITORIES에 등록된 저장소를 순회하여 브랜치를 탐지머지 커밋이 있는 저장소 우선, 활성 브랜치가 있는 저장소 차순
동일 브랜치가 여러 저장소에 존재하면 자동 선택하지 않고 disambiguation 메시지를 반환하여
repository_path지정을 안내
스마트 Diff 필터링 (include_diff=true):
소스코드(high priority) > 설정/스타일 파일(medium) > lock/생성 파일(low) 순으로 우선 포함
package-lock.json,yarn.lock,OpenApi/,.min.js등 자동 제외MAX_DIFF_CHARS환경변수로 최대 크기 조절 (기본값: 30000자)
Jira 이슈 자동 추출:
브랜치명과 커밋 메시지에서 JIRA_PROJECT_CONFIGS에 등록된 프로젝트 키 패턴을 자동 감지하여 관련 Jira 이슈 키를 추출합니다.
2단계 선택 워크플로우:
flowchart TD
A["collect_branch_commits<br/>(include_diff=false)"] --> B{"diff 크기 확인"}
B -->|"소규모"| C["방법 A: 커밋 메시지 기반<br/>change_summary 작성"]
B -->|"대규모 — diff 분석 필요"| D["collect_branch_commits<br/>(include_diff=true)"]
D --> E["방법 B: diff 분석 기반<br/>change_summary 작성"]
C --> F["create_wiki_page_with_content"]
E --> F3.2 브랜치 변경사항 분석 (analyze_branch_changes)
브랜치의 변경사항을 분석하여 보고합니다. Wiki 생성 없이 변경사항에 대한 질문에 답변할 때 사용합니다.
Claude에게: "dev_feature 브랜치에서 뭐 바뀌었어?"
Claude에게: "이번 변경사항 요약해줘"필수 파라미터:
branch_name: 분석할 브랜치명
선택 파라미터:
repository_path: git 저장소 경로 (생략 시GIT_REPOSITORIES에서 자동 탐지, 동일 브랜치가 여러 저장소에 존재하면 disambiguation 메시지 반환)
collect_branch_commits와의 차이:
collect_branch_commits: Wiki 페이지 생성 워크플로우 전용analyze_branch_changes: 범용 변경사항 분석/질문 답변용
응답:
커밋 수, 커밋 목록
변경 파일 통계 (diff --stat)
스마트 필터링된 코드 변경사항
감지된 Jira 이슈 키
4. 다이어그램 기능 (선택)
Mermaid, PlantUML 등 다이어그램 코드를 SVG/PNG 이미지로 렌더링하고, Wiki 페이지에 첨부할 수 있습니다.
선택 기능:
KROKI_ENABLED=true설정 시에만 활성화됩니다. 비활성화 상태에서도 나머지 기능은 정상 동작합니다.
사전 설정 (최초 1회)
1) Docker Desktop 설치 확인
docker --version2) Kroki 컨테이너 생성 (한 번만)
docker create --name kroki -p 8000:8000 yuzutech/kroki이 명령은 Python 가상환경과 무관합니다. 아무 터미널에서 실행하면 됩니다. Docker 컨테이너를 "등록"만 하고, 실제 실행은 MCP 서버가 관리합니다.
3) 환경 변수 설정
.env.local에 추가:
KROKI_ENABLED=true동작 원리
sequenceDiagram
participant MCP as MCP Server
participant Docker as Docker (Kroki)
Note over MCP: python -m src 실행
alt KROKI_ENABLED=true
MCP->>Docker: docker start kroki
Docker-->>MCP: Kroki 활성화 (localhost:8000)
Note over MCP,Docker: 다이어그램 도구 사용 가능
MCP->>Docker: docker stop kroki (서버 종료 시)
Docker-->>MCP: 리소스 해제
else KROKI_ENABLED=false
Note over MCP: Docker 미접촉, 다이어그램 도구 비활성화
end지원 다이어그램 타입 (15종)
주요 타입:
타입 | 설명 | 예시 용도 |
| UML 다이어그램 (권장 — 가장 안정적) | 시퀀스, 클래스, 유스케이스 |
| 범용 다이어그램 | 시퀀스, 플로우차트, 클래스, ER |
| C4 아키텍처 모델 | 시스템 컨텍스트, 컨테이너, 컴포넌트 |
| 그래프/네트워크 | 의존성 그래프, 상태 다이어그램 |
| ER 다이어그램 | DB 스키마 시각화 |
기타: ditaa, nomnoml, svgbob, vega, vegalite, wavedrom, bpmn, bytefield, excalidraw, pikchr
4.1 다이어그램 렌더링 (generate_diagram)
다이어그램 코드를 SVG 또는 PNG로 렌더링합니다. Wiki 첨부 없이 미리보기 용도로 사용합니다.
Claude에게: "Mermaid로 로그인 흐름 시퀀스 다이어그램 그려줘"필수 파라미터:
diagram_type: 다이어그램 타입 (예:mermaid,plantuml,c4plantuml)code: 다이어그램 소스 코드
선택 파라미터:
output_format: 출력 형식 —svg(기본) 또는png
응답:
다이어그램 타입, 형식, 크기 정보
attach_diagram_to_wiki도구 사용 안내
4.2 다이어그램 Wiki 첨부 (attach_diagram_to_wiki)
다이어그램을 렌더링하여 기존 Wiki 페이지에 첨부파일로 업로드하고, 페이지 본문에 이미지를 삽입합니다.
프리뷰 반환 후
approve_wiki_generation으로 승인해야 실제 첨부파일 업로드 및 본문 수정이 실행됩니다.
Claude에게: "이 다이어그램을 페이지 ID 339090255에 첨부해줘"필수 파라미터:
page_id: 다이어그램을 첨부할 Confluence 페이지 IDdiagram_type: 다이어그램 타입 (예:mermaid,plantuml)code: 다이어그램 소스 코드
선택 파라미터:
filename: 첨부파일명 (기본:diagram.svg). 예:architecture.svg,login-flow.svgcaption: 이미지 아래 표시할 캡션insert_position: 본문 삽입 위치 —append(끝에 추가, 기본) 또는prepend(맨 앞에 추가)
응답:
다이어그램 프리뷰 정보 (대상 페이지, 파일명, 크기, 삽입 위치)
session_id+approval_token(승인용)
💡 사용 예시
예시 1: Jira 이슈 완료 + Wiki 생성 (기본 흐름)
사용자: "MYPROJECT-2365 이슈 완료처리 해줘"
→ complete_jira_issue 실행
사용자: "Wiki 이슈 정리 페이지도 만들어줘"
→ create_wiki_issue_page → 프리뷰 반환
사용자: "승인"
→ approve_wiki_generation → Wiki 페이지 생성 완료커스텀 페이지(
create_wiki_custom_page), 브랜치 커밋 기반(create_wiki_page_with_content) 생성도 동일한 프리뷰 → 승인 흐름입니다.
예시 2: 브랜치 커밋 수집 + Jira 이슈 포함 Wiki 생성
사용자: "dev_feature 브랜치 커밋 수집하고, MYPROJECT-100,MYPROJECT-101 이슈 포함해서 Wiki 만들어줘"
→ collect_branch_commits("dev_feature")
→ create_wiki_page_with_content(commit_list="...", jira_issue_keys="MYPROJECT-100,MYPROJECT-101")
→ 프리뷰 (Jira 이슈 2건 포함)
사용자: "승인"
→ approve_wiki_generation → 생성 완료예시 3: Wiki 페이지 조회 및 수정
사용자: "AI 페이지에 새 섹션 추가해줘"
→ get_wiki_page(page_title="AI") — 현재 내용 조회 (승인 불필요)
→ update_wiki_page(page_title="AI", body=수정된HTML) → 프리뷰 반환
사용자: "승인"
→ approve_wiki_generation → 수정 완료예시 4: 멀티프로젝트 Wiki 병합
# 1단계: project-a
→ create_wiki_issue_page(issue_key="MYPROJECT-1234", project_name="project-a")
→ approve → 새 페이지 생성
# 2단계: project-b (동일 이슈)
→ create_wiki_issue_page(issue_key="MYPROJECT-1234", project_name="project-b")
→ approve → 기존 페이지에 프로젝트 섹션 추가예시 5: 브랜치 변경사항 분석 (Wiki 생성 없이)
사용자: "dev_feature 브랜치에서 뭐 바뀌었어?"
→ analyze_branch_changes 실행
Claude: "15개 커밋, 8개 파일 변경. 주요 변경사항: ..."예시 6: 동일 브랜치가 여러 저장소에 존재하는 경우
사용자: "dev_MYPROJECT-1234 브랜치 커밋 수집해줘"
→ 여러 저장소에서 발견 → disambiguation 메시지 반환
사용자: "project-b 프로젝트의 커밋을 수집해줘"
→ collect_branch_commits("dev_MYPROJECT-1234", repository_path="/Users/.../project-b")하나의 저장소에만 브랜치가 존재하면 자동 선택됩니다.
예시 7: 다이어그램 생성 + Wiki 첨부
사용자: "PlantUML로 클래스 다이어그램 만들어서 페이지 ID 339090255에 첨부해줘"
→ attach_diagram_to_wiki(page_id="339090255", diagram_type="plantuml", code="...")
→ 프리뷰 반환 (파일명, 크기, 삽입 위치)
사용자: "승인"
→ approve_wiki_generation → 첨부 완료
generate_diagram으로 미리보기만 할 수도 있습니다. Wiki 첨부 없이 SVG/PNG 렌더링 결과만 확인합니다.
🛠 문제 해결
증상 | 원인 | 해결 |
| 잘못된 ID/비밀번호 |
|
| Wiki 환경변수 누락 |
|
| 브랜치 미존재 / 저장소 미등록 |
|
| 컨테이너 미생성 / Docker 미실행 | Docker Desktop 실행 확인 → |
| 환경변수 미설정 |
|
| 컨테이너 중지 / 포트 충돌 |
|
| 다이어그램 문법 오류 | 소스 코드 문법 및 지원 타입 확인 |
MCP 서버가 보이지 않음 | 경로 오류 / 미등록 |
|
채팅에서 일부 도구만 사용됨 | MCP Tool 조회 수 제한 | 아래 채팅 환경 Tool 제한 참조 |
채팅 환경 Tool 제한
Claude 채팅(claude.ai)에서 MCP 서버를 사용할 때, MCP Tool 조회 수에 limit 설정이 적용되어 있어 등록된 전체 도구 중 상위 N개만 조회 및 사용될 수 있습니다.
이 경우 일부 도구가 채팅에서 인식되지 않거나 호출되지 않을 수 있으므로, 채팅 환경의 MCP 설정에서 Tool limit 값을 충분히 높게 설정해야 합니다.
참고: Claude Code(CLI)에서는 이 제한이 적용되지 않으며, 모든 도구가 정상적으로 사용됩니다.
로그 확인: tail -f logs/mcp-server.log (10MB, 5개 백업 로테이션)
📚 추가 정보
아키텍처
Hexagonal Architecture (Ports & Adapters) 기반
graph TB
Claude["Claude Desktop / Claude Code"]
subgraph MCP Server
direction TB
Inbound["MCP Inbound<br/><code>adapters/inbound/mcp/tools.py</code>"]
subgraph Application
direction LR
UseCases["Use Cases<br/><code>application/use_cases/</code>"]
Ports["Ports<br/><code>application/ports/</code>"]
Services["Services<br/><code>application/services/</code>"]
end
Domain["Domain<br/><code>domain/</code>"]
subgraph Outbound["Outbound Adapters"]
direction LR
JiraAdapter["Jira API<br/><code>jira_adapter</code>"]
WikiAdapter["Confluence API<br/><code>wiki_adapter</code>"]
GitAdapter["Local Git<br/><code>git_local_adapter</code>"]
KrokiAdapter["Kroki<br/><code>kroki_adapter</code>"]
end
Config["Configuration<br/><code>configuration/</code><br/>DI Container, Settings"]
end
Claude -- "stdin/stdout" --> Inbound
Inbound --> UseCases
UseCases --> Ports
UseCases --> Services
UseCases --> Domain
Ports --> JiraAdapter
Ports --> WikiAdapter
Ports --> GitAdapter
Ports --> KrokiAdapter
Config -.-> Inbound
Config -.-> UseCases
Config -.-> Outbound주요 의존성
패키지 | 버전 | 용도 |
| 1.9.4 | MCP 서버 프레임워크 |
| 0.28.1 | 비동기 HTTP 클라이언트 (Jira/Confluence API) |
| 2.12.5 | 데이터 검증 |
| 2.13.0 | 환경변수 기반 설정 |
| 3.1.6 | Wiki 템플릿 렌더링 |
| 6.0.3 | 템플릿 YAML 파싱 |
| 3.2.0 | 마크다운→HTML 변환 (커스텀 Wiki 페이지) |
| 1.2.1 | 환경 변수 로딩 |
개발
# 가상환경 활성화
conda activate 가상환경이름 # 또는 source .venv/bin/activate
# 의존성 설치
pip install -r requirements.txt
# 로컬 실행
APP_ENV=local python -m src
# 로그 확인
tail -f logs/mcp-server.log새 MCP Tool 추가 방법
src/application/ports/- Port Protocol 정의src/adapters/outbound/- Adapter 구현src/application/use_cases/- Use Case 작성src/configuration/container.py- DI 등록src/adapters/inbound/mcp/tools.py- MCP Tool 등록
코드 컨벤션
설정/엔티티:
@dataclass(frozen=True)외부 계약:
typing.ProtocolDI Container:
@lru_cache싱글톤비동기 I/O:
async/awaitType hints:
X | None(notOptional[X])
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceAn MCP server that enables AI agents to interact with Atlassian products (Confluence and Jira) for content management, issue tracking, and project management through a standardized interface.2,649 npm6MIT
- AlicenseNot gradedqualityCmaintenanceMCP server that equips AI agents with dev workflow tools including GitHub project management, conventional commits, visual regression testing, Jira/Confluence integration, and a persistent memory knowledge graph.5 npmMIT
- AlicenseBqualityCmaintenanceLightweight MCP server for Jira, Confluence, and Bitbucket — read, create, and update from your AI IDE.20MIT
- AlicenseNot gradedqualityBmaintenanceMCP server for Atlassian Cloud (Confluence & Jira) with seamless OAuth 2.0 authentication. Enables AI agents to document work in Confluence, manage Jira issues, and understand project context.34 PyPI4MIT