issue-scribe-mcp 1.0.0 → 1.1.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 +240 -42
- package/README_EN.md +297 -0
- package/dist/index.js +738 -0
- package/package.json +1 -1
- package/src/index.ts +817 -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,59 @@
|
|
|
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
|
+
### 로컬 개발
|
|
12
51
|
|
|
13
52
|
```bash
|
|
53
|
+
# 저장소 클론
|
|
54
|
+
git clone https://github.com/gay00ung/issue-scribe-mcp.git
|
|
55
|
+
cd issue-scribe-mcp
|
|
56
|
+
|
|
14
57
|
# 의존성 설치
|
|
15
58
|
npm install
|
|
16
59
|
|
|
@@ -18,15 +61,37 @@ npm install
|
|
|
18
61
|
npm run build
|
|
19
62
|
|
|
20
63
|
# 환경변수 설정
|
|
21
|
-
|
|
64
|
+
cp .env.example .env
|
|
65
|
+
# .env 파일에 GitHub Token 입력
|
|
22
66
|
|
|
23
67
|
# 직접 실행
|
|
24
68
|
node dist/index.js
|
|
25
69
|
```
|
|
26
70
|
|
|
27
|
-
|
|
71
|
+
### MCP Inspector로 테스트
|
|
72
|
+
|
|
73
|
+
로컬에서 MCP 서버를 테스트할 수 있는 간편한 스크립트를 제공합니다:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
./test-local.sh
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
이 스크립트가 자동으로:
|
|
80
|
+
- ✅ `.env` 파일 로드
|
|
81
|
+
- ✅ `GITHUB_TOKEN` 확인
|
|
82
|
+
- ✅ 빌드 상태 확인
|
|
83
|
+
- ✅ **MCP Inspector 실행** (브라우저 자동 열림)
|
|
84
|
+
|
|
85
|
+
MCP Inspector에서 GUI로 모든 Tool을 테스트하고 API 응답을 확인할 수 있습니다!
|
|
86
|
+
|
|
87
|
+
## ⚙️ MCP 클라이언트 설정
|
|
88
|
+
|
|
89
|
+
### Claude Desktop 설정
|
|
28
90
|
|
|
29
|
-
Claude Desktop
|
|
91
|
+
Claude Desktop의 설정 파일(`claude_desktop_config.json`)에 다음 내용 추가:
|
|
92
|
+
|
|
93
|
+
**Mac**: `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
94
|
+
**Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
|
|
30
95
|
|
|
31
96
|
```json
|
|
32
97
|
{
|
|
@@ -42,56 +107,189 @@ Claude Desktop 등의 MCP 클라이언트에서 사용:
|
|
|
42
107
|
}
|
|
43
108
|
```
|
|
44
109
|
|
|
45
|
-
|
|
110
|
+
설정 후 Claude Desktop을 재시작하세요.
|
|
111
|
+
|
|
112
|
+
## 🛠️ 제공 Tools
|
|
46
113
|
|
|
47
114
|
### github_get_issue_context
|
|
48
|
-
GitHub Issue의 전체
|
|
115
|
+
GitHub Issue의 전체 컨텍스트를 조회합니다.
|
|
49
116
|
|
|
50
|
-
|
|
51
|
-
-
|
|
52
|
-
-
|
|
117
|
+
**파라미터:**
|
|
118
|
+
- `owner` (string, 필수): 저장소 소유자
|
|
119
|
+
- `repo` (string, 필수): 저장소 이름
|
|
120
|
+
- `issue_number` (number, 필수): 이슈 번호
|
|
121
|
+
|
|
122
|
+
**반환 정보:**
|
|
123
|
+
- Issue 제목, 본문, 상태
|
|
124
|
+
- 작성자 및 담당자 정보
|
|
125
|
+
- 라벨, 마일스톤
|
|
126
|
+
- 모든 댓글 및 반응
|
|
53
127
|
|
|
54
128
|
### github_get_pr_context
|
|
55
|
-
GitHub Pull Request의 전체
|
|
129
|
+
GitHub Pull Request의 전체 컨텍스트를 조회합니다 (커밋 포함).
|
|
130
|
+
|
|
131
|
+
**파라미터:**
|
|
132
|
+
- `owner` (string, 필수): 저장소 소유자
|
|
133
|
+
- `repo` (string, 필수): 저장소 이름
|
|
134
|
+
- `pull_number` (number, 필수): PR 번호
|
|
56
135
|
|
|
57
|
-
|
|
58
|
-
-
|
|
59
|
-
-
|
|
136
|
+
**반환 정보:**
|
|
137
|
+
- PR 제목, 본문, 상태
|
|
138
|
+
- 소스/타겟 브랜치
|
|
139
|
+
- 커밋 목록 및 변경 파일
|
|
140
|
+
- 리뷰 댓글 및 승인 상태
|
|
60
141
|
|
|
61
142
|
### github_create_issue
|
|
62
|
-
새로운 GitHub Issue
|
|
143
|
+
새로운 GitHub Issue를 생성합니다.
|
|
63
144
|
|
|
64
|
-
|
|
65
|
-
-
|
|
66
|
-
-
|
|
67
|
-
-
|
|
68
|
-
-
|
|
69
|
-
-
|
|
145
|
+
**파라미터:**
|
|
146
|
+
- `owner` (string, 필수): 저장소 소유자
|
|
147
|
+
- `repo` (string, 필수): 저장소 이름
|
|
148
|
+
- `title` (string, 필수): 이슈 제목
|
|
149
|
+
- `body` (string, 옵션): 이슈 본문
|
|
150
|
+
- `labels` (string[], 옵션): 라벨 배열
|
|
151
|
+
- `assignees` (string[], 옵션): 담당자 배열
|
|
70
152
|
|
|
71
153
|
### github_update_issue
|
|
72
|
-
기존 GitHub Issue
|
|
154
|
+
기존 GitHub Issue를 수정합니다.
|
|
73
155
|
|
|
74
|
-
|
|
75
|
-
-
|
|
76
|
-
-
|
|
77
|
-
-
|
|
78
|
-
-
|
|
79
|
-
-
|
|
80
|
-
-
|
|
81
|
-
-
|
|
156
|
+
**파라미터:**
|
|
157
|
+
- `owner` (string, 필수): 저장소 소유자
|
|
158
|
+
- `repo` (string, 필수): 저장소 이름
|
|
159
|
+
- `issue_number` (number, 필수): 이슈 번호
|
|
160
|
+
- `title` (string, 옵션): 새 제목
|
|
161
|
+
- `body` (string, 옵션): 새 본문
|
|
162
|
+
- `state` (string, 옵션): `"open"` 또는 `"closed"`
|
|
163
|
+
- `labels` (string[], 옵션): 새 라벨 배열
|
|
164
|
+
- `assignees` (string[], 옵션): 새 담당자 배열
|
|
82
165
|
|
|
83
166
|
### github_create_pr
|
|
84
|
-
새로운 GitHub Pull Request
|
|
167
|
+
새로운 GitHub Pull Request를 생성합니다.
|
|
168
|
+
|
|
169
|
+
**파라미터:**
|
|
170
|
+
- `owner` (string, 필수): 저장소 소유자
|
|
171
|
+
- `repo` (string, 필수): 저장소 이름
|
|
172
|
+
- `title` (string, 필수): PR 제목
|
|
173
|
+
- `body` (string, 옵션): PR 설명
|
|
174
|
+
- `head` (string, 필수): 병합할 브랜치 (예: `"feature-branch"`)
|
|
175
|
+
- `base` (string, 필수): 병합 대상 브랜치 (예: `"main"`)
|
|
176
|
+
- `draft` (boolean, 옵션): Draft PR로 생성 여부
|
|
177
|
+
- `maintainer_can_modify` (boolean, 옵션): 메인테이너 수정 허용 여부
|
|
178
|
+
|
|
179
|
+
### github_add_comment
|
|
180
|
+
GitHub Issue 또는 Pull Request에 댓글을 추가합니다.
|
|
181
|
+
|
|
182
|
+
**파라미터:**
|
|
183
|
+
- `owner` (string, 필수): 저장소 소유자
|
|
184
|
+
- `repo` (string, 필수): 저장소 이름
|
|
185
|
+
- `issue_number` (number, 필수): Issue 또는 PR 번호
|
|
186
|
+
- `body` (string, 필수): 댓글 내용
|
|
187
|
+
|
|
188
|
+
**반환 정보:**
|
|
189
|
+
- 댓글 ID, 내용, 작성자
|
|
190
|
+
- 댓글 URL 및 생성 시간
|
|
191
|
+
|
|
192
|
+
### github_update_comment
|
|
193
|
+
기존 댓글을 수정합니다.
|
|
194
|
+
|
|
195
|
+
**파라미터:**
|
|
196
|
+
- `owner` (string, 필수): 저장소 소유자
|
|
197
|
+
- `repo` (string, 필수): 저장소 이름
|
|
198
|
+
- `comment_id` (number, 필수): 수정할 댓글 ID
|
|
199
|
+
- `body` (string, 필수): 새로운 댓글 내용
|
|
200
|
+
|
|
201
|
+
### github_delete_comment
|
|
202
|
+
댓글을 삭제합니다.
|
|
203
|
+
|
|
204
|
+
**파라미터:**
|
|
205
|
+
- `owner` (string, 필수): 저장소 소유자
|
|
206
|
+
- `repo` (string, 필수): 저장소 이름
|
|
207
|
+
- `comment_id` (number, 필수): 삭제할 댓글 ID
|
|
208
|
+
|
|
209
|
+
### github_add_reaction
|
|
210
|
+
댓글 또는 Issue/PR에 이모지 반응을 추가합니다.
|
|
211
|
+
|
|
212
|
+
**파라미터:**
|
|
213
|
+
- `owner` (string, 필수): 저장소 소유자
|
|
214
|
+
- `repo` (string, 필수): 저장소 이름
|
|
215
|
+
- `comment_id` (number, 옵션): 반응을 추가할 댓글 ID
|
|
216
|
+
- `issue_number` (number, 옵션): 반응을 추가할 Issue/PR 번호
|
|
217
|
+
- `reaction` (string, 필수): 반응 종류
|
|
218
|
+
- `thumbs_up` 👍, `thumbs_down` 👎, `laugh` 😄, `confused` 😕, `heart` ❤️, `hooray` 🎉, `rocket` 🚀, `eyes` 👀
|
|
219
|
+
|
|
220
|
+
**참고**: `comment_id` 또는 `issue_number` 중 하나를 반드시 제공해야 합니다.
|
|
221
|
+
|
|
222
|
+
## 💡 사용 예시
|
|
223
|
+
|
|
224
|
+
### Claude Desktop에서 사용하기
|
|
225
|
+
|
|
226
|
+
설정이 완료되면 Claude Desktop에서 다음과 같이 사용할 수 있습니다:
|
|
227
|
+
|
|
228
|
+
```
|
|
229
|
+
"gay00ung/issue-scribe-mcp 저장소의 5번 Issue를 확인해줘"
|
|
230
|
+
|
|
231
|
+
"issue-scribe-mcp에 새로운 Issue를 만들어줘.
|
|
232
|
+
제목은 'README 개선' 이고 본문은 'Features 섹션 추가 필요'"
|
|
233
|
+
|
|
234
|
+
"PR #3의 커밋 내역을 보여줘"
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
Claude가 자동으로 적절한 MCP Tool을 호출하여 정보를 가져옵니다!
|
|
238
|
+
|
|
239
|
+
## 🔧 문제 해결
|
|
240
|
+
|
|
241
|
+
### "GITHUB_TOKEN is not set" 오류
|
|
242
|
+
|
|
243
|
+
**원인**: GitHub Personal Access Token이 환경 변수로 설정되지 않았습니다.
|
|
244
|
+
|
|
245
|
+
**해결**:
|
|
246
|
+
1. `.env` 파일이 프로젝트 루트에 있는지 확인
|
|
247
|
+
2. `.env` 파일에 `GITHUB_TOKEN=your_token` 형식으로 작성되어 있는지 확인
|
|
248
|
+
3. Token이 유효한지 [GitHub Settings](https://github.com/settings/tokens)에서 확인
|
|
249
|
+
|
|
250
|
+
### "Bad credentials" 오류
|
|
251
|
+
|
|
252
|
+
**원인**: GitHub Token이 만료되었거나 잘못되었습니다.
|
|
253
|
+
|
|
254
|
+
**해결**:
|
|
255
|
+
1. GitHub에서 새 Personal Access Token 발급
|
|
256
|
+
2. `.env` 파일의 토큰을 업데이트
|
|
257
|
+
3. 필요한 권한(`repo` scope)이 부여되었는지 확인
|
|
258
|
+
|
|
259
|
+
### MCP 서버가 Claude Desktop에서 인식되지 않음
|
|
260
|
+
|
|
261
|
+
**원인**: 설정 파일 경로가 잘못되었거나 JSON 형식 오류가 있습니다.
|
|
262
|
+
|
|
263
|
+
**해결**:
|
|
264
|
+
1. `claude_desktop_config.json` 파일 위치 확인
|
|
265
|
+
2. JSON 형식이 올바른지 검증 ([JSONLint](https://jsonlint.com/) 사용)
|
|
266
|
+
3. 파일 경로가 절대 경로로 정확히 입력되었는지 확인
|
|
267
|
+
4. Claude Desktop 재시작
|
|
268
|
+
|
|
269
|
+
### "Cannot find module" 오류
|
|
270
|
+
|
|
271
|
+
**원인**: 의존성이 설치되지 않았거나 빌드가 되지 않았습니다.
|
|
272
|
+
|
|
273
|
+
**해결**:
|
|
274
|
+
```bash
|
|
275
|
+
npm install
|
|
276
|
+
npm run build
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
## 📝 라이선스
|
|
280
|
+
|
|
281
|
+
MIT License
|
|
282
|
+
|
|
283
|
+
## 🤝 기여
|
|
284
|
+
|
|
285
|
+
이슈 리포트와 Pull Request를 환영합니다!
|
|
85
286
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
- base: 병합 대상 브랜치 (필수, 예: "main")
|
|
92
|
-
- draft: Draft PR로 생성 (옵션)
|
|
93
|
-
- maintainer_can_modify: 메인테이너 수정 허용 (옵션)
|
|
287
|
+
1. Fork the Project
|
|
288
|
+
2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)
|
|
289
|
+
3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)
|
|
290
|
+
4. Push to the Branch (`git push origin feature/AmazingFeature`)
|
|
291
|
+
5. Open a Pull Request
|
|
94
292
|
|
|
95
|
-
##
|
|
293
|
+
## 📮 문의
|
|
96
294
|
|
|
97
|
-
|
|
295
|
+
프로젝트 링크: [https://github.com/gay00ung/issue-scribe-mcp](https://github.com/gay00ung/issue-scribe-mcp)
|
package/README_EN.md
ADDED
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
# issue-scribe-mcp
|
|
2
|
+
|
|
3
|
+
[](README.md)
|
|
4
|
+
[](README_EN.md)
|
|
5
|
+
|
|
6
|
+

|
|
7
|
+

|
|
8
|
+

|
|
9
|
+
|
|
10
|
+
> An MCP (Model Context Protocol) server for collecting and managing GitHub Issue and Pull Request contexts. Easily query and create Issues and PRs from AI assistants like Claude Desktop.
|
|
11
|
+
|
|
12
|
+
## ✨ Features
|
|
13
|
+
|
|
14
|
+
- 🔍 **Context Retrieval**: Collect complete context including issue/PR details, comments, and commit history
|
|
15
|
+
- 📝 **Issue Management**: Create new issues and update existing ones
|
|
16
|
+
- 🔀 **PR Creation**: Automatically create Pull Requests with Draft PR support
|
|
17
|
+
- 🤖 **AI Integration**: Seamless integration with MCP-compatible AI tools like Claude Desktop
|
|
18
|
+
- 🔐 **Simple Authentication**: Secure API access via GitHub Personal Access Token
|
|
19
|
+
|
|
20
|
+
## 📋 Prerequisites
|
|
21
|
+
|
|
22
|
+
### GitHub Personal Access Token Setup
|
|
23
|
+
|
|
24
|
+
1. Navigate to [GitHub Personal Access Token creation page](https://github.com/settings/tokens/new)
|
|
25
|
+
2. Configure token settings:
|
|
26
|
+
- **Note**: `issue-scribe-mcp` (or your preferred name)
|
|
27
|
+
- **Expiration**: Select desired expiration period
|
|
28
|
+
- **Select scopes**: Check the following permissions
|
|
29
|
+
- ✅ `repo` (Full repository access)
|
|
30
|
+
- ✅ `read:org` (Read organization info, optional)
|
|
31
|
+
3. Click `Generate token`
|
|
32
|
+
4. **Safely copy the generated token** (you won't be able to see it again!)
|
|
33
|
+
|
|
34
|
+
### Environment Variable Setup
|
|
35
|
+
|
|
36
|
+
Create a `.env` file in the project root:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
GITHUB_TOKEN=your_github_personal_access_token_here
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## 🚀 Installation
|
|
43
|
+
|
|
44
|
+
### Global Installation via NPM
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
npm install -g issue-scribe-mcp
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Local Development
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
# Clone repository
|
|
54
|
+
git clone https://github.com/gay00ung/issue-scribe-mcp.git
|
|
55
|
+
cd issue-scribe-mcp
|
|
56
|
+
|
|
57
|
+
# Install dependencies
|
|
58
|
+
npm install
|
|
59
|
+
|
|
60
|
+
# Build
|
|
61
|
+
npm run build
|
|
62
|
+
|
|
63
|
+
# Set up environment variables
|
|
64
|
+
cp .env.example .env
|
|
65
|
+
# Add your GitHub Token to .env file
|
|
66
|
+
|
|
67
|
+
# Run directly
|
|
68
|
+
node dist/index.js
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Test with MCP Inspector
|
|
72
|
+
|
|
73
|
+
We provide a convenient script to test the MCP server locally:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
./test-local.sh
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
This script automatically:
|
|
80
|
+
- ✅ Loads `.env` file
|
|
81
|
+
- ✅ Verifies `GITHUB_TOKEN`
|
|
82
|
+
- ✅ Checks build status
|
|
83
|
+
- ✅ **Launches MCP Inspector** (opens browser automatically)
|
|
84
|
+
|
|
85
|
+
You can test all Tools with a GUI and inspect API responses in MCP Inspector!
|
|
86
|
+
|
|
87
|
+
## ⚙️ MCP Client Configuration
|
|
88
|
+
|
|
89
|
+
### Claude Desktop Setup
|
|
90
|
+
|
|
91
|
+
Add the following to Claude Desktop's configuration file (`claude_desktop_config.json`):
|
|
92
|
+
|
|
93
|
+
**Mac**: `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
94
|
+
**Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
|
|
95
|
+
|
|
96
|
+
```json
|
|
97
|
+
{
|
|
98
|
+
"mcpServers": {
|
|
99
|
+
"issue-scribe": {
|
|
100
|
+
"command": "node",
|
|
101
|
+
"args": ["/path/to/issue-scribe-mcp/dist/index.js"],
|
|
102
|
+
"env": {
|
|
103
|
+
"GITHUB_TOKEN": "your_github_token_here"
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Restart Claude Desktop after configuration.
|
|
111
|
+
|
|
112
|
+
## 🛠️ Available Tools
|
|
113
|
+
|
|
114
|
+
### github_get_issue_context
|
|
115
|
+
Retrieve full context of a GitHub Issue.
|
|
116
|
+
|
|
117
|
+
**Parameters:**
|
|
118
|
+
- `owner` (string, required): Repository owner
|
|
119
|
+
- `repo` (string, required): Repository name
|
|
120
|
+
- `issue_number` (number, required): Issue number
|
|
121
|
+
|
|
122
|
+
**Returns:**
|
|
123
|
+
- Issue title, body, state
|
|
124
|
+
- Author and assignee information
|
|
125
|
+
- Labels, milestones
|
|
126
|
+
- All comments and reactions
|
|
127
|
+
|
|
128
|
+
### github_get_pr_context
|
|
129
|
+
Retrieve full context of a GitHub Pull Request (including commits).
|
|
130
|
+
|
|
131
|
+
**Parameters:**
|
|
132
|
+
- `owner` (string, required): Repository owner
|
|
133
|
+
- `repo` (string, required): Repository name
|
|
134
|
+
- `pull_number` (number, required): PR number
|
|
135
|
+
|
|
136
|
+
**Returns:**
|
|
137
|
+
- PR title, body, state
|
|
138
|
+
- Source/target branches
|
|
139
|
+
- Commit list and changed files
|
|
140
|
+
- Review comments and approval status
|
|
141
|
+
|
|
142
|
+
### github_create_issue
|
|
143
|
+
Create a new GitHub Issue.
|
|
144
|
+
|
|
145
|
+
**Parameters:**
|
|
146
|
+
- `owner` (string, required): Repository owner
|
|
147
|
+
- `repo` (string, required): Repository name
|
|
148
|
+
- `title` (string, required): Issue title
|
|
149
|
+
- `body` (string, optional): Issue body
|
|
150
|
+
- `labels` (string[], optional): Array of labels
|
|
151
|
+
- `assignees` (string[], optional): Array of assignees
|
|
152
|
+
|
|
153
|
+
### github_update_issue
|
|
154
|
+
Update an existing GitHub Issue.
|
|
155
|
+
|
|
156
|
+
**Parameters:**
|
|
157
|
+
- `owner` (string, required): Repository owner
|
|
158
|
+
- `repo` (string, required): Repository name
|
|
159
|
+
- `issue_number` (number, required): Issue number
|
|
160
|
+
- `title` (string, optional): New title
|
|
161
|
+
- `body` (string, optional): New body
|
|
162
|
+
- `state` (string, optional): `"open"` or `"closed"`
|
|
163
|
+
- `labels` (string[], optional): New labels array
|
|
164
|
+
- `assignees` (string[], optional): New assignees array
|
|
165
|
+
|
|
166
|
+
### github_create_pr
|
|
167
|
+
Create a new GitHub Pull Request.
|
|
168
|
+
|
|
169
|
+
**Parameters:**
|
|
170
|
+
- `owner` (string, required): Repository owner
|
|
171
|
+
- `repo` (string, required): Repository name
|
|
172
|
+
- `title` (string, required): PR title
|
|
173
|
+
- `body` (string, optional): PR description
|
|
174
|
+
- `head` (string, required): Branch to merge from (e.g., `"feature-branch"`)
|
|
175
|
+
- `base` (string, required): Branch to merge into (e.g., `"main"`)
|
|
176
|
+
- `draft` (boolean, optional): Create as draft PR
|
|
177
|
+
- `maintainer_can_modify` (boolean, optional): Allow maintainer modifications
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
### github_add_comment
|
|
182
|
+
Add a comment to a GitHub Issue or Pull Request.
|
|
183
|
+
|
|
184
|
+
**Parameters:**
|
|
185
|
+
- `owner` (string, required): Repository owner
|
|
186
|
+
- `repo` (string, required): Repository name
|
|
187
|
+
- `issue_number` (number, required): Issue or PR number
|
|
188
|
+
- `body` (string, required): Comment body text
|
|
189
|
+
|
|
190
|
+
**Returns:**
|
|
191
|
+
- Comment ID, body, author
|
|
192
|
+
- Comment URL and creation time
|
|
193
|
+
|
|
194
|
+
### github_update_comment
|
|
195
|
+
Update an existing comment.
|
|
196
|
+
|
|
197
|
+
**Parameters:**
|
|
198
|
+
- `owner` (string, required): Repository owner
|
|
199
|
+
- `repo` (string, required): Repository name
|
|
200
|
+
- `comment_id` (number, required): Comment ID to update
|
|
201
|
+
- `body` (string, required): New comment body text
|
|
202
|
+
|
|
203
|
+
### github_delete_comment
|
|
204
|
+
Delete a comment.
|
|
205
|
+
|
|
206
|
+
**Parameters:**
|
|
207
|
+
- `owner` (string, required): Repository owner
|
|
208
|
+
- `repo` (string, required): Repository name
|
|
209
|
+
- `comment_id` (number, required): Comment ID to delete
|
|
210
|
+
|
|
211
|
+
### github_add_reaction
|
|
212
|
+
Add an emoji reaction to a comment or directly to an issue/PR.
|
|
213
|
+
|
|
214
|
+
**Parameters:**
|
|
215
|
+
- `owner` (string, required): Repository owner
|
|
216
|
+
- `repo` (string, required): Repository name
|
|
217
|
+
- `comment_id` (number, optional): Comment ID to react to
|
|
218
|
+
- `issue_number` (number, optional): Issue/PR number to react to
|
|
219
|
+
- `reaction` (string, required): Reaction type
|
|
220
|
+
- `thumbs_up` 👍, `thumbs_down` 👎, `laugh` 😄, `confused` 😕, `heart` ❤️, `hooray` 🎉, `rocket` 🚀, `eyes` 👀
|
|
221
|
+
|
|
222
|
+
**Note**: Either `comment_id` OR `issue_number` must be provided.
|
|
223
|
+
|
|
224
|
+
## 💡 Usage Examples
|
|
225
|
+
|
|
226
|
+
### Using with Claude Desktop
|
|
227
|
+
|
|
228
|
+
Once configured, you can use it in Claude Desktop like this:
|
|
229
|
+
|
|
230
|
+
```
|
|
231
|
+
"Check issue #5 in the gay00ung/issue-scribe-mcp repository"
|
|
232
|
+
|
|
233
|
+
"Create a new issue in issue-scribe-mcp.
|
|
234
|
+
Title is 'Improve README' and body is 'Need to add Features section'"
|
|
235
|
+
|
|
236
|
+
"Show me the commit history of PR #3"
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
Claude will automatically call the appropriate MCP tools to fetch the information!
|
|
240
|
+
|
|
241
|
+
## 🔧 Troubleshooting
|
|
242
|
+
|
|
243
|
+
### "GITHUB_TOKEN is not set" Error
|
|
244
|
+
|
|
245
|
+
**Cause**: GitHub Personal Access Token is not set as an environment variable.
|
|
246
|
+
|
|
247
|
+
**Solution**:
|
|
248
|
+
1. Check if `.env` file exists in project root
|
|
249
|
+
2. Verify `.env` file is formatted as `GITHUB_TOKEN=your_token`
|
|
250
|
+
3. Confirm token is valid in [GitHub Settings](https://github.com/settings/tokens)
|
|
251
|
+
|
|
252
|
+
### "Bad credentials" Error
|
|
253
|
+
|
|
254
|
+
**Cause**: GitHub Token is expired or invalid.
|
|
255
|
+
|
|
256
|
+
**Solution**:
|
|
257
|
+
1. Generate a new Personal Access Token from GitHub
|
|
258
|
+
2. Update the token in `.env` file
|
|
259
|
+
3. Verify required permissions (`repo` scope) are granted
|
|
260
|
+
|
|
261
|
+
### MCP Server Not Recognized in Claude Desktop
|
|
262
|
+
|
|
263
|
+
**Cause**: Configuration file path is incorrect or JSON format error.
|
|
264
|
+
|
|
265
|
+
**Solution**:
|
|
266
|
+
1. Verify `claude_desktop_config.json` file location
|
|
267
|
+
2. Validate JSON format using [JSONLint](https://jsonlint.com/)
|
|
268
|
+
3. Ensure file paths are absolute and correct
|
|
269
|
+
4. Restart Claude Desktop
|
|
270
|
+
|
|
271
|
+
### "Cannot find module" Error
|
|
272
|
+
|
|
273
|
+
**Cause**: Dependencies are not installed or build has not been run.
|
|
274
|
+
|
|
275
|
+
**Solution**:
|
|
276
|
+
```bash
|
|
277
|
+
npm install
|
|
278
|
+
npm run build
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
## 📝 License
|
|
282
|
+
|
|
283
|
+
MIT License
|
|
284
|
+
|
|
285
|
+
## 🤝 Contributing
|
|
286
|
+
|
|
287
|
+
Issue reports and Pull Requests are welcome!
|
|
288
|
+
|
|
289
|
+
1. Fork the Project
|
|
290
|
+
2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)
|
|
291
|
+
3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)
|
|
292
|
+
4. Push to the Branch (`git push origin feature/AmazingFeature`)
|
|
293
|
+
5. Open a Pull Request
|
|
294
|
+
|
|
295
|
+
## 📮 Contact
|
|
296
|
+
|
|
297
|
+
Project Link: [https://github.com/gay00ung/issue-scribe-mcp](https://github.com/gay00ung/issue-scribe-mcp)
|