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 +21 -0
- package/README.md +354 -42
- package/README_EN.md +411 -0
- package/dist/index.js +1293 -0
- package/package.json +1 -1
- package/src/index.ts +1428 -0
- package/test-local.sh +63 -0
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
|
-
|
|
3
|
+
[](README.md)
|
|
4
|
+
[](README_EN.md)
|
|
4
5
|
|
|
5
|
-
|
|
6
|
+

|
|
7
|
+

|
|
8
|
+

|
|
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
|
-
|
|
84
|
+
cp .env.example .env
|
|
85
|
+
# .env 파일에 GitHub Token 입력
|
|
22
86
|
|
|
23
87
|
# 직접 실행
|
|
24
88
|
node dist/index.js
|
|
25
89
|
```
|
|
26
90
|
|
|
27
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
51
|
-
-
|
|
52
|
-
-
|
|
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
|
-
|
|
58
|
-
-
|
|
59
|
-
-
|
|
156
|
+
**반환 정보:**
|
|
157
|
+
- PR 제목, 본문, 상태
|
|
158
|
+
- 소스/타겟 브랜치
|
|
159
|
+
- 커밋 목록 및 변경 파일
|
|
160
|
+
- 리뷰 댓글 및 승인 상태
|
|
60
161
|
|
|
61
162
|
### github_create_issue
|
|
62
|
-
새로운 GitHub Issue
|
|
163
|
+
새로운 GitHub Issue를 생성합니다.
|
|
63
164
|
|
|
64
|
-
|
|
65
|
-
-
|
|
66
|
-
-
|
|
67
|
-
-
|
|
68
|
-
-
|
|
69
|
-
-
|
|
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
|
-
|
|
75
|
-
-
|
|
76
|
-
-
|
|
77
|
-
-
|
|
78
|
-
-
|
|
79
|
-
-
|
|
80
|
-
-
|
|
81
|
-
-
|
|
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
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
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
|
-
|
|
409
|
+
프로젝트 링크: [https://github.com/gay00ung/issue-scribe-mcp](https://github.com/gay00ung/issue-scribe-mcp)
|