gitlab-mcp-agent-server 0.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.
@@ -0,0 +1,120 @@
1
+ # User Guide
2
+
3
+ Этот гайд для конечного пользователя: как подключить `gitlab-mcp-agent-server` в конфиг ИИ-агента через `npx` и работать через OAuth с авто-рефрешем токена.
4
+
5
+ ## 1. Подготовка GitLab OAuth Application
6
+
7
+ 1. Открой GitLab: `User Settings -> Applications`.
8
+ 2. Создай application.
9
+ 3. Укажи:
10
+ - `Redirect URI`: `http://127.0.0.1:8787/oauth/callback`
11
+ - Scope: `api`
12
+ 4. Сохрани:
13
+ - `Application ID` (это `client_id`)
14
+ - `Secret` (это `client_secret`)
15
+
16
+ Важно: `redirect_uri` должен совпадать 1-в-1 в GitLab и в MCP-конфиге.
17
+
18
+ ## 2. Что нужно указать пользователю
19
+
20
+ Минимально достаточно:
21
+ 1. `GITLAB_OAUTH_CLIENT_ID`
22
+ 2. `GITLAB_OAUTH_CLIENT_SECRET`
23
+
24
+ Остальные параметры имеют дефолты.
25
+
26
+ ## 3. Пример MCP-конфига для ИИ-агента
27
+
28
+ Ниже универсальный шаблон `mcpServers` (подставь в конфиг своего клиента):
29
+
30
+ ```json
31
+ {
32
+ "mcpServers": {
33
+ "gitlab": {
34
+ "command": "npx",
35
+ "args": ["-y", "gitlab-mcp-agent-server"],
36
+ "cwd": "/path/to/your/git/repo",
37
+ "env": {
38
+ "GITLAB_OAUTH_CLIENT_ID": "<APPLICATION_ID>",
39
+ "GITLAB_OAUTH_CLIENT_SECRET": "<SECRET>"
40
+ }
41
+ }
42
+ }
43
+ }
44
+ ```
45
+
46
+ Расширенный вариант (если нужно переопределить дефолты):
47
+
48
+ ```json
49
+ {
50
+ "mcpServers": {
51
+ "gitlab": {
52
+ "command": "npx",
53
+ "args": ["-y", "gitlab-mcp-agent-server"],
54
+ "cwd": "/path/to/your/git/repo",
55
+ "env": {
56
+ "GITLAB_API_URL": "https://gitlab.com/api/v4",
57
+ "GITLAB_AUTH_MODE": "oauth",
58
+ "GITLAB_OAUTH_CLIENT_ID": "<APPLICATION_ID>",
59
+ "GITLAB_OAUTH_CLIENT_SECRET": "<SECRET>",
60
+ "GITLAB_OAUTH_REDIRECT_URI": "http://127.0.0.1:8787/oauth/callback",
61
+ "GITLAB_OAUTH_SCOPES": "api",
62
+ "GITLAB_OAUTH_TOKEN_STORE_PATH": "/home/<user>/.config/gitlab-mcp/token.json",
63
+ "GITLAB_OAUTH_AUTO_LOGIN": "true",
64
+ "GITLAB_OAUTH_OPEN_BROWSER": "false",
65
+ "GITLAB_DEFAULT_PROJECT": "group/repo",
66
+ "GITLAB_AUTO_RESOLVE_PROJECT_FROM_GIT": "true"
67
+ }
68
+ }
69
+ }
70
+ }
71
+ ```
72
+
73
+ ## 4. Что происходит при первом запуске
74
+
75
+ 1. Агент вызывает любой GitLab tool (например `gitlab_list_labels`).
76
+ 2. Если токена нет, сервер запускает OAuth flow.
77
+ 3. Если `GITLAB_OAUTH_OPEN_BROWSER=true` и окружение GUI доступно, браузер откроется автоматически.
78
+ 4. Если браузер не может быть открыт, сервер печатает URL авторизации в лог.
79
+ 5. После подтверждения в GitLab и callback на `http://127.0.0.1:8787/oauth/callback` токены сохраняются в `GITLAB_OAUTH_TOKEN_STORE_PATH`.
80
+
81
+ Если `GITLAB_DEFAULT_PROJECT` не указан:
82
+ 1. сервер пытается автоматически определить проект из `git remote origin` в `cwd`;
83
+ 2. если не удалось, tool запросит `project` явно.
84
+
85
+ ## 5. Автообновление токена
86
+
87
+ Сервер автоматически:
88
+ 1. Проверяет срок действия `access_token` перед API-вызовами.
89
+ 2. Выполняет refresh по `refresh_token`, если токен истекает.
90
+ 3. Перезаписывает token store файл новым токеном.
91
+
92
+ ## 6. Рекомендованные настройки для production
93
+
94
+ 1. Держи token store вне репозитория:
95
+ - пример: `/home/<user>/.config/gitlab-mcp/token.json`
96
+ 2. Ограничь права файла:
97
+ - `chmod 600 /home/<user>/.config/gitlab-mcp/token.json`
98
+ 3. Оставь `GITLAB_OAUTH_OPEN_BROWSER=false` для headless окружений.
99
+ 4. Обязательно заполни `GITLAB_DEFAULT_PROJECT`, если агент должен работать в одном проекте.
100
+
101
+ ## 7. Быстрая проверка работоспособности
102
+
103
+ 1. Вызови `gitlab_list_labels`.
104
+ 2. Создай issue: `gitlab_create_issue`.
105
+ 3. Получи issue: `gitlab_get_issue`.
106
+ 4. Обнови labels: `gitlab_update_issue_labels`.
107
+ 5. Закрой issue: `gitlab_close_issue`.
108
+
109
+ ## 8. Troubleshooting
110
+
111
+ `The redirect URI included is not valid`:
112
+ 1. Проверь, что URI совпадает 1-в-1:
113
+ - в GitLab Application
114
+ - в `GITLAB_OAUTH_REDIRECT_URI`
115
+ 2. Не смешивай `localhost` и `127.0.0.1`.
116
+
117
+ `401 Unauthorized`:
118
+ 1. Проверь scope `api`.
119
+ 2. Убедись, что `client_id`/`client_secret` от того же приложения.
120
+ 3. Удали token store файл и пройди OAuth заново.
package/package.json ADDED
@@ -0,0 +1,53 @@
1
+ {
2
+ "name": "gitlab-mcp-agent-server",
3
+ "version": "0.1.0",
4
+ "description": "MCP server for GitLab integration via OAuth",
5
+ "main": "build/src/index.js",
6
+ "bin": {
7
+ "gitlab-mcp-agent-server": "bin/gitlab-mcp-server.js"
8
+ },
9
+ "files": [
10
+ "bin",
11
+ "build/src",
12
+ "README.md",
13
+ "docs/USER_GUIDE.md",
14
+ "LICENSE"
15
+ ],
16
+ "scripts": {
17
+ "dev": "tsx src/index.ts",
18
+ "build": "rm -rf build && tsc -p tsconfig.json",
19
+ "start": "node build/src/index.js",
20
+ "lint": "eslint src tests",
21
+ "test": "jest --runInBand",
22
+ "typecheck": "tsc --noEmit -p tsconfig.json",
23
+ "prepack": "npm run build"
24
+ },
25
+ "keywords": [
26
+ "mcp",
27
+ "gitlab",
28
+ "oauth",
29
+ "model-context-protocol"
30
+ ],
31
+ "author": "",
32
+ "license": "MIT",
33
+ "type": "commonjs",
34
+ "private": false,
35
+ "publishConfig": {
36
+ "access": "public"
37
+ },
38
+ "dependencies": {
39
+ "@modelcontextprotocol/sdk": "^1.27.1",
40
+ "zod": "^4.3.6"
41
+ },
42
+ "devDependencies": {
43
+ "@eslint/js": "^10.0.1",
44
+ "@types/jest": "^30.0.0",
45
+ "@types/node": "^25.4.0",
46
+ "eslint": "^10.0.3",
47
+ "jest": "^30.3.0",
48
+ "ts-jest": "^29.4.6",
49
+ "tsx": "^4.21.0",
50
+ "typescript": "^5.9.3",
51
+ "typescript-eslint": "^8.57.0"
52
+ }
53
+ }