gitlab-mcp 1.1.0 → 1.2.1

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.
Files changed (111) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +12 -1
  3. package/dist/config/dotenv.d.ts +2 -0
  4. package/dist/config/dotenv.js +40 -0
  5. package/dist/config/dotenv.js.map +1 -0
  6. package/dist/config/env.d.ts +55 -0
  7. package/dist/config/env.js +164 -0
  8. package/dist/config/env.js.map +1 -0
  9. package/dist/http-app.d.ts +45 -0
  10. package/dist/http-app.js +550 -0
  11. package/dist/http-app.js.map +1 -0
  12. package/dist/http.d.ts +2 -0
  13. package/dist/http.js +65 -0
  14. package/dist/http.js.map +1 -0
  15. package/dist/index.d.ts +2 -0
  16. package/dist/index.js +65 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/lib/auth-context.d.ts +9 -0
  19. package/dist/lib/auth-context.js +9 -0
  20. package/dist/lib/auth-context.js.map +1 -0
  21. package/dist/lib/gitlab-client.d.ts +331 -0
  22. package/dist/lib/gitlab-client.js +1025 -0
  23. package/dist/lib/gitlab-client.js.map +1 -0
  24. package/dist/lib/logger.d.ts +2 -0
  25. package/dist/lib/logger.js +13 -0
  26. package/dist/lib/logger.js.map +1 -0
  27. package/dist/lib/network.d.ts +3 -0
  28. package/dist/lib/network.js +38 -0
  29. package/dist/lib/network.js.map +1 -0
  30. package/dist/lib/oauth.d.ts +29 -0
  31. package/dist/lib/oauth.js +220 -0
  32. package/dist/lib/oauth.js.map +1 -0
  33. package/dist/lib/output.d.ts +14 -0
  34. package/dist/lib/output.js +38 -0
  35. package/dist/lib/output.js.map +1 -0
  36. package/dist/lib/policy.d.ts +25 -0
  37. package/dist/lib/policy.js +48 -0
  38. package/dist/lib/policy.js.map +1 -0
  39. package/dist/lib/request-runtime.d.ts +26 -0
  40. package/dist/lib/request-runtime.js +323 -0
  41. package/dist/lib/request-runtime.js.map +1 -0
  42. package/dist/lib/sanitize.d.ts +1 -0
  43. package/dist/lib/sanitize.js +21 -0
  44. package/dist/lib/sanitize.js.map +1 -0
  45. package/dist/lib/session-capacity.d.ts +8 -0
  46. package/dist/lib/session-capacity.js +7 -0
  47. package/dist/lib/session-capacity.js.map +1 -0
  48. package/dist/server/build-server.d.ts +3 -0
  49. package/dist/server/build-server.js +13 -0
  50. package/dist/server/build-server.js.map +1 -0
  51. package/dist/tools/gitlab.d.ts +9 -0
  52. package/dist/tools/gitlab.js +2576 -0
  53. package/dist/tools/gitlab.js.map +1 -0
  54. package/dist/tools/health.d.ts +2 -0
  55. package/dist/tools/health.js +21 -0
  56. package/dist/tools/health.js.map +1 -0
  57. package/dist/tools/mr-code-context.d.ts +38 -0
  58. package/dist/tools/mr-code-context.js +330 -0
  59. package/dist/tools/mr-code-context.js.map +1 -0
  60. package/{src/types/context.ts → dist/types/context.d.ts} +5 -6
  61. package/dist/types/context.js +2 -0
  62. package/dist/types/context.js.map +1 -0
  63. package/docs/architecture.md +10 -10
  64. package/docs/configuration.md +12 -7
  65. package/docs/mcp-integration-testing-best-practices.md +981 -0
  66. package/package.json +13 -1
  67. package/.dockerignore +0 -7
  68. package/.editorconfig +0 -9
  69. package/.env.example +0 -75
  70. package/.github/workflows/nodejs.yml +0 -31
  71. package/.github/workflows/npm-publish.yml +0 -31
  72. package/.husky/pre-commit +0 -1
  73. package/.nvmrc +0 -1
  74. package/.prettierrc.json +0 -6
  75. package/Dockerfile +0 -20
  76. package/docker-compose.yml +0 -10
  77. package/eslint.config.js +0 -23
  78. package/scripts/get-oauth-token.example.sh +0 -15
  79. package/src/config/env.ts +0 -171
  80. package/src/http.ts +0 -620
  81. package/src/index.ts +0 -77
  82. package/src/lib/auth-context.ts +0 -19
  83. package/src/lib/gitlab-client.ts +0 -1810
  84. package/src/lib/logger.ts +0 -17
  85. package/src/lib/network.ts +0 -45
  86. package/src/lib/oauth.ts +0 -287
  87. package/src/lib/output.ts +0 -51
  88. package/src/lib/policy.ts +0 -78
  89. package/src/lib/request-runtime.ts +0 -376
  90. package/src/lib/sanitize.ts +0 -25
  91. package/src/lib/session-capacity.ts +0 -14
  92. package/src/server/build-server.ts +0 -17
  93. package/src/tools/gitlab.ts +0 -3135
  94. package/src/tools/health.ts +0 -27
  95. package/src/tools/mr-code-context.ts +0 -473
  96. package/tests/auth-context.test.ts +0 -102
  97. package/tests/gitlab-client.test.ts +0 -672
  98. package/tests/graphql-guard.test.ts +0 -121
  99. package/tests/integration/agent-loop.integration.test.ts +0 -558
  100. package/tests/integration/server.integration.test.ts +0 -543
  101. package/tests/mr-code-context.test.ts +0 -600
  102. package/tests/oauth.test.ts +0 -43
  103. package/tests/output.test.ts +0 -186
  104. package/tests/policy.test.ts +0 -324
  105. package/tests/request-runtime.test.ts +0 -252
  106. package/tests/sanitize.test.ts +0 -123
  107. package/tests/session-capacity.test.ts +0 -49
  108. package/tests/upload-reference.test.ts +0 -88
  109. package/tsconfig.build.json +0 -11
  110. package/tsconfig.json +0 -21
  111. package/vitest.config.ts +0 -12
@@ -3,11 +3,10 @@ import type { OutputFormatter } from "../lib/output.js";
3
3
  import type { ToolPolicyEngine } from "../lib/policy.js";
4
4
  import type { GitLabClient } from "../lib/gitlab-client.js";
5
5
  import type { Logger } from "pino";
6
-
7
6
  export interface AppContext {
8
- env: AppEnv;
9
- logger: Logger;
10
- gitlab: GitLabClient;
11
- policy: ToolPolicyEngine;
12
- formatter: OutputFormatter;
7
+ env: AppEnv;
8
+ logger: Logger;
9
+ gitlab: GitLabClient;
10
+ policy: ToolPolicyEngine;
11
+ formatter: OutputFormatter;
13
12
  }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/types/context.ts"],"names":[],"mappings":""}
@@ -9,7 +9,7 @@ gitlab-mcp is structured as a layered MCP server with clear separation between t
9
9
  ```
10
10
  ┌──────────────────────────────────────────────────────┐
11
11
  │ Transport Layer │
12
- │ index.ts (stdio) │ http.ts (HTTP/SSE)
12
+ │ index.ts (stdio) │ http.ts (HTTP/SSE)
13
13
  └─────────┬──────────┴──────────┬──────────────────────┘
14
14
  │ │
15
15
  │ ┌────────────────▼────────────────────┐
@@ -21,20 +21,20 @@ gitlab-mcp is structured as a layered MCP server with clear separation between t
21
21
  │ └────────────────┬────────────────────┘
22
22
  │ │
23
23
  ┌─────────▼─────────────────────▼──────────────────────┐
24
- │ MCP Server Factory
25
- │ build-server.ts
24
+ │ MCP Server Factory
25
+ │ build-server.ts
26
26
  │ ┌──────────────────────────────────────────────┐ │
27
- │ │ registerHealthTool() │ │
28
- │ │ registerGitLabTools() ──▶ Policy filtering │ │
27
+ │ │ registerHealthTool() │ │
28
+ │ │ registerGitLabTools() ──▶ Policy filtering │ │
29
29
  │ └──────────────────────────────────────────────┘ │
30
30
  └───────────────────────┬──────────────────────────────┘
31
31
 
32
32
  ┌───────────────────────▼──────────────────────────────┐
33
- │ AppContext
34
- │ ┌──────────┐ ┌───────────┐ ┌──────────────────┐
35
- │ │ env │ │ logger │ │ gitlab (Client)
36
- │ │ (AppEnv) │ │ (Pino) │ │
37
- │ └──────────┘ └───────────┘ └──────────────────┘
33
+ │ AppContext
34
+ │ ┌──────────┐ ┌───────────┐ ┌──────────────────┐
35
+ │ │ env │ │ logger │ │ gitlab (Client)
36
+ │ │ (AppEnv) │ │ (Pino) │ │
37
+ │ └──────────┘ └───────────┘ └──────────────────┘
38
38
  │ ┌──────────────────┐ ┌─────────────────────────┐ │
39
39
  │ │ policy (Engine) │ │ formatter (Output) │ │
40
40
  │ └──────────────────┘ └─────────────────────────┘ │
@@ -2,16 +2,21 @@
2
2
 
3
3
  All configuration is done through environment variables. The server validates all values at startup using [Zod](https://zod.dev/) schemas and will fail fast with descriptive errors if any value is invalid.
4
4
 
5
- You can set variables in a `.env` file (loaded automatically via `dotenv`) or pass them directly as environment variables.
5
+ You can set variables in a `.env` file (loaded automatically via `dotenv`) or pass them directly as environment variables. To load a different file, use `--env-file`:
6
+
7
+ ```bash
8
+ node dist/index.js --env-file .env.local
9
+ node dist/http.js --env-file=.env.production
10
+ ```
6
11
 
7
12
  ## Core Settings
8
13
 
9
- | Variable | Type | Default | Description |
10
- | -------------------- | ------------------------------------------------------------------------ | ------------- | -------------------------------------------------------- |
11
- | `NODE_ENV` | `development` \| `test` \| `production` | `development` | Runtime environment. Affects error detail mode defaults. |
12
- | `LOG_LEVEL` | `fatal` \| `error` \| `warn` \| `info` \| `debug` \| `trace` \| `silent` | `info` | Pino log level. |
13
- | `MCP_SERVER_NAME` | string | `gitlab-mcp` | Server name reported in MCP handshake. |
14
- | `MCP_SERVER_VERSION` | string | `0.1.0` | Server version reported in MCP handshake. |
14
+ | Variable | Type | Default | Description |
15
+ | -------------------- | ------------------------------------------------------------------------ | ---------------------- | -------------------------------------------------------- |
16
+ | `NODE_ENV` | `development` \| `test` \| `production` | `development` | Runtime environment. Affects error detail mode defaults. |
17
+ | `LOG_LEVEL` | `fatal` \| `error` \| `warn` \| `info` \| `debug` \| `trace` \| `silent` | `info` | Pino log level. |
18
+ | `MCP_SERVER_NAME` | string | `gitlab-mcp` | Server name reported in MCP handshake. |
19
+ | `MCP_SERVER_VERSION` | string | `package.json` version | Server version reported in MCP handshake. |
15
20
 
16
21
  ## GitLab API
17
22