mcp4openapi 0.1.0 → 0.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.
- package/README.md +137 -95
- package/dist/scripts/validate-profile.js +3 -3
- package/dist/scripts/validate-profile.js.map +1 -1
- package/dist/src/composite-executor.d.ts +3 -1
- package/dist/src/composite-executor.d.ts.map +1 -1
- package/dist/src/composite-executor.js +16 -5
- package/dist/src/composite-executor.js.map +1 -1
- package/dist/src/constants.d.ts +49 -0
- package/dist/src/constants.d.ts.map +1 -1
- package/dist/src/constants.js +49 -0
- package/dist/src/constants.js.map +1 -1
- package/dist/src/errors.d.ts +6 -0
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +13 -0
- package/dist/src/errors.js.map +1 -1
- package/dist/src/generated-schemas.d.ts +832 -52
- package/dist/src/generated-schemas.d.ts.map +1 -1
- package/dist/src/generated-schemas.js +31 -8
- package/dist/src/generated-schemas.js.map +1 -1
- package/dist/src/http-client-factory.d.ts.map +1 -1
- package/dist/src/http-client-factory.js +14 -3
- package/dist/src/http-client-factory.js.map +1 -1
- package/dist/src/http-transport.d.ts +65 -0
- package/dist/src/http-transport.d.ts.map +1 -1
- package/dist/src/http-transport.js +921 -77
- package/dist/src/http-transport.js.map +1 -1
- package/dist/src/index.js +108 -8
- package/dist/src/index.js.map +1 -1
- package/dist/src/interceptors.d.ts +3 -0
- package/dist/src/interceptors.d.ts.map +1 -1
- package/dist/src/interceptors.js +76 -8
- package/dist/src/interceptors.js.map +1 -1
- package/dist/src/logger.d.ts +1 -1
- package/dist/src/logger.js +3 -3
- package/dist/src/logger.js.map +1 -1
- package/dist/src/mcp-server.d.ts +33 -0
- package/dist/src/mcp-server.d.ts.map +1 -1
- package/dist/src/mcp-server.js +263 -54
- package/dist/src/mcp-server.js.map +1 -1
- package/dist/src/oauth-provider.d.ts +92 -0
- package/dist/src/oauth-provider.d.ts.map +1 -0
- package/dist/src/oauth-provider.js +588 -0
- package/dist/src/oauth-provider.js.map +1 -0
- package/dist/src/openapi-parser.d.ts +16 -0
- package/dist/src/openapi-parser.d.ts.map +1 -1
- package/dist/src/openapi-parser.js +141 -6
- package/dist/src/openapi-parser.js.map +1 -1
- package/dist/src/profile-loader.d.ts +2 -2
- package/dist/src/profile-loader.d.ts.map +1 -1
- package/dist/src/profile-loader.js +45 -24
- package/dist/src/profile-loader.js.map +1 -1
- package/dist/src/testing/fixtures.d.ts +189 -0
- package/dist/src/testing/fixtures.d.ts.map +1 -1
- package/dist/src/testing/fixtures.js +144 -0
- package/dist/src/testing/fixtures.js.map +1 -1
- package/dist/src/testing/mock-gitlab-server.d.ts +26 -17
- package/dist/src/testing/mock-gitlab-server.d.ts.map +1 -1
- package/dist/src/testing/mock-gitlab-server.js +567 -304
- package/dist/src/testing/mock-gitlab-server.js.map +1 -1
- package/dist/src/types/http-transport.d.ts +16 -0
- package/dist/src/types/http-transport.d.ts.map +1 -1
- package/dist/src/types/openapi.d.ts +5 -0
- package/dist/src/types/openapi.d.ts.map +1 -1
- package/dist/src/types/profile.d.ts +112 -3
- package/dist/src/types/profile.d.ts.map +1 -1
- package/dist/src/validation-utils.d.ts +12 -0
- package/dist/src/validation-utils.d.ts.map +1 -1
- package/dist/src/validation-utils.js +17 -0
- package/dist/src/validation-utils.js.map +1 -1
- package/package.json +12 -3
- package/profile-schema.json +169 -7
- package/dist/composite-executor.d.ts +0 -65
- package/dist/composite-executor.d.ts.map +0 -1
- package/dist/composite-executor.js +0 -147
- package/dist/composite-executor.js.map +0 -1
- package/dist/constants.d.ts +0 -36
- package/dist/constants.d.ts.map +0 -1
- package/dist/constants.js +0 -36
- package/dist/constants.js.map +0 -1
- package/dist/http-transport.d.ts +0 -195
- package/dist/http-transport.d.ts.map +0 -1
- package/dist/http-transport.js +0 -760
- package/dist/http-transport.js.map +0 -1
- package/dist/interceptors.d.ts +0 -74
- package/dist/interceptors.d.ts.map +0 -1
- package/dist/interceptors.js +0 -220
- package/dist/interceptors.js.map +0 -1
- package/dist/logger.d.ts +0 -81
- package/dist/logger.d.ts.map +0 -1
- package/dist/logger.js +0 -264
- package/dist/logger.js.map +0 -1
- package/dist/mcp-server.d.ts +0 -110
- package/dist/mcp-server.d.ts.map +0 -1
- package/dist/mcp-server.js +0 -568
- package/dist/mcp-server.js.map +0 -1
- package/dist/metrics.d.ts +0 -86
- package/dist/metrics.d.ts.map +0 -1
- package/dist/metrics.js +0 -229
- package/dist/metrics.js.map +0 -1
- package/dist/openapi-parser.d.ts +0 -35
- package/dist/openapi-parser.d.ts.map +0 -1
- package/dist/openapi-parser.js +0 -160
- package/dist/openapi-parser.js.map +0 -1
- package/dist/profile-loader.d.ts +0 -25
- package/dist/profile-loader.d.ts.map +0 -1
- package/dist/profile-loader.js +0 -134
- package/dist/profile-loader.js.map +0 -1
- package/dist/schema-validator.d.ts +0 -32
- package/dist/schema-validator.d.ts.map +0 -1
- package/dist/schema-validator.js +0 -126
- package/dist/schema-validator.js.map +0 -1
- package/dist/testing/fixtures.d.ts +0 -186
- package/dist/testing/fixtures.d.ts.map +0 -1
- package/dist/testing/fixtures.js +0 -135
- package/dist/testing/fixtures.js.map +0 -1
- package/dist/testing/http-integration.test.d.ts +0 -7
- package/dist/testing/http-integration.test.d.ts.map +0 -1
- package/dist/testing/http-integration.test.js +0 -383
- package/dist/testing/http-integration.test.js.map +0 -1
- package/dist/testing/http-multiuser.test.d.ts +0 -10
- package/dist/testing/http-multiuser.test.d.ts.map +0 -1
- package/dist/testing/http-multiuser.test.js +0 -255
- package/dist/testing/http-multiuser.test.js.map +0 -1
- package/dist/testing/integration.test.d.ts +0 -8
- package/dist/testing/integration.test.d.ts.map +0 -1
- package/dist/testing/integration.test.js +0 -247
- package/dist/testing/integration.test.js.map +0 -1
- package/dist/testing/mock-gitlab-server.d.ts +0 -34
- package/dist/testing/mock-gitlab-server.d.ts.map +0 -1
- package/dist/testing/mock-gitlab-server.js +0 -224
- package/dist/testing/mock-gitlab-server.js.map +0 -1
- package/dist/testing/test-types.d.ts +0 -59
- package/dist/testing/test-types.d.ts.map +0 -1
- package/dist/testing/test-types.js +0 -7
- package/dist/testing/test-types.js.map +0 -1
- package/dist/tool-generator.d.ts +0 -43
- package/dist/tool-generator.d.ts.map +0 -1
- package/dist/tool-generator.js +0 -123
- package/dist/tool-generator.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/dist/types/http-transport.d.ts +0 -39
- package/dist/types/http-transport.d.ts.map +0 -1
- package/dist/types/http-transport.js +0 -8
- package/dist/types/http-transport.js.map +0 -1
- package/dist/types/openapi.d.ts +0 -50
- package/dist/types/openapi.d.ts.map +0 -1
- package/dist/types/openapi.js +0 -9
- package/dist/types/openapi.js.map +0 -1
- package/dist/types/profile.d.ts +0 -76
- package/dist/types/profile.d.ts.map +0 -1
- package/dist/types/profile.js +0 -9
- package/dist/types/profile.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# MCP from OpenAPI
|
|
2
2
|
|
|
3
|
+
[](https://github.com/davidruzicka/mcp4openapi/actions/workflows/ci.yml)
|
|
4
|
+
[](https://codecov.io/gh/davidruzicka/mcp4openapi)
|
|
5
|
+
|
|
3
6
|
Universal MCP server that generates tools from any OpenAPI specification.
|
|
4
7
|
|
|
5
8
|
## Why This Project?
|
|
@@ -48,6 +51,8 @@ More about profiles: [docs/PROFILE-GUIDE.md](https://github.com/davidruzicka/mcp
|
|
|
48
51
|
- **Profiles**: Create JSON configuration transforming API to MCP tools LLM friendly in profiles
|
|
49
52
|
- **Tool Aggregation**: Reduce tool clutter - group related operations in profiles
|
|
50
53
|
- **Composite Actions**: Chain API calls into workflows in profiles
|
|
54
|
+
- **OAuth 2.0**: Browser-based authentication flow for HTTP transport (see [docs/OAUTH.md](./docs/OAUTH.md))
|
|
55
|
+
- **Multi-Auth**: Support multiple auth methods (OAuth + Bearer) with priority-based fallback (see [docs/MULTI-AUTH.md](./docs/MULTI-AUTH.md))
|
|
51
56
|
- **Observability**: Structured logging (console/JSON) with profile-aware token redaction, Prometheus metrics
|
|
52
57
|
|
|
53
58
|
Check example profiles in [profiles/](https://github.com/davidruzicka/mcp4openapi/tree/main/profiles).
|
|
@@ -58,7 +63,7 @@ Check example profiles in [profiles/](https://github.com/davidruzicka/mcp4openap
|
|
|
58
63
|
|
|
59
64
|
**Cursor:**
|
|
60
65
|
- **Project-Specific:** `.cursor/mcp.json` in your project root
|
|
61
|
-
- **Global:** `~/.cursor/mcp.json` in your home directory (platform-dependent; use `⚙` → `Tools & MCP` → `New MCP Server`)
|
|
66
|
+
- **Global:** default `~/.cursor/mcp.json` in your home directory (various, platform-dependent location based on current Cursor profile; use `⚙` → `Tools & MCP` → `New MCP Server`)
|
|
62
67
|
|
|
63
68
|
**VS Code + Copilot:**
|
|
64
69
|
- **Project-Specific:** `.vscode/mcp.json` in your project root
|
|
@@ -76,11 +81,11 @@ Check example profiles in [profiles/](https://github.com/davidruzicka/mcp4openap
|
|
|
76
81
|
|
|
77
82
|
No installation required.
|
|
78
83
|
|
|
79
|
-
|
|
80
|
-
|
|
84
|
+
#### VS Code + Copilot example:
|
|
81
85
|
|
|
82
86
|
Use VS Code dialog to enter access token (recommended for security):
|
|
83
87
|
|
|
88
|
+
Access Token (Bearer) example:
|
|
84
89
|
```json
|
|
85
90
|
{
|
|
86
91
|
"servers": {
|
|
@@ -88,16 +93,16 @@ Use VS Code dialog to enter access token (recommended for security):
|
|
|
88
93
|
"command": "npx",
|
|
89
94
|
"args": ["mcp4openapi"],
|
|
90
95
|
"env": {
|
|
91
|
-
"
|
|
92
|
-
"
|
|
93
|
-
"
|
|
94
|
-
"
|
|
96
|
+
"MCP4_OPENAPI_SPEC_PATH": "path/to/openapi.yaml",
|
|
97
|
+
"MCP4_API_TOKEN": "${input:MCP4_API_TOKEN}",
|
|
98
|
+
"MCP4_API_BASE_URL": "https://api.example.com",
|
|
99
|
+
"MCP4_PROFILE_PATH": "path/to/mcp-profile.json" //optional
|
|
95
100
|
}
|
|
96
101
|
},
|
|
97
102
|
"inputs": [
|
|
98
103
|
{
|
|
99
104
|
"type": "promptString",
|
|
100
|
-
"id": "
|
|
105
|
+
"id": "MCP4_API_TOKEN",
|
|
101
106
|
"description": "API Authorization Token",
|
|
102
107
|
"password": true
|
|
103
108
|
}
|
|
@@ -108,7 +113,7 @@ Use VS Code dialog to enter access token (recommended for security):
|
|
|
108
113
|
|
|
109
114
|
_`inputs` section prompts you for the token when the server starts, so environment variables are not needed._
|
|
110
115
|
|
|
111
|
-
|
|
116
|
+
#### Cursor example:
|
|
112
117
|
|
|
113
118
|
```json
|
|
114
119
|
{
|
|
@@ -117,31 +122,36 @@ _`inputs` section prompts you for the token when the server starts, so environme
|
|
|
117
122
|
"command": "npx",
|
|
118
123
|
"args": ["mcp4openapi"],
|
|
119
124
|
"env": {
|
|
120
|
-
"
|
|
121
|
-
"
|
|
122
|
-
"
|
|
123
|
-
"
|
|
125
|
+
"MCP4_OPENAPI_SPEC_PATH": "path/to/openapi.yaml",
|
|
126
|
+
"MCP4_API_TOKEN": "${env:MCP4_API_TOKEN}",
|
|
127
|
+
"MCP4_API_BASE_URL": "https://api.example.com",
|
|
128
|
+
"MCP4_PROFILE_PATH": "path/to/mcp-profile.json" //optional
|
|
124
129
|
}
|
|
125
130
|
}
|
|
126
131
|
}
|
|
127
132
|
}
|
|
128
133
|
```
|
|
129
134
|
|
|
130
|
-
|
|
135
|
+
##### ⚠️ Prerequisites
|
|
131
136
|
|
|
132
|
-
|
|
137
|
+
- `MCP4_API_TOKEN` with access token (Bearer) must be set.
|
|
138
|
+
|
|
139
|
+
#### Claude Code example:
|
|
133
140
|
|
|
134
141
|
```bash
|
|
135
142
|
claude mcp add --transport stdio mcp4openapi \
|
|
136
|
-
--env
|
|
137
|
-
--env
|
|
138
|
-
--env
|
|
139
|
-
--env
|
|
143
|
+
--env MCP4_API_TOKEN="${MCP4_API_TOKEN}" \
|
|
144
|
+
--env MCP4_OPENAPI_SPEC_PATH=path/to/openapi.yaml \
|
|
145
|
+
--env MCP4_API_BASE_URL=https://api.example.com \
|
|
146
|
+
--env MCP4_PROFILE_PATH=path/to/mcp-profile.json \
|
|
140
147
|
-- npx mcp4openapi
|
|
141
|
-
# expects API_TOKEN environment variable to be set
|
|
142
148
|
```
|
|
143
149
|
|
|
144
|
-
|
|
150
|
+
##### ⚠️ Prerequisites
|
|
151
|
+
|
|
152
|
+
- `MCP4_API_TOKEN` with access token (Bearer) must be set.
|
|
153
|
+
|
|
154
|
+
#### JetBrains IDEs + Copilot example:
|
|
145
155
|
|
|
146
156
|
```json
|
|
147
157
|
{
|
|
@@ -150,16 +160,20 @@ claude mcp add --transport stdio mcp4openapi \
|
|
|
150
160
|
"command": "npx",
|
|
151
161
|
"args": ["mcp4openapi"],
|
|
152
162
|
"env": {
|
|
153
|
-
"
|
|
154
|
-
"
|
|
155
|
-
"
|
|
156
|
-
"
|
|
163
|
+
"MCP4_OPENAPI_SPEC_PATH": "path/to/openapi.yaml",
|
|
164
|
+
"MCP4_API_TOKEN": "${input:api_token}",
|
|
165
|
+
"MCP4_API_BASE_URL": "https://api.example.com",
|
|
166
|
+
"MCP4_PROFILE_PATH": "path/to/mcp-profile.json" //optional
|
|
157
167
|
}
|
|
158
168
|
}
|
|
159
169
|
}
|
|
160
170
|
}
|
|
161
171
|
```
|
|
162
172
|
|
|
173
|
+
##### Note
|
|
174
|
+
|
|
175
|
+
- JetBrains IDEs show ⚠️ right next to `${input:api_token}` to indicate that you need to enter the token manually in the IDE dialog.
|
|
176
|
+
|
|
163
177
|
### Option B: Docker
|
|
164
178
|
|
|
165
179
|
See [docs/DOCKER.md](./docs/DOCKER.md) for build, run, authentication modes, production deployment, and security.
|
|
@@ -180,7 +194,7 @@ npm run build
|
|
|
180
194
|
|
|
181
195
|
**3. Configure:**
|
|
182
196
|
```bash
|
|
183
|
-
cp
|
|
197
|
+
cp env.example .env
|
|
184
198
|
# Edit .env with your settings
|
|
185
199
|
```
|
|
186
200
|
|
|
@@ -260,60 +274,61 @@ echo 'export NODE_EXTRA_CA_CERTS="$HOME/ca-bundle.pem"' >> $HOME/.bash_profile
|
|
|
260
274
|
## Environment Variables
|
|
261
275
|
|
|
262
276
|
### Required
|
|
263
|
-
- `
|
|
264
|
-
- `
|
|
277
|
+
- `MCP4_OPENAPI_SPEC_PATH`: Path to OpenAPI spec (YAML/JSON)
|
|
278
|
+
- `MCP4_API_TOKEN`: API token (default env var name; customizable via `MCP4_AUTH_ENV_VAR`)
|
|
265
279
|
- **Required for stdio** mode with authenticated APIs
|
|
266
|
-
- **Optional for HTTP** mode with per-session tokens
|
|
267
|
-
- When using no profile mode, auth type is auto-detected from OpenAPI `security` schemes
|
|
280
|
+
- **Optional for HTTP** mode with per-session tokens sent in HTTP headers
|
|
281
|
+
- When using no profile mode, auth type is auto-detected from OpenAPI `security` schemes if present
|
|
268
282
|
|
|
269
283
|
### Optional - Core
|
|
270
|
-
- `
|
|
271
|
-
- `
|
|
272
|
-
- `
|
|
284
|
+
- `MCP4_PROFILE_PATH`: Profile JSON path (default: auto-generate tools from OpenAPI spec; warning logged if tool exceeds 60 parameters)
|
|
285
|
+
- `MCP4_TRANSPORT`: `stdio` (default) or `http`
|
|
286
|
+
- `MCP4_API_BASE_URL`: Override OpenAPI server URL
|
|
273
287
|
|
|
274
288
|
### Optional - Authentication (No-Profile Mode)
|
|
275
289
|
When running without a profile, authentication is automatically configured from OpenAPI spec's `security` schemes:
|
|
276
290
|
|
|
277
|
-
- `
|
|
291
|
+
- `MCP4_AUTH_ENV_VAR`: Environment variable name for auth token (default: `MCP4_API_TOKEN`)
|
|
278
292
|
|
|
279
293
|
**Supported OpenAPI Security Types:**
|
|
280
294
|
- **Bearer Token** (`http` with `scheme: bearer`): Uses `Authorization: Bearer <token>` header
|
|
281
295
|
- **API Key in Header** (`apiKey` with `in: header`): Uses custom header (e.g., `X-API-Key: <token>`)
|
|
282
296
|
- **API Key in Query** (`apiKey` with `in: query`): Adds token to query string (e.g., `?api_key=<token>`)
|
|
283
|
-
- **OAuth2/OpenID Connect**: Mapped to bearer token authentication
|
|
297
|
+
- **OAuth2/OpenID Connect**: Mapped to bearer token authentication (profile mode only)
|
|
284
298
|
- **Public APIs**: No authentication if OpenAPI spec has no `security` defined
|
|
285
299
|
|
|
286
|
-
**Example**: Use custom env var for GitLab token:
|
|
300
|
+
**Example**: Use custom env var for GitLab own instance token:
|
|
287
301
|
```bash
|
|
288
|
-
export
|
|
289
|
-
export
|
|
290
|
-
export
|
|
302
|
+
export MCP4_API_TOKEN=glpat-xxxxxxxxxxxx
|
|
303
|
+
export MCP4_API_BASE_URL=https://gitlab.example.com/api/v4
|
|
304
|
+
export MCP4_OPENAPI_SPEC_PATH=profiles/gitlab/openapi.yaml
|
|
305
|
+
export MCP4_PROFILE_PATH=profiles/gitlab/developer-profile.json
|
|
291
306
|
npm start
|
|
292
307
|
```
|
|
293
308
|
|
|
294
309
|
#### Force Authentication Override
|
|
295
310
|
For APIs with incomplete OpenAPI specs (missing `security` definition but requiring authentication):
|
|
296
311
|
|
|
297
|
-
- `
|
|
298
|
-
- `
|
|
299
|
-
- `
|
|
300
|
-
- `
|
|
312
|
+
- `MCP4_AUTH_FORCE`: Enable force auth override (`true|false`, default: `false`)
|
|
313
|
+
- `MCP4_AUTH_TYPE`: Authentication type: `bearer|query|custom-header` (default: `bearer`)
|
|
314
|
+
- `MCP4_AUTH_HEADER_NAME`: Custom header name (required when `MCP4_AUTH_TYPE=custom-header`)
|
|
315
|
+
- `MCP4_AUTH_QUERY_PARAM`: Query parameter name (required when `MCP4_AUTH_TYPE=query`)
|
|
301
316
|
|
|
302
317
|
**Example**: Force bearer authentication for incomplete spec:
|
|
303
318
|
```bash
|
|
304
|
-
export
|
|
305
|
-
export
|
|
306
|
-
export
|
|
307
|
-
export
|
|
319
|
+
export MCP4_AUTH_FORCE=true
|
|
320
|
+
export MCP4_AUTH_TYPE=bearer
|
|
321
|
+
export MCP4_API_TOKEN=your_token_here
|
|
322
|
+
export MCP4_OPENAPI_SPEC_PATH=./incomplete-spec.yaml
|
|
308
323
|
npm start
|
|
309
324
|
```
|
|
310
325
|
|
|
311
326
|
**Example**: Force custom header authentication:
|
|
312
327
|
```bash
|
|
313
|
-
export
|
|
314
|
-
export
|
|
315
|
-
export
|
|
316
|
-
export
|
|
328
|
+
export MCP4_AUTH_FORCE=true
|
|
329
|
+
export MCP4_AUTH_TYPE=custom-header
|
|
330
|
+
export MCP4_AUTH_HEADER_NAME=X-API-Key
|
|
331
|
+
export MCP4_API_TOKEN=your_api_key_here
|
|
317
332
|
npm start
|
|
318
333
|
```
|
|
319
334
|
|
|
@@ -322,21 +337,21 @@ npm start
|
|
|
322
337
|
### Optional - Tool Name Shortening
|
|
323
338
|
When generating tools from OpenAPI without a profile, long operation IDs may exceed limits. Configure automatic shortening:
|
|
324
339
|
|
|
325
|
-
- `
|
|
326
|
-
- `
|
|
340
|
+
- `MCP4_TOOLNAME_MAX`: Maximum tool name length (default: `45`)
|
|
341
|
+
- `MCP4_TOOLNAME_STRATEGY`: Shortening strategy: `none|balanced|iterative|hash|auto` (default: `none`)
|
|
327
342
|
- `none`: No shortening, only warnings
|
|
328
343
|
- `balanced`: Add parts by importance until unique & meaningful (recommended)
|
|
329
344
|
- `iterative`: Progressively remove noise until under limit (conservative)
|
|
330
345
|
- `hash`: Use verb + resource + hash for guaranteed uniqueness
|
|
331
346
|
- `auto`: Try strategies in order: balanced → iterative → hash
|
|
332
|
-
- `
|
|
333
|
-
- `
|
|
334
|
-
- `
|
|
347
|
+
- `MCP4_TOOLNAME_WARN_ONLY`: Only warn, don't shorten: `true|false` (default: `true`)
|
|
348
|
+
- `MCP4_TOOLNAME_MIN_PARTS`: Minimum parts for balanced strategy (default: `3`)
|
|
349
|
+
- `MCP4_TOOLNAME_MIN_LENGTH`: Minimum length in chars for balanced strategy (default: `20`)
|
|
335
350
|
|
|
336
351
|
**Example**: Apply balanced shortening (recommended):
|
|
337
352
|
```bash
|
|
338
|
-
export
|
|
339
|
-
export
|
|
353
|
+
export MCP4_TOOLNAME_STRATEGY=balanced
|
|
354
|
+
export MCP4_TOOLNAME_WARN_ONLY=false
|
|
340
355
|
```
|
|
341
356
|
|
|
342
357
|
**Result** for balanced strategy:
|
|
@@ -347,56 +362,80 @@ deleteApiV4ProjectsIdAlertManagementAlertsAlertIidMetricImagesMetricImageId
|
|
|
347
362
|
→ delete_alert_management_image (26 chars)
|
|
348
363
|
```
|
|
349
364
|
|
|
350
|
-
**Example**: Apply iterative shortening with 30 char limit:
|
|
365
|
+
**Example 2**: Apply iterative shortening with 30 char limit:
|
|
351
366
|
```bash
|
|
352
|
-
export
|
|
353
|
-
export
|
|
354
|
-
export
|
|
367
|
+
export MCP4_TOOLNAME_STRATEGY=iterative
|
|
368
|
+
export MCP4_TOOLNAME_WARN_ONLY=false
|
|
369
|
+
export MCP4_TOOLNAME_MAX=30
|
|
355
370
|
```
|
|
356
371
|
|
|
357
372
|
### Optional - HTTP Transport
|
|
358
|
-
- `
|
|
359
|
-
- `
|
|
360
|
-
- `
|
|
361
|
-
- `
|
|
362
|
-
- `
|
|
363
|
-
- `
|
|
364
|
-
- `TOKEN_MAX_LENGTH`: Maximum token length in characters (default: `1000`)
|
|
373
|
+
- `MCP4_HOST`: Bind address (default: `127.0.0.1`)
|
|
374
|
+
- `MCP4_PORT`: Port (default: `3003`)
|
|
375
|
+
- `MCP4_ALLOWED_ORIGINS`: Comma-separated origins (supports exact, wildcard `*.domain.com`, CIDR `192.168.1.0/24`)
|
|
376
|
+
- `MCP4_SESSION_TIMEOUT_MS`: Session timeout (default: `1800000` = 30min)
|
|
377
|
+
- `MCP4_HEARTBEAT_ENABLED`, `MCP4_HEARTBEAT_INTERVAL_MS`: SSE heartbeat settings
|
|
378
|
+
- `MCP4_TOKEN_MAX_LENGTH`: Maximum token length in characters (default: `1000`)
|
|
365
379
|
|
|
366
|
-
|
|
367
|
-
Protect against DoS attacks by limiting request rates per endpoint:
|
|
380
|
+
See [docs/HTTP-TRANSPORT.md](./docs/HTTP-TRANSPORT.md) for detailed HTTP transport configuration.
|
|
368
381
|
|
|
369
|
-
|
|
370
|
-
- `HTTP_RATE_LIMIT_WINDOW_MS`: Rate limit window in milliseconds (default: `60000` = 1 minute)
|
|
371
|
-
- `HTTP_RATE_LIMIT_MAX_REQUESTS`: Max requests per window for `/mcp`, `/sse`, `/health` (default: `100`)
|
|
372
|
-
- `HTTP_RATE_LIMIT_METRICS_MAX`: Max requests per window for `/metrics` (default: `10`)
|
|
382
|
+
#### SSL/TLS Configuration
|
|
373
383
|
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
384
|
+
- `MCP4_SSL_CERT_FILE`, `MCP4_SSL_KEY_FILE`: SSL certificate and key (PEM format)
|
|
385
|
+
|
|
386
|
+
**When both are set, server automatically starts in HTTPS mode.**
|
|
387
|
+
|
|
388
|
+
See [docs/OAUTH.md](./docs/OAUTH.md#ssltls-support) for SSL configuration with OAuth.
|
|
389
|
+
|
|
390
|
+
#### OAuth 2.0 Configuration
|
|
380
391
|
|
|
381
|
-
**
|
|
392
|
+
**Autodiscovery** - Just provide DCR (Dynamic Client Registration) credentials, API base URL and OAuth callback:
|
|
382
393
|
```bash
|
|
383
|
-
export
|
|
394
|
+
export MCP4_API_BASE_URL=https://www.gitlab.com/api/v4
|
|
395
|
+
export MCP4_OAUTH_CLIENT_ID=your_dcr_client_id
|
|
396
|
+
export MCP4_OAUTH_CLIENT_SECRET=your_dcr_client_secret
|
|
397
|
+
export MCP4_OAUTH_REDIRECT_URI=http://mcp.local:3003/oauth/callback
|
|
398
|
+
# OAuth endpoints are automatically discovered from API base URL
|
|
384
399
|
```
|
|
400
|
+
**Note**: DCR and OAuth callback must be registered with the OAuth provider.
|
|
385
401
|
|
|
386
|
-
**
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
402
|
+
**Configuration priority:**
|
|
403
|
+
1. **Explicit URLs**: `MCP4_OAUTH_AUTHORIZATION_URL`, `MCP4_OAUTH_TOKEN_URL` (highest priority)
|
|
404
|
+
2. **Explicit issuer**: `MCP4_OAUTH_ISSUER` (auto-derives standard OAuth paths)
|
|
405
|
+
3. **Autodiscovery**: From `MCP4_API_BASE_URL` (fetches RFC 8414 metadata or uses standard paths)
|
|
406
|
+
|
|
407
|
+
**Environment variables:**
|
|
408
|
+
- `MCP4_OAUTH_CLIENT_ID`, `MCP4_OAUTH_CLIENT_SECRET`: OAuth client credentials (required)
|
|
409
|
+
- `MCP4_OAUTH_REDIRECT_URI`: OAuth redirect URI (required, must match registered URI)
|
|
410
|
+
- `MCP4_OAUTH_ISSUER`: OAuth provider issuer URL (optional, auto-derives endpoints)
|
|
411
|
+
- `MCP4_OAUTH_AUTHORIZATION_URL`, `MCP4_OAUTH_TOKEN_URL`: OAuth endpoints (optional, for non-standard paths)
|
|
412
|
+
|
|
413
|
+
See [docs/OAUTH.md](./docs/OAUTH.md) for complete setup guide including OAuth application registration, SSL configuration, and troubleshooting.
|
|
414
|
+
|
|
415
|
+
#### HTTP Rate Limiting (Security)
|
|
416
|
+
|
|
417
|
+
- `MCP4_HTTP_RATE_LIMIT_ENABLED`: Enable rate limiting (default: `true`)
|
|
418
|
+
- `MCP4_HTTP_RATE_LIMIT_WINDOW_MS`: Rate limit window (default: `60000` = 1 minute)
|
|
419
|
+
- `MCP4_HTTP_RATE_LIMIT_MAX_REQUESTS`: Max requests for MCP endpoints (default: `100`)
|
|
420
|
+
- `MCP4_HTTP_RATE_LIMIT_METRICS_MAX`: Max requests for `/metrics` (default: `10`)
|
|
421
|
+
|
|
422
|
+
**OAuth Rate Limiting** (stricter limits for OAuth endpoints):
|
|
423
|
+
- `MCP4_OAUTH_RATE_LIMIT_MAX`: Max OAuth requests per window (default: `10`)
|
|
424
|
+
- `MCP4_OAUTH_RATE_LIMIT_WINDOW_MS`: OAuth rate limit window (default: `600000` = 10 minutes)
|
|
425
|
+
|
|
426
|
+
**Configuration Priority**: Profile > Environment variables > Defaults
|
|
427
|
+
|
|
428
|
+
**Defaults**:
|
|
429
|
+
- 100 requests/minute for MCP endpoints, 10 requests/minute for metrics
|
|
430
|
+
- 10 requests/10 minutes for OAuth endpoints (`/oauth/authorize`, `/oauth/token`, `/oauth/callback`)
|
|
431
|
+
|
|
432
|
+
Returns `429 Too Many Requests` when exceeded.
|
|
394
433
|
|
|
395
434
|
### Optional - Observability
|
|
396
|
-
- `
|
|
397
|
-
- `
|
|
398
|
-
- `
|
|
399
|
-
- `
|
|
435
|
+
- `MCP4_LOG_LEVEL`: `debug`, `info` (default), `warn`, `error`
|
|
436
|
+
- `MCP4_LOG_FORMAT`: `console` (default) or `json`
|
|
437
|
+
- `MCP4_METRICS_ENABLED`: Enable Prometheus metrics (default: `false`)
|
|
438
|
+
- `MCP4_METRICS_PATH`: Metrics endpoint (default: `/metrics`)
|
|
400
439
|
|
|
401
440
|
**Security Note**:
|
|
402
441
|
- Sensitive auth tokens are automatically redacted from logs based on your profile's auth configuration (bearer, query, or custom-header)
|
|
@@ -467,6 +506,9 @@ npm test
|
|
|
467
506
|
- **[docs/EXAMPLE-GITLAB.md](./docs/EXAMPLE-GITLAB.md)** - Complete GitLab API example with curl commands
|
|
468
507
|
- **[docs/PROFILE-GUIDE.md](./docs/PROFILE-GUIDE.md)** - Guide for creating custom profiles
|
|
469
508
|
- **[docs/HTTP-TRANSPORT.md](./docs/HTTP-TRANSPORT.md)** - HTTP transport setup and usage
|
|
509
|
+
- **[docs/OAUTH.md](./docs/OAUTH.md)** - OAuth 2.0 authentication setup guide
|
|
510
|
+
- **[docs/MULTI-AUTH.md](./docs/MULTI-AUTH.md)** - Multi-auth support: OAuth + Bearer tokens
|
|
511
|
+
- **[docs/DEPLOYMENT-K8S-OAUTH.md](./docs/DEPLOYMENT-K8S-OAUTH.md)** - Production deployment: Kubernetes + OAuth
|
|
470
512
|
- **[docs/DOCKER.md](./docs/DOCKER.md)** - Docker deployment guide
|
|
471
513
|
- **`profiles/`** - Example profiles for OpenAPI specs
|
|
472
514
|
- **`profile-schema.json`** - JSON Schema for IDE autocomplete
|
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
import fs from 'fs/promises';
|
|
9
9
|
import path from 'path';
|
|
10
10
|
import { fileURLToPath } from 'url';
|
|
11
|
-
import { ProfileLoader } from '../
|
|
12
|
-
import { OpenAPIParser } from '../
|
|
13
|
-
import { ToolGenerator } from '../
|
|
11
|
+
import { ProfileLoader } from '../src/profile-loader.js';
|
|
12
|
+
import { OpenAPIParser } from '../src/openapi-parser.js';
|
|
13
|
+
import { ToolGenerator } from '../src/tool-generator.js';
|
|
14
14
|
const __filename = fileURLToPath(import.meta.url);
|
|
15
15
|
const __dirname = path.dirname(__filename);
|
|
16
16
|
async function validateProfile(profilePath, specPath) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-profile.js","sourceRoot":"","sources":["../../scripts/validate-profile.ts"],"names":[],"mappings":";AAEA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"validate-profile.js","sourceRoot":"","sources":["../../scripts/validate-profile.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,7 +22,8 @@ export interface StepError {
|
|
|
22
22
|
export declare class CompositeExecutor {
|
|
23
23
|
private parser;
|
|
24
24
|
private httpClient?;
|
|
25
|
-
|
|
25
|
+
private parameterAliases;
|
|
26
|
+
constructor(parser: OpenAPIParser, httpClient?: HttpClient | undefined, parameterAliases?: Record<string, string[]>);
|
|
26
27
|
/**
|
|
27
28
|
* Execute a series of API calls and merge results
|
|
28
29
|
*
|
|
@@ -53,6 +54,7 @@ export declare class CompositeExecutor {
|
|
|
53
54
|
* Resolve path template with actual values
|
|
54
55
|
*
|
|
55
56
|
* Example: "/projects/{id}" + {id: "123"} => "/projects/123"
|
|
57
|
+
* Supports parameter_aliases: {project_id: "123"} can map to {id} if configured
|
|
56
58
|
*/
|
|
57
59
|
private resolvePath;
|
|
58
60
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composite-executor.d.ts","sourceRoot":"","sources":["../../src/composite-executor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,iBAAiB;IAE1B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"composite-executor.d.ts","sourceRoot":"","sources":["../../src/composite-executor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,iBAAiB;IAE1B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU,CAAC;IACnB,OAAO,CAAC,gBAAgB;gBAFhB,MAAM,EAAE,aAAa,EACrB,UAAU,CAAC,EAAE,UAAU,YAAA,EACvB,gBAAgB,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAM;IAGzD;;;;;;;;OAQG;IACG,OAAO,CACX,KAAK,EAAE,aAAa,EAAE,EACtB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,YAAY,GAAE,OAAe,EAC7B,UAAU,CAAC,EAAE,UAAU,GACtB,OAAO,CAAC,eAAe,CAAC;IA+D3B;;;;;;;;OAQG;YACW,WAAW;IA6BzB;;;;OAIG;IACH,OAAO,CAAC,SAAS;IAQjB;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IAsBnB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAkB1B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,WAAW;CAwBpB"}
|
|
@@ -8,9 +8,11 @@ import { DAGExecutor } from './dag-executor.js';
|
|
|
8
8
|
export class CompositeExecutor {
|
|
9
9
|
parser;
|
|
10
10
|
httpClient;
|
|
11
|
-
|
|
11
|
+
parameterAliases;
|
|
12
|
+
constructor(parser, httpClient, parameterAliases = {}) {
|
|
12
13
|
this.parser = parser;
|
|
13
14
|
this.httpClient = httpClient;
|
|
15
|
+
this.parameterAliases = parameterAliases;
|
|
14
16
|
}
|
|
15
17
|
/**
|
|
16
18
|
* Execute a series of API calls and merge results
|
|
@@ -113,14 +115,23 @@ export class CompositeExecutor {
|
|
|
113
115
|
* Resolve path template with actual values
|
|
114
116
|
*
|
|
115
117
|
* Example: "/projects/{id}" + {id: "123"} => "/projects/123"
|
|
118
|
+
* Supports parameter_aliases: {project_id: "123"} can map to {id} if configured
|
|
116
119
|
*/
|
|
117
120
|
resolvePath(template, args) {
|
|
118
121
|
return template.replace(/\{(\w+)\}/g, (_, key) => {
|
|
119
|
-
|
|
120
|
-
if (
|
|
121
|
-
|
|
122
|
+
// Try direct match first
|
|
123
|
+
if (args[key] !== undefined) {
|
|
124
|
+
return String(args[key]);
|
|
122
125
|
}
|
|
123
|
-
|
|
126
|
+
// Try aliases from profile
|
|
127
|
+
const possibleAliases = this.parameterAliases[key] || [];
|
|
128
|
+
for (const alias of possibleAliases) {
|
|
129
|
+
if (args[alias] !== undefined) {
|
|
130
|
+
return String(args[alias]);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
throw new Error(`Missing path parameter: ${key}` +
|
|
134
|
+
(possibleAliases.length > 0 ? `. Tried aliases: ${possibleAliases.join(', ')}` : ''));
|
|
124
135
|
});
|
|
125
136
|
}
|
|
126
137
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composite-executor.js","sourceRoot":"","sources":["../../src/composite-executor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAAE,WAAW,EAAuB,MAAM,mBAAmB,CAAC;AAgBrE,MAAM,OAAO,iBAAiB;IAElB;IACA;
|
|
1
|
+
{"version":3,"file":"composite-executor.js","sourceRoot":"","sources":["../../src/composite-executor.ts"],"names":[],"mappings":"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"}
|
package/dist/src/constants.d.ts
CHANGED
|
@@ -22,15 +22,64 @@ export declare const TIME: {
|
|
|
22
22
|
*/
|
|
23
23
|
export declare const HTTP_STATUS: {
|
|
24
24
|
readonly OK: 200;
|
|
25
|
+
readonly CREATED: 201;
|
|
26
|
+
readonly ACCEPTED: 202;
|
|
27
|
+
readonly FOUND: 302;
|
|
25
28
|
readonly MULTIPLE_CHOICES: 300;
|
|
26
29
|
readonly BAD_REQUEST: 400;
|
|
27
30
|
readonly UNAUTHORIZED: 401;
|
|
28
31
|
readonly FORBIDDEN: 403;
|
|
29
32
|
readonly NOT_FOUND: 404;
|
|
33
|
+
readonly METHOD_NOT_ALLOWED: 405;
|
|
34
|
+
readonly NOT_ACCEPTABLE: 406;
|
|
30
35
|
readonly TOO_MANY_REQUESTS: 429;
|
|
31
36
|
readonly INTERNAL_SERVER_ERROR: 500;
|
|
32
37
|
readonly BAD_GATEWAY: 502;
|
|
33
38
|
readonly SERVICE_UNAVAILABLE: 503;
|
|
34
39
|
readonly GATEWAY_TIMEOUT: 504;
|
|
35
40
|
};
|
|
41
|
+
/**
|
|
42
|
+
* MIME type constants
|
|
43
|
+
*
|
|
44
|
+
* Why: Prevents typos in content-type headers and ensures consistency.
|
|
45
|
+
*/
|
|
46
|
+
export declare const MIME_TYPES: {
|
|
47
|
+
readonly JSON: "application/json";
|
|
48
|
+
readonly EVENT_STREAM: "text/event-stream";
|
|
49
|
+
readonly FORM_URLENCODED: "application/x-www-form-urlencoded";
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* OAuth and Well-Known URL paths
|
|
53
|
+
*
|
|
54
|
+
* Why: Centralized OAuth-related paths for consistency and easy updates.
|
|
55
|
+
*/
|
|
56
|
+
export declare const OAUTH_PATHS: {
|
|
57
|
+
readonly AUTHORIZE: "/oauth/authorize";
|
|
58
|
+
readonly TOKEN: "/oauth/token";
|
|
59
|
+
readonly CALLBACK: "/oauth/callback";
|
|
60
|
+
readonly REGISTER: "/oauth/register";
|
|
61
|
+
readonly WELL_KNOWN_AUTHORIZATION_SERVER: "/.well-known/oauth-authorization-server";
|
|
62
|
+
readonly WELL_KNOWN_PROTECTED_RESOURCE: "/.well-known/oauth-protected-resource/mcp";
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Default timeout and interval values (in milliseconds)
|
|
66
|
+
*
|
|
67
|
+
* Why: Centralized timing configuration for sessions, heartbeats, and cleanup.
|
|
68
|
+
*/
|
|
69
|
+
export declare const TIMEOUTS: {
|
|
70
|
+
readonly SESSION_TIMEOUT_MS: number;
|
|
71
|
+
readonly HEARTBEAT_INTERVAL_MS: number;
|
|
72
|
+
readonly RATE_LIMIT_WINDOW_MS: 60000;
|
|
73
|
+
readonly CLEANUP_INTERVAL_MS: 60000;
|
|
74
|
+
};
|
|
75
|
+
/**
|
|
76
|
+
* OAuth rate limiting defaults
|
|
77
|
+
*
|
|
78
|
+
* Why: Centralized OAuth rate limiting configuration to prevent duplication
|
|
79
|
+
* and ensure consistency across mcp-server.ts and http-transport.ts
|
|
80
|
+
*/
|
|
81
|
+
export declare const OAUTH_RATE_LIMIT: {
|
|
82
|
+
readonly MAX_REQUESTS: 10;
|
|
83
|
+
readonly WINDOW_MS: number;
|
|
84
|
+
};
|
|
36
85
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,eAAO,MAAM,IAAI;;;;;;CAMP,CAAC;AAEX;;;;;GAKG;AACH,eAAO,MAAM,WAAW
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,eAAO,MAAM,IAAI;;;;;;CAMP,CAAC;AAEX;;;;;GAKG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;CAiBd,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,UAAU;;;;CAIb,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,WAAW;;;;;;;CAOd,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,QAAQ;;;;;CAKX,CAAC;AAEX;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB;;;CAGnB,CAAC"}
|