codewiki-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 +206 -144
- package/README.ru.md +206 -144
- package/dist/cli.js +0 -0
- package/dist/schemas.d.ts +12 -38
- package/package.json +26 -4
- package/.claude/skills/codewiki.md +0 -186
- package/.cursor/mcp.json +0 -9
- package/.dockerignore +0 -10
- package/.github/dependabot.yml +0 -33
- package/.github/workflows/ci.yml +0 -42
- package/.github/workflows/release.yml +0 -36
- package/.releaserc.json +0 -16
- package/CHANGELOG.md +0 -6
- package/Dockerfile +0 -15
- package/src/cli.ts +0 -67
- package/src/index.ts +0 -32
- package/src/lib/batchexecute.ts +0 -72
- package/src/lib/codewikiClient.ts +0 -294
- package/src/lib/config.ts +0 -30
- package/src/lib/errors.ts +0 -57
- package/src/lib/extractKeyword.ts +0 -47
- package/src/lib/repo.ts +0 -70
- package/src/lib/resolveRepo.ts +0 -60
- package/src/schemas.ts +0 -22
- package/src/server.ts +0 -120
- package/src/tools/askRepo.ts +0 -38
- package/src/tools/fetchRepo.ts +0 -74
- package/src/tools/searchRepos.ts +0 -40
- package/tests/batchexecute.test.ts +0 -42
- package/tests/client.test.ts +0 -129
- package/tests/errors.test.ts +0 -122
- package/tests/extractKeyword.test.ts +0 -34
- package/tests/resolveRepo.test.ts +0 -79
- package/tsconfig.json +0 -18
- package/vitest.config.ts +0 -10
package/README.ru.md
CHANGED
|
@@ -1,53 +1,49 @@
|
|
|
1
|
-
|
|
1
|
+
<div align="center">
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
# 📚 codewiki-mcp
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
**MCP-сервер для codewiki.google — поиск, документация и вопросы по любому open-source репозиторию**
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
[](https://github.com/izzzzzi/codewiki-mcp/actions/workflows/ci.yml)
|
|
8
|
+
[](https://github.com/izzzzzi/codewiki-mcp/actions/workflows/release.yml)
|
|
9
|
+
[](https://www.npmjs.com/package/codewiki-mcp)
|
|
10
|
+
[](https://www.npmjs.com/package/codewiki-mcp)
|
|
11
|
+
[](LICENSE)
|
|
12
|
+
[](https://www.typescriptlang.org/)
|
|
13
|
+
[](https://nodejs.org/)
|
|
8
14
|
|
|
9
|
-
|
|
10
|
-
- **Множественные транспорты**: stdio (по умолчанию), Streamable HTTP, SSE
|
|
11
|
-
- **NLP-резолвинг репозиториев**: естественный язык → поиск по GitHub → `owner/repo` (через wink-nlp)
|
|
12
|
-
- **Retry с exponential backoff**: настраиваемые повторные запросы
|
|
13
|
-
- **Структурированные ошибки**: типизированные коды (`VALIDATION`, `RPC_FAIL`, `TIMEOUT`, `NLP_RESOLVE_FAIL`)
|
|
14
|
-
- **Метаданные ответов**: размер в байтах и время выполнения в каждом ответе
|
|
15
|
-
- **Docker**: multi-stage Alpine-сборка
|
|
16
|
-
- **Claude Code skill**: промпт-шаблоны, воркфлоу-цепочки, гайд по обработке ошибок
|
|
15
|
+
**🇷🇺 Русский** | [🇬🇧 English](README.md)
|
|
17
16
|
|
|
18
|
-
|
|
17
|
+
<br />
|
|
19
18
|
|
|
20
|
-
|
|
19
|
+
*MCP-сервер, подключающий любого AI-ассистента к [codewiki.google](https://codewiki.google) — сервису генерации wiki-документации для open-source репозиториев.*
|
|
21
20
|
|
|
22
|
-
|
|
23
|
-
codewiki fetch как устроен роутинг в Next.js
|
|
24
|
-
```
|
|
21
|
+
</div>
|
|
25
22
|
|
|
26
|
-
|
|
27
|
-
codewiki search библиотеки для управления состоянием
|
|
28
|
-
```
|
|
23
|
+
---
|
|
29
24
|
|
|
30
|
-
|
|
31
|
-
codewiki ask как работает fiber reconciler в React?
|
|
32
|
-
```
|
|
25
|
+
## 📖 Обзор
|
|
33
26
|
|
|
34
|
-
|
|
35
|
-
```
|
|
36
|
-
codewiki fetch vercel/next.js
|
|
37
|
-
codewiki fetch https://github.com/fastify/fastify
|
|
38
|
-
```
|
|
27
|
+
**codewiki-mcp** — это [Model Context Protocol](https://modelcontextprotocol.io/) сервер, который даёт AI-ассистентам доступ к **codewiki.google** — сервису, генерирующему подробную wiki-документацию для любого GitHub-репозитория. Ищите репозитории, получайте полную документацию или задавайте вопросы на естественном языке — всё через MCP.
|
|
39
28
|
|
|
40
|
-
|
|
41
|
-
```
|
|
42
|
-
codewiki fetch pages tailwindlabs/tailwindcss
|
|
43
|
-
```
|
|
29
|
+
---
|
|
44
30
|
|
|
45
|
-
|
|
46
|
-
```
|
|
47
|
-
codewiki ask fastify как добавить аутентификацию?
|
|
48
|
-
```
|
|
31
|
+
## ✨ Возможности
|
|
49
32
|
|
|
50
|
-
|
|
33
|
+
| Фича | Описание |
|
|
34
|
+
|------|----------|
|
|
35
|
+
| 🔍 **Поиск репозиториев** | Поиск по индексу codewiki.google |
|
|
36
|
+
| 📄 **Получение wiki-документации** | Полный markdown или структурированные страницы |
|
|
37
|
+
| 💬 **Вопросы по репозиторию** | Q&A на естественном языке с историей диалога |
|
|
38
|
+
| 🧠 **NLP-резолвинг** | Пишите на естественном языке — wink-nlp извлечёт ключевые слова и найдёт `owner/repo` |
|
|
39
|
+
| 📡 **Множественные транспорты** | stdio (по умолчанию), Streamable HTTP, SSE |
|
|
40
|
+
| 🔄 **Retry с backoff** | Автоматические повторы с exponential backoff при 5xx ошибках |
|
|
41
|
+
| 🐳 **Docker** | Multi-stage Alpine-сборка |
|
|
42
|
+
| 📊 **Метаданные ответов** | Размер в байтах и время выполнения в каждом ответе |
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## 🚀 Быстрый старт
|
|
51
47
|
|
|
52
48
|
### Через npx (без установки)
|
|
53
49
|
|
|
@@ -58,31 +54,26 @@ npx -y codewiki-mcp@latest
|
|
|
58
54
|
### Из исходников
|
|
59
55
|
|
|
60
56
|
```bash
|
|
61
|
-
git clone https://github.com/
|
|
57
|
+
git clone https://github.com/izzzzzi/codewiki-mcp.git
|
|
62
58
|
cd codewiki-mcp
|
|
63
59
|
npm install
|
|
64
60
|
npm run build
|
|
65
61
|
```
|
|
66
62
|
|
|
67
|
-
###
|
|
63
|
+
### Транспорты
|
|
68
64
|
|
|
69
65
|
```bash
|
|
66
|
+
# stdio (по умолчанию)
|
|
70
67
|
node dist/cli.js
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
### HTTP
|
|
74
68
|
|
|
75
|
-
|
|
69
|
+
# Streamable HTTP
|
|
76
70
|
node dist/cli.js --http --port 3000
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
### SSE
|
|
80
71
|
|
|
81
|
-
|
|
72
|
+
# SSE
|
|
82
73
|
node dist/cli.js --sse --port 3001
|
|
83
74
|
```
|
|
84
75
|
|
|
85
|
-
### Docker
|
|
76
|
+
### 🐳 Docker
|
|
86
77
|
|
|
87
78
|
```bash
|
|
88
79
|
docker build -t codewiki-mcp .
|
|
@@ -101,11 +92,14 @@ docker run -p 3000:3000 \
|
|
|
101
92
|
codewiki-mcp --http
|
|
102
93
|
```
|
|
103
94
|
|
|
104
|
-
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## 🔧 Настройка MCP-клиентов
|
|
105
98
|
|
|
106
|
-
|
|
99
|
+
<details>
|
|
100
|
+
<summary><b>Cursor</b></summary>
|
|
107
101
|
|
|
108
|
-
Добавьте в `.cursor/mcp.json
|
|
102
|
+
Добавьте в `.cursor/mcp.json`:
|
|
109
103
|
|
|
110
104
|
```json
|
|
111
105
|
{
|
|
@@ -118,7 +112,10 @@ docker run -p 3000:3000 \
|
|
|
118
112
|
}
|
|
119
113
|
```
|
|
120
114
|
|
|
121
|
-
|
|
115
|
+
</details>
|
|
116
|
+
|
|
117
|
+
<details>
|
|
118
|
+
<summary><b>Claude Desktop</b></summary>
|
|
122
119
|
|
|
123
120
|
Добавьте в `claude_desktop_config.json`:
|
|
124
121
|
|
|
@@ -133,13 +130,19 @@ docker run -p 3000:3000 \
|
|
|
133
130
|
}
|
|
134
131
|
```
|
|
135
132
|
|
|
136
|
-
|
|
133
|
+
</details>
|
|
134
|
+
|
|
135
|
+
<details>
|
|
136
|
+
<summary><b>Claude Code</b></summary>
|
|
137
137
|
|
|
138
138
|
```bash
|
|
139
139
|
claude mcp add codewiki-mcp -- npx -y codewiki-mcp@latest
|
|
140
140
|
```
|
|
141
141
|
|
|
142
|
-
|
|
142
|
+
</details>
|
|
143
|
+
|
|
144
|
+
<details>
|
|
145
|
+
<summary><b>Windsurf</b></summary>
|
|
143
146
|
|
|
144
147
|
Добавьте в конфигурацию Windsurf MCP:
|
|
145
148
|
|
|
@@ -154,7 +157,10 @@ claude mcp add codewiki-mcp -- npx -y codewiki-mcp@latest
|
|
|
154
157
|
}
|
|
155
158
|
```
|
|
156
159
|
|
|
157
|
-
|
|
160
|
+
</details>
|
|
161
|
+
|
|
162
|
+
<details>
|
|
163
|
+
<summary><b>VS Code (Copilot)</b></summary>
|
|
158
164
|
|
|
159
165
|
Добавьте в `.vscode/mcp.json`:
|
|
160
166
|
|
|
@@ -169,7 +175,10 @@ claude mcp add codewiki-mcp -- npx -y codewiki-mcp@latest
|
|
|
169
175
|
}
|
|
170
176
|
```
|
|
171
177
|
|
|
172
|
-
|
|
178
|
+
</details>
|
|
179
|
+
|
|
180
|
+
<details>
|
|
181
|
+
<summary><b>Локальная разработка</b></summary>
|
|
173
182
|
|
|
174
183
|
```json
|
|
175
184
|
{
|
|
@@ -182,39 +191,83 @@ claude mcp add codewiki-mcp -- npx -y codewiki-mcp@latest
|
|
|
182
191
|
}
|
|
183
192
|
```
|
|
184
193
|
|
|
185
|
-
|
|
194
|
+
</details>
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
## 💡 Использование
|
|
199
|
+
|
|
200
|
+
Промпты для любого MCP-совместимого клиента:
|
|
201
|
+
|
|
202
|
+
```
|
|
203
|
+
codewiki fetch как устроен роутинг в Next.js
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
```
|
|
207
|
+
codewiki search библиотеки для управления состоянием
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
```
|
|
211
|
+
codewiki ask как работает fiber reconciler в React?
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
Получить полную документацию:
|
|
215
|
+
|
|
216
|
+
```
|
|
217
|
+
codewiki fetch vercel/next.js
|
|
218
|
+
codewiki fetch https://github.com/fastify/fastify
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
Получить структурированные страницы:
|
|
222
|
+
|
|
223
|
+
```
|
|
224
|
+
codewiki fetch pages tailwindlabs/tailwindcss
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
Задать вопрос:
|
|
228
|
+
|
|
229
|
+
```
|
|
230
|
+
codewiki ask fastify как добавить аутентификацию?
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
---
|
|
234
|
+
|
|
235
|
+
## 🛠️ MCP-инструменты
|
|
186
236
|
|
|
187
|
-
### codewiki_search_repos
|
|
237
|
+
### 🔍 codewiki_search_repos
|
|
188
238
|
|
|
189
239
|
Поиск репозиториев, проиндексированных codewiki.google.
|
|
190
240
|
|
|
191
241
|
| Параметр | Тип | Обязательный | По умолчанию | Описание |
|
|
192
|
-
|
|
193
|
-
| `query` | string |
|
|
194
|
-
| `limit` | number |
|
|
242
|
+
|----------|-----|:------------:|--------------|----------|
|
|
243
|
+
| `query` | string | ✅ | — | Поисковый запрос |
|
|
244
|
+
| `limit` | number | — | 10 | Макс. результатов (1–50) |
|
|
195
245
|
|
|
196
|
-
### codewiki_fetch_repo
|
|
246
|
+
### 📄 codewiki_fetch_repo
|
|
197
247
|
|
|
198
248
|
Получение сгенерированного wiki-контента для репозитория.
|
|
199
249
|
|
|
200
250
|
| Параметр | Тип | Обязательный | По умолчанию | Описание |
|
|
201
|
-
|
|
202
|
-
| `repo` | string |
|
|
203
|
-
| `mode` | string |
|
|
251
|
+
|----------|-----|:------------:|--------------|----------|
|
|
252
|
+
| `repo` | string | ✅ | — | `owner/repo`, URL на GitHub или запрос на естественном языке |
|
|
253
|
+
| `mode` | string | — | `"aggregate"` | `"aggregate"` — полный markdown; `"pages"` — структурированный JSON |
|
|
204
254
|
|
|
205
|
-
### codewiki_ask_repo
|
|
255
|
+
### 💬 codewiki_ask_repo
|
|
206
256
|
|
|
207
257
|
Вопрос на естественном языке о репозитории.
|
|
208
258
|
|
|
209
259
|
| Параметр | Тип | Обязательный | По умолчанию | Описание |
|
|
210
|
-
|
|
211
|
-
| `repo` | string |
|
|
212
|
-
| `question` | string |
|
|
213
|
-
| `history` | array |
|
|
260
|
+
|----------|-----|:------------:|--------------|----------|
|
|
261
|
+
| `repo` | string | ✅ | — | Идентификатор репозитория (те же форматы, что и fetch) |
|
|
262
|
+
| `question` | string | ✅ | — | Вопрос о репозитории |
|
|
263
|
+
| `history` | array | — | `[]` | История диалога `[{role, content}]` (макс. 20) |
|
|
214
264
|
|
|
215
|
-
|
|
265
|
+
---
|
|
216
266
|
|
|
217
|
-
|
|
267
|
+
## 📊 Формат ответов
|
|
268
|
+
|
|
269
|
+
<details>
|
|
270
|
+
<summary><b>✅ Успех — Поиск</b></summary>
|
|
218
271
|
|
|
219
272
|
```json
|
|
220
273
|
{
|
|
@@ -236,7 +289,10 @@ claude mcp add codewiki-mcp -- npx -y codewiki-mcp@latest
|
|
|
236
289
|
}
|
|
237
290
|
```
|
|
238
291
|
|
|
239
|
-
|
|
292
|
+
</details>
|
|
293
|
+
|
|
294
|
+
<details>
|
|
295
|
+
<summary><b>✅ Успех — Fetch (режим pages)</b></summary>
|
|
240
296
|
|
|
241
297
|
```json
|
|
242
298
|
{
|
|
@@ -259,7 +315,10 @@ claude mcp add codewiki-mcp -- npx -y codewiki-mcp@latest
|
|
|
259
315
|
}
|
|
260
316
|
```
|
|
261
317
|
|
|
262
|
-
|
|
318
|
+
</details>
|
|
319
|
+
|
|
320
|
+
<details>
|
|
321
|
+
<summary><b>✅ Успех — Ask</b></summary>
|
|
263
322
|
|
|
264
323
|
```json
|
|
265
324
|
{
|
|
@@ -271,7 +330,10 @@ claude mcp add codewiki-mcp -- npx -y codewiki-mcp@latest
|
|
|
271
330
|
}
|
|
272
331
|
```
|
|
273
332
|
|
|
274
|
-
|
|
333
|
+
</details>
|
|
334
|
+
|
|
335
|
+
<details>
|
|
336
|
+
<summary><b>❌ Ответ с ошибкой</b></summary>
|
|
275
337
|
|
|
276
338
|
```json
|
|
277
339
|
{
|
|
@@ -284,47 +346,20 @@ claude mcp add codewiki-mcp -- npx -y codewiki-mcp@latest
|
|
|
284
346
|
}
|
|
285
347
|
```
|
|
286
348
|
|
|
287
|
-
|
|
349
|
+
Коды ошибок: `VALIDATION`, `RPC_FAIL`, `TIMEOUT`, `NLP_RESOLVE_FAIL`
|
|
288
350
|
|
|
289
|
-
|
|
290
|
-
# Запустить сервер
|
|
291
|
-
node dist/cli.js --http --port 3000
|
|
351
|
+
</details>
|
|
292
352
|
|
|
293
|
-
|
|
294
|
-
curl -X POST http://localhost:3000/mcp \
|
|
295
|
-
-H "Content-Type: application/json" \
|
|
296
|
-
-d '{
|
|
297
|
-
"jsonrpc": "2.0",
|
|
298
|
-
"id": 1,
|
|
299
|
-
"method": "tools/call",
|
|
300
|
-
"params": {
|
|
301
|
-
"name": "codewiki_search_repos",
|
|
302
|
-
"arguments": { "query": "fastify", "limit": 5 }
|
|
303
|
-
}
|
|
304
|
-
}'
|
|
305
|
-
|
|
306
|
-
# Получить wiki
|
|
307
|
-
curl -X POST http://localhost:3000/mcp \
|
|
308
|
-
-H "Content-Type: application/json" \
|
|
309
|
-
-d '{
|
|
310
|
-
"jsonrpc": "2.0",
|
|
311
|
-
"id": 2,
|
|
312
|
-
"method": "tools/call",
|
|
313
|
-
"params": {
|
|
314
|
-
"name": "codewiki_fetch_repo",
|
|
315
|
-
"arguments": { "repo": "fastify/fastify", "mode": "pages" }
|
|
316
|
-
}
|
|
317
|
-
}'
|
|
318
|
-
```
|
|
353
|
+
---
|
|
319
354
|
|
|
320
|
-
## Как это работает
|
|
355
|
+
## ⚙️ Как это работает
|
|
321
356
|
|
|
322
357
|
### Поток данных
|
|
323
358
|
|
|
324
359
|
```
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
360
|
+
AI-ассистент → MCP протокол → codewiki-mcp → HTTPS → codewiki.google
|
|
361
|
+
↓
|
|
362
|
+
AI-ассистент ← MCP протокол ← codewiki-mcp ← JSON ← Google RPC API
|
|
328
363
|
```
|
|
329
364
|
|
|
330
365
|
### Google Batchexecute RPC
|
|
@@ -337,11 +372,14 @@ codewiki.google использует внутренний Google-формат AP
|
|
|
337
372
|
4. Парсит `wrb.fr`-фреймы и извлекает типизированный payload
|
|
338
373
|
|
|
339
374
|
Каждый инструмент использует свой RPC ID:
|
|
340
|
-
- `vyWDAf` — поиск
|
|
341
|
-
- `VSX6ub` — получение wiki
|
|
342
|
-
- `EgIxfe` — вопрос-ответ
|
|
343
375
|
|
|
344
|
-
|
|
376
|
+
| Инструмент | RPC ID |
|
|
377
|
+
|------------|:------:|
|
|
378
|
+
| 🔍 Поиск | `vyWDAf` |
|
|
379
|
+
| 📄 Fetch | `VSX6ub` |
|
|
380
|
+
| 💬 Вопрос | `EgIxfe` |
|
|
381
|
+
|
|
382
|
+
### 🧠 NLP-резолвинг репозиториев
|
|
345
383
|
|
|
346
384
|
Пользователь может написать не только `owner/repo`, но и текст на естественном языке:
|
|
347
385
|
|
|
@@ -353,20 +391,20 @@ codewiki.google использует внутренний Google-формат AP
|
|
|
353
391
|
→ normalizeRepoInput("fastify/fastify") → URL для codewiki
|
|
354
392
|
```
|
|
355
393
|
|
|
356
|
-
### Retry с exponential backoff
|
|
394
|
+
### 🔄 Retry с exponential backoff
|
|
357
395
|
|
|
358
|
-
|
|
396
|
+
| Попытка | Задержка |
|
|
397
|
+
|:-------:|---------:|
|
|
398
|
+
| 0 | сразу |
|
|
399
|
+
| 1 | 250мс |
|
|
400
|
+
| 2 | 500мс |
|
|
401
|
+
| 3 | 1000мс |
|
|
359
402
|
|
|
360
|
-
|
|
361
|
-
Попытка 0: сразу
|
|
362
|
-
Попытка 1: через 250мс
|
|
363
|
-
Попытка 2: через 500мс
|
|
364
|
-
Попытка 3: через 1000мс
|
|
365
|
-
```
|
|
403
|
+
> На 4xx ошибки (клиентские) retry не делается — бессмысленно.
|
|
366
404
|
|
|
367
|
-
|
|
405
|
+
---
|
|
368
406
|
|
|
369
|
-
## CLI
|
|
407
|
+
## 🖥️ CLI
|
|
370
408
|
|
|
371
409
|
```
|
|
372
410
|
codewiki-mcp [опции]
|
|
@@ -379,7 +417,9 @@ codewiki-mcp [опции]
|
|
|
379
417
|
--help, -h Показать справку
|
|
380
418
|
```
|
|
381
419
|
|
|
382
|
-
|
|
420
|
+
---
|
|
421
|
+
|
|
422
|
+
## ⚡ Конфигурация
|
|
383
423
|
|
|
384
424
|
Переменные окружения:
|
|
385
425
|
|
|
@@ -399,19 +439,9 @@ CODEWIKI_MAX_RETRIES=5
|
|
|
399
439
|
GITHUB_TOKEN=ghp_your_token
|
|
400
440
|
```
|
|
401
441
|
|
|
402
|
-
|
|
442
|
+
---
|
|
403
443
|
|
|
404
|
-
|
|
405
|
-
npm run dev # stdio через tsx
|
|
406
|
-
npm run dev:http # HTTP через tsx
|
|
407
|
-
npm run dev:sse # SSE через tsx
|
|
408
|
-
npm run typecheck # проверка типов
|
|
409
|
-
npm run test # запуск тестов
|
|
410
|
-
npm run test:watch # тесты в watch-режиме
|
|
411
|
-
npm run build # сборка в dist/
|
|
412
|
-
```
|
|
413
|
-
|
|
414
|
-
## Структура проекта
|
|
444
|
+
## 📁 Структура проекта
|
|
415
445
|
|
|
416
446
|
```
|
|
417
447
|
src/
|
|
@@ -433,22 +463,31 @@ src/
|
|
|
433
463
|
└── askRepo.ts # codewiki_ask_repo
|
|
434
464
|
```
|
|
435
465
|
|
|
436
|
-
|
|
466
|
+
---
|
|
437
467
|
|
|
438
|
-
|
|
468
|
+
## ❓ Решение проблем
|
|
469
|
+
|
|
470
|
+
<details>
|
|
471
|
+
<summary><b>Permission Denied</b></summary>
|
|
439
472
|
|
|
440
473
|
```bash
|
|
441
474
|
chmod +x ./node_modules/.bin/codewiki-mcp
|
|
442
475
|
```
|
|
443
476
|
|
|
444
|
-
|
|
477
|
+
</details>
|
|
478
|
+
|
|
479
|
+
<details>
|
|
480
|
+
<summary><b>Connection Refused (HTTP/SSE)</b></summary>
|
|
445
481
|
|
|
446
482
|
```bash
|
|
447
483
|
# Проверить, занят ли порт
|
|
448
484
|
lsof -i :3000
|
|
449
485
|
```
|
|
450
486
|
|
|
451
|
-
|
|
487
|
+
</details>
|
|
488
|
+
|
|
489
|
+
<details>
|
|
490
|
+
<summary><b>Ошибки таймаута</b></summary>
|
|
452
491
|
|
|
453
492
|
Для больших репозиториев увеличьте таймаут:
|
|
454
493
|
|
|
@@ -456,7 +495,10 @@ lsof -i :3000
|
|
|
456
495
|
CODEWIKI_REQUEST_TIMEOUT=60000 node dist/cli.js
|
|
457
496
|
```
|
|
458
497
|
|
|
459
|
-
|
|
498
|
+
</details>
|
|
499
|
+
|
|
500
|
+
<details>
|
|
501
|
+
<summary><b>NLP-резолвинг не работает</b></summary>
|
|
460
502
|
|
|
461
503
|
Если естественный язык не резолвится, используйте явный формат:
|
|
462
504
|
|
|
@@ -469,7 +511,25 @@ https://github.com/fastify/fastify
|
|
|
469
511
|
|
|
470
512
|
Установите `GITHUB_TOKEN`, чтобы избежать лимитов GitHub API для неаутентифицированных запросов.
|
|
471
513
|
|
|
472
|
-
|
|
514
|
+
</details>
|
|
515
|
+
|
|
516
|
+
---
|
|
517
|
+
|
|
518
|
+
## 🧑💻 Разработка
|
|
519
|
+
|
|
520
|
+
```bash
|
|
521
|
+
npm run dev # stdio через tsx
|
|
522
|
+
npm run dev:http # HTTP через tsx
|
|
523
|
+
npm run dev:sse # SSE через tsx
|
|
524
|
+
npm run typecheck # проверка типов
|
|
525
|
+
npm run test # запуск тестов
|
|
526
|
+
npm run test:watch # тесты в watch-режиме
|
|
527
|
+
npm run build # сборка в dist/
|
|
528
|
+
```
|
|
529
|
+
|
|
530
|
+
---
|
|
531
|
+
|
|
532
|
+
## 🤝 Участие в разработке
|
|
473
533
|
|
|
474
534
|
Мы приветствуем вклад! Пожалуйста:
|
|
475
535
|
|
|
@@ -479,6 +539,8 @@ https://github.com/fastify/fastify
|
|
|
479
539
|
4. Запустите `npm run typecheck && npm run test` перед отправкой
|
|
480
540
|
5. Откройте Pull Request
|
|
481
541
|
|
|
482
|
-
|
|
542
|
+
---
|
|
543
|
+
|
|
544
|
+
## 📄 Лицензия
|
|
483
545
|
|
|
484
|
-
MIT
|
|
546
|
+
[MIT](LICENSE) © codewiki-mcp contributors
|
package/dist/cli.js
CHANGED
|
File without changes
|
package/dist/schemas.d.ts
CHANGED
|
@@ -3,48 +3,22 @@ export type { ErrorEnvelope } from './lib/errors.js';
|
|
|
3
3
|
export declare const SearchReposInput: z.ZodObject<{
|
|
4
4
|
query: z.ZodString;
|
|
5
5
|
limit: z.ZodDefault<z.ZodNumber>;
|
|
6
|
-
},
|
|
7
|
-
query: string;
|
|
8
|
-
limit: number;
|
|
9
|
-
}, {
|
|
10
|
-
query: string;
|
|
11
|
-
limit?: number | undefined;
|
|
12
|
-
}>;
|
|
6
|
+
}, z.core.$strip>;
|
|
13
7
|
export declare const FetchRepoInput: z.ZodObject<{
|
|
14
8
|
repo: z.ZodString;
|
|
15
|
-
mode: z.ZodDefault<z.ZodEnum<
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
},
|
|
20
|
-
repo: string;
|
|
21
|
-
mode?: "aggregate" | "pages" | undefined;
|
|
22
|
-
}>;
|
|
9
|
+
mode: z.ZodDefault<z.ZodEnum<{
|
|
10
|
+
aggregate: "aggregate";
|
|
11
|
+
pages: "pages";
|
|
12
|
+
}>>;
|
|
13
|
+
}, z.core.$strip>;
|
|
23
14
|
export declare const AskRepoInput: z.ZodObject<{
|
|
24
15
|
repo: z.ZodString;
|
|
25
16
|
question: z.ZodString;
|
|
26
17
|
history: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
27
|
-
role: z.ZodEnum<
|
|
18
|
+
role: z.ZodEnum<{
|
|
19
|
+
user: "user";
|
|
20
|
+
assistant: "assistant";
|
|
21
|
+
}>;
|
|
28
22
|
content: z.ZodString;
|
|
29
|
-
},
|
|
30
|
-
|
|
31
|
-
content: string;
|
|
32
|
-
}, {
|
|
33
|
-
role: "user" | "assistant";
|
|
34
|
-
content: string;
|
|
35
|
-
}>, "many">>;
|
|
36
|
-
}, "strip", z.ZodTypeAny, {
|
|
37
|
-
repo: string;
|
|
38
|
-
question: string;
|
|
39
|
-
history?: {
|
|
40
|
-
role: "user" | "assistant";
|
|
41
|
-
content: string;
|
|
42
|
-
}[] | undefined;
|
|
43
|
-
}, {
|
|
44
|
-
repo: string;
|
|
45
|
-
question: string;
|
|
46
|
-
history?: {
|
|
47
|
-
role: "user" | "assistant";
|
|
48
|
-
content: string;
|
|
49
|
-
}[] | undefined;
|
|
50
|
-
}>;
|
|
23
|
+
}, z.core.$strip>>>;
|
|
24
|
+
}, z.core.$strip>;
|
package/package.json
CHANGED
|
@@ -1,11 +1,33 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codewiki-mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0",
|
|
4
|
+
"mcpName": "io.github.izzzzzi/codewiki-mcp",
|
|
4
5
|
"description": "MCP server for codewiki.google",
|
|
5
6
|
"type": "module",
|
|
7
|
+
"main": "dist/index.js",
|
|
6
8
|
"bin": {
|
|
7
9
|
"codewiki-mcp": "dist/cli.js"
|
|
8
10
|
},
|
|
11
|
+
"files": [
|
|
12
|
+
"dist",
|
|
13
|
+
"README.md",
|
|
14
|
+
"LICENSE"
|
|
15
|
+
],
|
|
16
|
+
"keywords": [
|
|
17
|
+
"mcp",
|
|
18
|
+
"mcp-server",
|
|
19
|
+
"codewiki",
|
|
20
|
+
"documentation",
|
|
21
|
+
"github",
|
|
22
|
+
"ai",
|
|
23
|
+
"model-context-protocol"
|
|
24
|
+
],
|
|
25
|
+
"repository": {
|
|
26
|
+
"type": "git",
|
|
27
|
+
"url": "https://github.com/izzzzzi/codewiki-mcp.git"
|
|
28
|
+
},
|
|
29
|
+
"license": "MIT",
|
|
30
|
+
"homepage": "https://github.com/izzzzzi/codewiki-mcp",
|
|
9
31
|
"scripts": {
|
|
10
32
|
"build": "tsc -p tsconfig.json",
|
|
11
33
|
"dev": "tsx src/cli.ts",
|
|
@@ -22,16 +44,16 @@
|
|
|
22
44
|
"@modelcontextprotocol/sdk": "^1.19.0",
|
|
23
45
|
"wink-eng-lite-web-model": "^1.8.1",
|
|
24
46
|
"wink-nlp": "^2.4.0",
|
|
25
|
-
"zod": "^3.
|
|
47
|
+
"zod": "^4.3.6"
|
|
26
48
|
},
|
|
27
49
|
"devDependencies": {
|
|
28
50
|
"@semantic-release/changelog": "^6.0.3",
|
|
29
51
|
"@semantic-release/git": "^10.0.1",
|
|
30
52
|
"@semantic-release/github": "^12.0.6",
|
|
31
|
-
"@types/node": "^
|
|
53
|
+
"@types/node": "^25.2.3",
|
|
32
54
|
"semantic-release": "^25.0.3",
|
|
33
55
|
"tsx": "^4.19.3",
|
|
34
56
|
"typescript": "^5.8.2",
|
|
35
|
-
"vitest": "^
|
|
57
|
+
"vitest": "^4.0.18"
|
|
36
58
|
}
|
|
37
59
|
}
|