issue-scribe-mcp 1.0.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 gay00ung
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,16 +1,79 @@
1
1
  # issue-scribe-mcp
2
2
 
3
- GitHub Issue/PR 컨텍스트를 수집하는 MCP 서버
3
+ [![한국어](https://img.shields.io/badge/lang-한국어-blue.svg)](README.md)
4
+ [![English](https://img.shields.io/badge/lang-English-red.svg)](README_EN.md)
4
5
 
5
- ## 설치
6
+ ![npm version](https://img.shields.io/npm/v/issue-scribe-mcp.svg)
7
+ ![License](https://img.shields.io/badge/license-MIT-green.svg)
8
+ ![GitHub stars](https://img.shields.io/github/stars/gay00ung/issue-scribe-mcp.svg)
9
+
10
+ > GitHub Issue와 Pull Request의 전체 컨텍스트를 수집하고 관리하는 MCP(Model Context Protocol) 서버입니다. Claude Desktop과 같은 AI 어시스턴트에서 GitHub 저장소의 Issue와 PR을 손쉽게 조회하고 생성할 수 있습니다.
11
+
12
+ ## ✨ 주요 기능
13
+
14
+ - 🔍 **컨텍스트 조회**: Issue와 PR의 상세 정보, 댓글, 커밋 내역 등 전체 컨텍스트 수집
15
+ - 📝 **Issue 관리**: 새로운 Issue 생성 및 기존 Issue 업데이트
16
+ - 🔀 **PR 생성**: Pull Request 자동 생성 및 Draft PR 지원
17
+ - 🤖 **AI 통합**: Claude Desktop 등 MCP를 지원하는 AI 도구와 완벽 통합
18
+ - 🔐 **간편 인증**: GitHub Personal Access Token을 통한 안전한 API 접근
19
+
20
+ ## 📋 사전 준비
21
+
22
+ ### GitHub Personal Access Token 발급
23
+
24
+ 1. GitHub에서 [Personal Access Token 생성 페이지](https://github.com/settings/tokens/new)로 이동
25
+ 2. Token 설정:
26
+ - **Note**: `issue-scribe-mcp` (또는 원하는 이름)
27
+ - **Expiration**: 원하는 만료 기간 선택
28
+ - **Select scopes**: 다음 권한 체크
29
+ - ✅ `repo` (전체 저장소 접근)
30
+ - ✅ `read:org` (조직 정보 읽기, 선택사항)
31
+ 3. `Generate token` 클릭
32
+ 4. **생성된 토큰을 안전하게 복사** (다시 볼 수 없습니다!)
33
+
34
+ ### 환경 변수 설정
35
+
36
+ 프로젝트 루트에 `.env` 파일 생성:
37
+
38
+ ```bash
39
+ GITHUB_TOKEN=your_github_personal_access_token_here
40
+ ```
41
+
42
+ ## 🚀 설치
43
+
44
+ ### NPM을 통한 전역 설치
6
45
 
7
46
  ```bash
8
47
  npm install -g issue-scribe-mcp
9
48
  ```
10
49
 
11
- ## 로컬 개발
50
+ ## 🔄 업데이트
51
+
52
+ 최신 버전으로 업데이트하려면:
53
+
54
+ ```bash
55
+ npm update -g issue-scribe-mcp
56
+ ```
57
+
58
+ 또는 특정 버전으로 재설치:
59
+
60
+ ```bash
61
+ npm install -g issue-scribe-mcp@latest
62
+ ```
63
+
64
+ 현재 설치된 버전 확인:
65
+
66
+ ```bash
67
+ npm list -g issue-scribe-mcp
68
+ ```
69
+
70
+ ### 로컬 개발
12
71
 
13
72
  ```bash
73
+ # 저장소 클론
74
+ git clone https://github.com/gay00ung/issue-scribe-mcp.git
75
+ cd issue-scribe-mcp
76
+
14
77
  # 의존성 설치
15
78
  npm install
16
79
 
@@ -18,15 +81,37 @@ npm install
18
81
  npm run build
19
82
 
20
83
  # 환경변수 설정
21
- export GITHUB_TOKEN=your_github_token_here
84
+ cp .env.example .env
85
+ # .env 파일에 GitHub Token 입력
22
86
 
23
87
  # 직접 실행
24
88
  node dist/index.js
25
89
  ```
26
90
 
27
- ## MCP 클라이언트 설정
91
+ ### MCP Inspector로 테스트
92
+
93
+ 로컬에서 MCP 서버를 테스트할 수 있는 간편한 스크립트를 제공합니다:
94
+
95
+ ```bash
96
+ ./test-local.sh
97
+ ```
98
+
99
+ 이 스크립트가 자동으로:
100
+ - ✅ `.env` 파일 로드
101
+ - ✅ `GITHUB_TOKEN` 확인
102
+ - ✅ 빌드 상태 확인
103
+ - ✅ **MCP Inspector 실행** (브라우저 자동 열림)
104
+
105
+ MCP Inspector에서 GUI로 모든 Tool을 테스트하고 API 응답을 확인할 수 있습니다!
28
106
 
29
- Claude Desktop 등의 MCP 클라이언트에서 사용:
107
+ ## ⚙️ MCP 클라이언트 설정
108
+
109
+ ### Claude Desktop 설정
110
+
111
+ Claude Desktop의 설정 파일(`claude_desktop_config.json`)에 다음 내용 추가:
112
+
113
+ **Mac**: `~/Library/Application Support/Claude/claude_desktop_config.json`
114
+ **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
30
115
 
31
116
  ```json
32
117
  {
@@ -42,56 +127,283 @@ Claude Desktop 등의 MCP 클라이언트에서 사용:
42
127
  }
43
128
  ```
44
129
 
45
- ## 제공 Tools
130
+ 설정 Claude Desktop을 재시작하세요.
131
+
132
+ ## 🛠️ 제공 Tools
46
133
 
47
134
  ### github_get_issue_context
48
- GitHub Issue의 전체 컨텍스트 조회
135
+ GitHub Issue의 전체 컨텍스트를 조회합니다.
136
+
137
+ **파라미터:**
138
+ - `owner` (string, 필수): 저장소 소유자
139
+ - `repo` (string, 필수): 저장소 이름
140
+ - `issue_number` (number, 필수): 이슈 번호
49
141
 
50
- - owner: 저장소 소유자
51
- - repo: 저장소 이름
52
- - issue_number: 이슈 번호
142
+ **반환 정보:**
143
+ - Issue 제목, 본문, 상태
144
+ - 작성자 담당자 정보
145
+ - 라벨, 마일스톤
146
+ - 모든 댓글 및 반응
53
147
 
54
148
  ### github_get_pr_context
55
- GitHub Pull Request의 전체 컨텍스트 조회 (커밋 포함)
149
+ GitHub Pull Request의 전체 컨텍스트를 조회합니다 (커밋 포함).
150
+
151
+ **파라미터:**
152
+ - `owner` (string, 필수): 저장소 소유자
153
+ - `repo` (string, 필수): 저장소 이름
154
+ - `pull_number` (number, 필수): PR 번호
56
155
 
57
- - owner: 저장소 소유자
58
- - repo: 저장소 이름
59
- - pull_number: PR 번호
156
+ **반환 정보:**
157
+ - PR 제목, 본문, 상태
158
+ - 소스/타겟 브랜치
159
+ - 커밋 목록 및 변경 파일
160
+ - 리뷰 댓글 및 승인 상태
60
161
 
61
162
  ### github_create_issue
62
- 새로운 GitHub Issue 생성
163
+ 새로운 GitHub Issue 생성합니다.
63
164
 
64
- - owner: 저장소 소유자
65
- - repo: 저장소 이름
66
- - title: 이슈 제목 (필수)
67
- - body: 이슈 본문 (옵션)
68
- - labels: 라벨 배열 (옵션)
69
- - assignees: 담당자 배열 (옵션)
165
+ **파라미터:**
166
+ - `owner` (string, 필수): 저장소 소유자
167
+ - `repo` (string, 필수): 저장소 이름
168
+ - `title` (string, 필수): 이슈 제목
169
+ - `body` (string, 옵션): 이슈 본문
170
+ - `labels` (string[], 옵션): 라벨 배열
171
+ - `assignees` (string[], 옵션): 담당자 배열
70
172
 
71
173
  ### github_update_issue
72
- 기존 GitHub Issue 수정
174
+ 기존 GitHub Issue 수정합니다.
73
175
 
74
- - owner: 저장소 소유자
75
- - repo: 저장소 이름
76
- - issue_number: 이슈 번호
77
- - title: 제목 (옵션)
78
- - body: 새 본문 (옵션)
79
- - state: "open" 또는 "closed" (옵션)
80
- - labels: 라벨 배열 (옵션)
81
- - assignees: 새 담당자 배열 (옵션)
176
+ **파라미터:**
177
+ - `owner` (string, 필수): 저장소 소유자
178
+ - `repo` (string, 필수): 저장소 이름
179
+ - `issue_number` (number, 필수): 이슈 번호
180
+ - `title` (string, 옵션): 새 제목
181
+ - `body` (string, 옵션): 본문
182
+ - `state` (string, 옵션): `"open"` 또는 `"closed"`
183
+ - `labels` (string[], 옵션): 새 라벨 배열
184
+ - `assignees` (string[], 옵션): 새 담당자 배열
82
185
 
83
186
  ### github_create_pr
84
- 새로운 GitHub Pull Request 생성
187
+ 새로운 GitHub Pull Request 생성합니다.
188
+
189
+ **파라미터:**
190
+ - `owner` (string, 필수): 저장소 소유자
191
+ - `repo` (string, 필수): 저장소 이름
192
+ - `title` (string, 필수): PR 제목
193
+ - `body` (string, 옵션): PR 설명
194
+ - `head` (string, 필수): 병합할 브랜치 (예: `"feature-branch"`)
195
+ - `base` (string, 필수): 병합 대상 브랜치 (예: `"main"`)
196
+ - `draft` (boolean, 옵션): Draft PR로 생성 여부
197
+ - `maintainer_can_modify` (boolean, 옵션): 메인테이너 수정 허용 여부
198
+
199
+ ### github_add_comment
200
+ GitHub Issue 또는 Pull Request에 댓글을 추가합니다.
201
+
202
+ **파라미터:**
203
+ - `owner` (string, 필수): 저장소 소유자
204
+ - `repo` (string, 필수): 저장소 이름
205
+ - `issue_number` (number, 필수): Issue 또는 PR 번호
206
+ - `body` (string, 필수): 댓글 내용
207
+
208
+ **반환 정보:**
209
+ - 댓글 ID, 내용, 작성자
210
+ - 댓글 URL 및 생성 시간
211
+
212
+ ### github_update_comment
213
+ 기존 댓글을 수정합니다.
214
+
215
+ **파라미터:**
216
+ - `owner` (string, 필수): 저장소 소유자
217
+ - `repo` (string, 필수): 저장소 이름
218
+ - `comment_id` (number, 필수): 수정할 댓글 ID
219
+ - `body` (string, 필수): 새로운 댓글 내용
220
+
221
+ ### github_delete_comment
222
+ 댓글을 삭제합니다.
223
+
224
+ **파라미터:**
225
+ - `owner` (string, 필수): 저장소 소유자
226
+ - `repo` (string, 필수): 저장소 이름
227
+ - `comment_id` (number, 필수): 삭제할 댓글 ID
228
+
229
+ ### github_add_reaction
230
+ 댓글 또는 Issue/PR에 이모지 반응을 추가합니다.
231
+
232
+ **파라미터:**
233
+ - `owner` (string, 필수): 저장소 소유자
234
+ - `repo` (string, 필수): 저장소 이름
235
+ - `comment_id` (number, 옵션): 반응을 추가할 댓글 ID
236
+ - `issue_number` (number, 옵션): 반응을 추가할 Issue/PR 번호
237
+ - `reaction` (string, 필수): 반응 종류
238
+ - `thumbs_up` 👍, `thumbs_down` 👎, `laugh` 😄, `confused` 😕, `heart` ❤️, `hooray` 🎉, `rocket` 🚀, `eyes` 👀
239
+
240
+ **참고**: `comment_id` 또는 `issue_number` 중 하나를 반드시 제공해야 합니다.
241
+
242
+ ### github_create_label
243
+ 저장소에 새로운 라벨을 생성합니다.
244
+
245
+ **파라미터:**
246
+ - `owner` (string, 필수): 저장소 소유자
247
+ - `repo` (string, 필수): 저장소 이름
248
+ - `name` (string, 필수): 라벨 이름
249
+ - `color` (string, 필수): 16진수 색상 코드 ('#' 제외, 예: 'FF0000')
250
+ - `description` (string, 옵션): 라벨 설명
251
+
252
+ **반환 정보:**
253
+ - 라벨 이름, 색상, 설명
254
+ - 라벨 URL
255
+
256
+ ### github_update_label
257
+ 기존 라벨의 이름, 색상, 설명을 수정합니다.
258
+
259
+ **파라미터:**
260
+ - `owner` (string, 필수): 저장소 소유자
261
+ - `repo` (string, 필수): 저장소 이름
262
+ - `name` (string, 필수): 수정할 라벨의 현재 이름
263
+ - `new_name` (string, 옵션): 새로운 라벨 이름
264
+ - `color` (string, 옵션): 새로운 16진수 색상 코드 ('#' 제외)
265
+ - `description` (string, 옵션): 새로운 설명
266
+
267
+ ### github_delete_label
268
+ 저장소에서 라벨을 삭제합니다.
269
+
270
+ **파라미터:**
271
+ - `owner` (string, 필수): 저장소 소유자
272
+ - `repo` (string, 필수): 저장소 이름
273
+ - `name` (string, 필수): 삭제할 라벨 이름
274
+
275
+ ### github_list_labels
276
+ 저장소의 모든 라벨 목록을 조회합니다.
277
+
278
+ **파라미터:**
279
+ - `owner` (string, 필수): 저장소 소유자
280
+ - `repo` (string, 필수): 저장소 이름
281
+ - `per_page` (number, 옵션): 페이지당 결과 수, 최대 100 (기본값: 30)
282
+
283
+ **반환 정보:**
284
+ - 라벨 개수
285
+ - 각 라벨의 이름, 색상, 설명, URL
286
+
287
+ ### github_list_branches
288
+ 저장소의 모든 브랜치 목록을 조회합니다.
289
+
290
+ **파라미터:**
291
+ - `owner` (string, 필수): 저장소 소유자
292
+ - `repo` (string, 필수): 저장소 이름
293
+ - `protected` (boolean, 옵션): 보호된 브랜치만 필터링
294
+ - `per_page` (number, 옵션): 페이지당 결과 수, 최대 100 (기본값: 30)
295
+
296
+ **반환 정보:**
297
+ - 브랜치 개수
298
+ - 각 브랜치의 이름, 커밋 SHA, 보호 상태
299
+
300
+ ### github_create_branch
301
+ 기존 브랜치 또는 커밋에서 새로운 브랜치를 생성합니다.
302
+
303
+ **파라미터:**
304
+ - `owner` (string, 필수): 저장소 소유자
305
+ - `repo` (string, 필수): 저장소 이름
306
+ - `branch` (string, 필수): 새 브랜치 이름
307
+ - `ref` (string, 필수): 소스 브랜치 이름 또는 커밋 SHA (예: 'main' 또는 'abc123')
308
+
309
+ **반환 정보:**
310
+ - 브랜치 이름, ref, SHA
311
+ - 브랜치 URL
312
+
313
+ ### github_delete_branch
314
+ 저장소에서 브랜치를 삭제합니다.
315
+
316
+ **파라미터:**
317
+ - `owner` (string, 필수): 저장소 소유자
318
+ - `repo` (string, 필수): 저장소 이름
319
+ - `branch` (string, 필수): 삭제할 브랜치 이름
320
+
321
+ ### github_compare_branches
322
+ 두 브랜치 간의 차이를 비교합니다.
323
+
324
+ **파라미터:**
325
+ - `owner` (string, 필수): 저장소 소유자
326
+ - `repo` (string, 필수): 저장소 이름
327
+ - `base` (string, 필수): 기준 브랜치 이름
328
+ - `head` (string, 필수): 비교할 브랜치 이름
329
+
330
+ **반환 정보:**
331
+ - 비교 상태 (ahead/behind)
332
+ - 커밋 차이 개수
333
+ - 변경된 파일 목록 (추가/삭제/변경 라인 수)
334
+ - 커밋 목록
335
+
336
+ ## 💡 사용 예시
337
+
338
+ ### Claude Desktop에서 사용하기
339
+
340
+ 설정이 완료되면 Claude Desktop에서 다음과 같이 사용할 수 있습니다:
341
+
342
+ ```
343
+ "gay00ung/issue-scribe-mcp 저장소의 5번 Issue를 확인해줘"
344
+
345
+ "issue-scribe-mcp에 새로운 Issue를 만들어줘.
346
+ 제목은 'README 개선' 이고 본문은 'Features 섹션 추가 필요'"
347
+
348
+ "PR #3의 커밋 내역을 보여줘"
349
+ ```
350
+
351
+ Claude가 자동으로 적절한 MCP Tool을 호출하여 정보를 가져옵니다!
352
+
353
+ ## 🔧 문제 해결
354
+
355
+ ### "GITHUB_TOKEN is not set" 오류
356
+
357
+ **원인**: GitHub Personal Access Token이 환경 변수로 설정되지 않았습니다.
358
+
359
+ **해결**:
360
+ 1. `.env` 파일이 프로젝트 루트에 있는지 확인
361
+ 2. `.env` 파일에 `GITHUB_TOKEN=your_token` 형식으로 작성되어 있는지 확인
362
+ 3. Token이 유효한지 [GitHub Settings](https://github.com/settings/tokens)에서 확인
363
+
364
+ ### "Bad credentials" 오류
365
+
366
+ **원인**: GitHub Token이 만료되었거나 잘못되었습니다.
367
+
368
+ **해결**:
369
+ 1. GitHub에서 새 Personal Access Token 발급
370
+ 2. `.env` 파일의 토큰을 업데이트
371
+ 3. 필요한 권한(`repo` scope)이 부여되었는지 확인
372
+
373
+ ### MCP 서버가 Claude Desktop에서 인식되지 않음
374
+
375
+ **원인**: 설정 파일 경로가 잘못되었거나 JSON 형식 오류가 있습니다.
376
+
377
+ **해결**:
378
+ 1. `claude_desktop_config.json` 파일 위치 확인
379
+ 2. JSON 형식이 올바른지 검증 ([JSONLint](https://jsonlint.com/) 사용)
380
+ 3. 파일 경로가 절대 경로로 정확히 입력되었는지 확인
381
+ 4. Claude Desktop 재시작
382
+
383
+ ### "Cannot find module" 오류
384
+
385
+ **원인**: 의존성이 설치되지 않았거나 빌드가 되지 않았습니다.
386
+
387
+ **해결**:
388
+ ```bash
389
+ npm install
390
+ npm run build
391
+ ```
392
+
393
+ ## 📝 라이선스
394
+
395
+ MIT License
396
+
397
+ ## 🤝 기여
398
+
399
+ 이슈 리포트와 Pull Request를 환영합니다!
85
400
 
86
- - owner: 저장소 소유자
87
- - repo: 저장소 이름
88
- - title: PR 제목 (필수)
89
- - body: PR 설명 (옵션)
90
- - head: 병합할 브랜치 (필수, 예: "feature-branch")
91
- - base: 병합 대상 브랜치 (필수, 예: "main")
92
- - draft: Draft PR로 생성 (옵션)
93
- - maintainer_can_modify: 메인테이너 수정 허용 (옵션)
401
+ 1. Fork the Project
402
+ 2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)
403
+ 3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)
404
+ 4. Push to the Branch (`git push origin feature/AmazingFeature`)
405
+ 5. Open a Pull Request
94
406
 
95
- ## 라이선스
407
+ ## 📮 문의
96
408
 
97
- ISC
409
+ 프로젝트 링크: [https://github.com/gay00ung/issue-scribe-mcp](https://github.com/gay00ung/issue-scribe-mcp)