mcp4openapi 0.1.0 → 0.2.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/README.md +134 -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 +50 -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 +32 -0
- package/dist/src/testing/fixtures.d.ts.map +1 -1
- package/dist/src/testing/fixtures.js +26 -0
- package/dist/src/testing/fixtures.js.map +1 -1
- package/dist/src/testing/mock-gitlab-server.d.ts.map +1 -1
- package/dist/src/testing/mock-gitlab-server.js +131 -1
- 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 +7 -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
|
@@ -48,6 +48,8 @@ More about profiles: [docs/PROFILE-GUIDE.md](https://github.com/davidruzicka/mcp
|
|
|
48
48
|
- **Profiles**: Create JSON configuration transforming API to MCP tools LLM friendly in profiles
|
|
49
49
|
- **Tool Aggregation**: Reduce tool clutter - group related operations in profiles
|
|
50
50
|
- **Composite Actions**: Chain API calls into workflows in profiles
|
|
51
|
+
- **OAuth 2.0**: Browser-based authentication flow for HTTP transport (see [docs/OAUTH.md](./docs/OAUTH.md))
|
|
52
|
+
- **Multi-Auth**: Support multiple auth methods (OAuth + Bearer) with priority-based fallback (see [docs/MULTI-AUTH.md](./docs/MULTI-AUTH.md))
|
|
51
53
|
- **Observability**: Structured logging (console/JSON) with profile-aware token redaction, Prometheus metrics
|
|
52
54
|
|
|
53
55
|
Check example profiles in [profiles/](https://github.com/davidruzicka/mcp4openapi/tree/main/profiles).
|
|
@@ -58,7 +60,7 @@ Check example profiles in [profiles/](https://github.com/davidruzicka/mcp4openap
|
|
|
58
60
|
|
|
59
61
|
**Cursor:**
|
|
60
62
|
- **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`)
|
|
63
|
+
- **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
64
|
|
|
63
65
|
**VS Code + Copilot:**
|
|
64
66
|
- **Project-Specific:** `.vscode/mcp.json` in your project root
|
|
@@ -76,11 +78,11 @@ Check example profiles in [profiles/](https://github.com/davidruzicka/mcp4openap
|
|
|
76
78
|
|
|
77
79
|
No installation required.
|
|
78
80
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
+
#### VS Code + Copilot example:
|
|
81
82
|
|
|
82
83
|
Use VS Code dialog to enter access token (recommended for security):
|
|
83
84
|
|
|
85
|
+
Access Token (Bearer) example:
|
|
84
86
|
```json
|
|
85
87
|
{
|
|
86
88
|
"servers": {
|
|
@@ -88,16 +90,16 @@ Use VS Code dialog to enter access token (recommended for security):
|
|
|
88
90
|
"command": "npx",
|
|
89
91
|
"args": ["mcp4openapi"],
|
|
90
92
|
"env": {
|
|
91
|
-
"
|
|
92
|
-
"
|
|
93
|
-
"
|
|
94
|
-
"
|
|
93
|
+
"MCP4_OPENAPI_SPEC_PATH": "path/to/openapi.yaml",
|
|
94
|
+
"MCP4_API_TOKEN": "${input:MCP4_API_TOKEN}",
|
|
95
|
+
"MCP4_API_BASE_URL": "https://api.example.com",
|
|
96
|
+
"MCP4_PROFILE_PATH": "path/to/mcp-profile.json" //optional
|
|
95
97
|
}
|
|
96
98
|
},
|
|
97
99
|
"inputs": [
|
|
98
100
|
{
|
|
99
101
|
"type": "promptString",
|
|
100
|
-
"id": "
|
|
102
|
+
"id": "MCP4_API_TOKEN",
|
|
101
103
|
"description": "API Authorization Token",
|
|
102
104
|
"password": true
|
|
103
105
|
}
|
|
@@ -108,7 +110,7 @@ Use VS Code dialog to enter access token (recommended for security):
|
|
|
108
110
|
|
|
109
111
|
_`inputs` section prompts you for the token when the server starts, so environment variables are not needed._
|
|
110
112
|
|
|
111
|
-
|
|
113
|
+
#### Cursor example:
|
|
112
114
|
|
|
113
115
|
```json
|
|
114
116
|
{
|
|
@@ -117,31 +119,36 @@ _`inputs` section prompts you for the token when the server starts, so environme
|
|
|
117
119
|
"command": "npx",
|
|
118
120
|
"args": ["mcp4openapi"],
|
|
119
121
|
"env": {
|
|
120
|
-
"
|
|
121
|
-
"
|
|
122
|
-
"
|
|
123
|
-
"
|
|
122
|
+
"MCP4_OPENAPI_SPEC_PATH": "path/to/openapi.yaml",
|
|
123
|
+
"MCP4_API_TOKEN": "${env:MCP4_API_TOKEN}",
|
|
124
|
+
"MCP4_API_BASE_URL": "https://api.example.com",
|
|
125
|
+
"MCP4_PROFILE_PATH": "path/to/mcp-profile.json" //optional
|
|
124
126
|
}
|
|
125
127
|
}
|
|
126
128
|
}
|
|
127
129
|
}
|
|
128
130
|
```
|
|
129
131
|
|
|
130
|
-
|
|
132
|
+
##### ⚠️ Prerequisites
|
|
133
|
+
|
|
134
|
+
- `MCP4_API_TOKEN` with access token (Bearer) must be set.
|
|
131
135
|
|
|
132
|
-
|
|
136
|
+
#### Claude Code example:
|
|
133
137
|
|
|
134
138
|
```bash
|
|
135
139
|
claude mcp add --transport stdio mcp4openapi \
|
|
136
|
-
--env
|
|
137
|
-
--env
|
|
138
|
-
--env
|
|
139
|
-
--env
|
|
140
|
+
--env MCP4_API_TOKEN="${MCP4_API_TOKEN}" \
|
|
141
|
+
--env MCP4_OPENAPI_SPEC_PATH=path/to/openapi.yaml \
|
|
142
|
+
--env MCP4_API_BASE_URL=https://api.example.com \
|
|
143
|
+
--env MCP4_PROFILE_PATH=path/to/mcp-profile.json \
|
|
140
144
|
-- npx mcp4openapi
|
|
141
|
-
# expects API_TOKEN environment variable to be set
|
|
142
145
|
```
|
|
143
146
|
|
|
144
|
-
|
|
147
|
+
##### ⚠️ Prerequisites
|
|
148
|
+
|
|
149
|
+
- `MCP4_API_TOKEN` with access token (Bearer) must be set.
|
|
150
|
+
|
|
151
|
+
#### JetBrains IDEs + Copilot example:
|
|
145
152
|
|
|
146
153
|
```json
|
|
147
154
|
{
|
|
@@ -150,16 +157,20 @@ claude mcp add --transport stdio mcp4openapi \
|
|
|
150
157
|
"command": "npx",
|
|
151
158
|
"args": ["mcp4openapi"],
|
|
152
159
|
"env": {
|
|
153
|
-
"
|
|
154
|
-
"
|
|
155
|
-
"
|
|
156
|
-
"
|
|
160
|
+
"MCP4_OPENAPI_SPEC_PATH": "path/to/openapi.yaml",
|
|
161
|
+
"MCP4_API_TOKEN": "${input:api_token}",
|
|
162
|
+
"MCP4_API_BASE_URL": "https://api.example.com",
|
|
163
|
+
"MCP4_PROFILE_PATH": "path/to/mcp-profile.json" //optional
|
|
157
164
|
}
|
|
158
165
|
}
|
|
159
166
|
}
|
|
160
167
|
}
|
|
161
168
|
```
|
|
162
169
|
|
|
170
|
+
##### Note
|
|
171
|
+
|
|
172
|
+
- JetBrains IDEs show ⚠️ right next to `${input:api_token}` to indicate that you need to enter the token manually in the IDE dialog.
|
|
173
|
+
|
|
163
174
|
### Option B: Docker
|
|
164
175
|
|
|
165
176
|
See [docs/DOCKER.md](./docs/DOCKER.md) for build, run, authentication modes, production deployment, and security.
|
|
@@ -180,7 +191,7 @@ npm run build
|
|
|
180
191
|
|
|
181
192
|
**3. Configure:**
|
|
182
193
|
```bash
|
|
183
|
-
cp
|
|
194
|
+
cp env.example .env
|
|
184
195
|
# Edit .env with your settings
|
|
185
196
|
```
|
|
186
197
|
|
|
@@ -260,60 +271,61 @@ echo 'export NODE_EXTRA_CA_CERTS="$HOME/ca-bundle.pem"' >> $HOME/.bash_profile
|
|
|
260
271
|
## Environment Variables
|
|
261
272
|
|
|
262
273
|
### Required
|
|
263
|
-
- `
|
|
264
|
-
- `
|
|
274
|
+
- `MCP4_OPENAPI_SPEC_PATH`: Path to OpenAPI spec (YAML/JSON)
|
|
275
|
+
- `MCP4_API_TOKEN`: API token (default env var name; customizable via `MCP4_AUTH_ENV_VAR`)
|
|
265
276
|
- **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
|
|
277
|
+
- **Optional for HTTP** mode with per-session tokens sent in HTTP headers
|
|
278
|
+
- When using no profile mode, auth type is auto-detected from OpenAPI `security` schemes if present
|
|
268
279
|
|
|
269
280
|
### Optional - Core
|
|
270
|
-
- `
|
|
271
|
-
- `
|
|
272
|
-
- `
|
|
281
|
+
- `MCP4_PROFILE_PATH`: Profile JSON path (default: auto-generate tools from OpenAPI spec; warning logged if tool exceeds 60 parameters)
|
|
282
|
+
- `MCP4_TRANSPORT`: `stdio` (default) or `http`
|
|
283
|
+
- `MCP4_API_BASE_URL`: Override OpenAPI server URL
|
|
273
284
|
|
|
274
285
|
### Optional - Authentication (No-Profile Mode)
|
|
275
286
|
When running without a profile, authentication is automatically configured from OpenAPI spec's `security` schemes:
|
|
276
287
|
|
|
277
|
-
- `
|
|
288
|
+
- `MCP4_AUTH_ENV_VAR`: Environment variable name for auth token (default: `MCP4_API_TOKEN`)
|
|
278
289
|
|
|
279
290
|
**Supported OpenAPI Security Types:**
|
|
280
291
|
- **Bearer Token** (`http` with `scheme: bearer`): Uses `Authorization: Bearer <token>` header
|
|
281
292
|
- **API Key in Header** (`apiKey` with `in: header`): Uses custom header (e.g., `X-API-Key: <token>`)
|
|
282
293
|
- **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
|
|
294
|
+
- **OAuth2/OpenID Connect**: Mapped to bearer token authentication (profile mode only)
|
|
284
295
|
- **Public APIs**: No authentication if OpenAPI spec has no `security` defined
|
|
285
296
|
|
|
286
|
-
**Example**: Use custom env var for GitLab token:
|
|
297
|
+
**Example**: Use custom env var for GitLab own instance token:
|
|
287
298
|
```bash
|
|
288
|
-
export
|
|
289
|
-
export
|
|
290
|
-
export
|
|
299
|
+
export MCP4_API_TOKEN=glpat-xxxxxxxxxxxx
|
|
300
|
+
export MCP4_API_BASE_URL=https://gitlab.example.com/api/v4
|
|
301
|
+
export MCP4_OPENAPI_SPEC_PATH=profiles/gitlab/openapi.yaml
|
|
302
|
+
export MCP4_PROFILE_PATH=profiles/gitlab/developer-profile.json
|
|
291
303
|
npm start
|
|
292
304
|
```
|
|
293
305
|
|
|
294
306
|
#### Force Authentication Override
|
|
295
307
|
For APIs with incomplete OpenAPI specs (missing `security` definition but requiring authentication):
|
|
296
308
|
|
|
297
|
-
- `
|
|
298
|
-
- `
|
|
299
|
-
- `
|
|
300
|
-
- `
|
|
309
|
+
- `MCP4_AUTH_FORCE`: Enable force auth override (`true|false`, default: `false`)
|
|
310
|
+
- `MCP4_AUTH_TYPE`: Authentication type: `bearer|query|custom-header` (default: `bearer`)
|
|
311
|
+
- `MCP4_AUTH_HEADER_NAME`: Custom header name (required when `MCP4_AUTH_TYPE=custom-header`)
|
|
312
|
+
- `MCP4_AUTH_QUERY_PARAM`: Query parameter name (required when `MCP4_AUTH_TYPE=query`)
|
|
301
313
|
|
|
302
314
|
**Example**: Force bearer authentication for incomplete spec:
|
|
303
315
|
```bash
|
|
304
|
-
export
|
|
305
|
-
export
|
|
306
|
-
export
|
|
307
|
-
export
|
|
316
|
+
export MCP4_AUTH_FORCE=true
|
|
317
|
+
export MCP4_AUTH_TYPE=bearer
|
|
318
|
+
export MCP4_API_TOKEN=your_token_here
|
|
319
|
+
export MCP4_OPENAPI_SPEC_PATH=./incomplete-spec.yaml
|
|
308
320
|
npm start
|
|
309
321
|
```
|
|
310
322
|
|
|
311
323
|
**Example**: Force custom header authentication:
|
|
312
324
|
```bash
|
|
313
|
-
export
|
|
314
|
-
export
|
|
315
|
-
export
|
|
316
|
-
export
|
|
325
|
+
export MCP4_AUTH_FORCE=true
|
|
326
|
+
export MCP4_AUTH_TYPE=custom-header
|
|
327
|
+
export MCP4_AUTH_HEADER_NAME=X-API-Key
|
|
328
|
+
export MCP4_API_TOKEN=your_api_key_here
|
|
317
329
|
npm start
|
|
318
330
|
```
|
|
319
331
|
|
|
@@ -322,21 +334,21 @@ npm start
|
|
|
322
334
|
### Optional - Tool Name Shortening
|
|
323
335
|
When generating tools from OpenAPI without a profile, long operation IDs may exceed limits. Configure automatic shortening:
|
|
324
336
|
|
|
325
|
-
- `
|
|
326
|
-
- `
|
|
337
|
+
- `MCP4_TOOLNAME_MAX`: Maximum tool name length (default: `45`)
|
|
338
|
+
- `MCP4_TOOLNAME_STRATEGY`: Shortening strategy: `none|balanced|iterative|hash|auto` (default: `none`)
|
|
327
339
|
- `none`: No shortening, only warnings
|
|
328
340
|
- `balanced`: Add parts by importance until unique & meaningful (recommended)
|
|
329
341
|
- `iterative`: Progressively remove noise until under limit (conservative)
|
|
330
342
|
- `hash`: Use verb + resource + hash for guaranteed uniqueness
|
|
331
343
|
- `auto`: Try strategies in order: balanced → iterative → hash
|
|
332
|
-
- `
|
|
333
|
-
- `
|
|
334
|
-
- `
|
|
344
|
+
- `MCP4_TOOLNAME_WARN_ONLY`: Only warn, don't shorten: `true|false` (default: `true`)
|
|
345
|
+
- `MCP4_TOOLNAME_MIN_PARTS`: Minimum parts for balanced strategy (default: `3`)
|
|
346
|
+
- `MCP4_TOOLNAME_MIN_LENGTH`: Minimum length in chars for balanced strategy (default: `20`)
|
|
335
347
|
|
|
336
348
|
**Example**: Apply balanced shortening (recommended):
|
|
337
349
|
```bash
|
|
338
|
-
export
|
|
339
|
-
export
|
|
350
|
+
export MCP4_TOOLNAME_STRATEGY=balanced
|
|
351
|
+
export MCP4_TOOLNAME_WARN_ONLY=false
|
|
340
352
|
```
|
|
341
353
|
|
|
342
354
|
**Result** for balanced strategy:
|
|
@@ -347,56 +359,80 @@ deleteApiV4ProjectsIdAlertManagementAlertsAlertIidMetricImagesMetricImageId
|
|
|
347
359
|
→ delete_alert_management_image (26 chars)
|
|
348
360
|
```
|
|
349
361
|
|
|
350
|
-
**Example**: Apply iterative shortening with 30 char limit:
|
|
362
|
+
**Example 2**: Apply iterative shortening with 30 char limit:
|
|
351
363
|
```bash
|
|
352
|
-
export
|
|
353
|
-
export
|
|
354
|
-
export
|
|
364
|
+
export MCP4_TOOLNAME_STRATEGY=iterative
|
|
365
|
+
export MCP4_TOOLNAME_WARN_ONLY=false
|
|
366
|
+
export MCP4_TOOLNAME_MAX=30
|
|
355
367
|
```
|
|
356
368
|
|
|
357
369
|
### Optional - HTTP Transport
|
|
358
|
-
- `
|
|
359
|
-
- `
|
|
360
|
-
- `
|
|
361
|
-
- `
|
|
362
|
-
- `
|
|
363
|
-
- `
|
|
364
|
-
- `TOKEN_MAX_LENGTH`: Maximum token length in characters (default: `1000`)
|
|
370
|
+
- `MCP4_HOST`: Bind address (default: `127.0.0.1`)
|
|
371
|
+
- `MCP4_PORT`: Port (default: `3003`)
|
|
372
|
+
- `MCP4_ALLOWED_ORIGINS`: Comma-separated origins (supports exact, wildcard `*.domain.com`, CIDR `192.168.1.0/24`)
|
|
373
|
+
- `MCP4_SESSION_TIMEOUT_MS`: Session timeout (default: `1800000` = 30min)
|
|
374
|
+
- `MCP4_HEARTBEAT_ENABLED`, `MCP4_HEARTBEAT_INTERVAL_MS`: SSE heartbeat settings
|
|
375
|
+
- `MCP4_TOKEN_MAX_LENGTH`: Maximum token length in characters (default: `1000`)
|
|
365
376
|
|
|
366
|
-
|
|
367
|
-
Protect against DoS attacks by limiting request rates per endpoint:
|
|
377
|
+
See [docs/HTTP-TRANSPORT.md](./docs/HTTP-TRANSPORT.md) for detailed HTTP transport configuration.
|
|
368
378
|
|
|
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`)
|
|
379
|
+
#### SSL/TLS Configuration
|
|
373
380
|
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
export HTTP_RATE_LIMIT_MAX_REQUESTS=200 # 200 req/min for MCP endpoints
|
|
378
|
-
export HTTP_RATE_LIMIT_METRICS_MAX=20 # 20 req/min for metrics
|
|
379
|
-
```
|
|
381
|
+
- `MCP4_SSL_CERT_FILE`, `MCP4_SSL_KEY_FILE`: SSL certificate and key (PEM format)
|
|
382
|
+
|
|
383
|
+
**When both are set, server automatically starts in HTTPS mode.**
|
|
380
384
|
|
|
381
|
-
|
|
385
|
+
See [docs/OAUTH.md](./docs/OAUTH.md#ssltls-support) for SSL configuration with OAuth.
|
|
386
|
+
|
|
387
|
+
#### OAuth 2.0 Configuration
|
|
388
|
+
|
|
389
|
+
**Autodiscovery** - Just provide DCR (Dynamic Client Registration) credentials, API base URL and OAuth callback:
|
|
382
390
|
```bash
|
|
383
|
-
export
|
|
391
|
+
export MCP4_API_BASE_URL=https://www.gitlab.com/api/v4
|
|
392
|
+
export MCP4_OAUTH_CLIENT_ID=your_dcr_client_id
|
|
393
|
+
export MCP4_OAUTH_CLIENT_SECRET=your_dcr_client_secret
|
|
394
|
+
export MCP4_OAUTH_REDIRECT_URI=http://mcp.local:3003/oauth/callback
|
|
395
|
+
# OAuth endpoints are automatically discovered from API base URL
|
|
384
396
|
```
|
|
397
|
+
**Note**: DCR and OAuth callback must be registered with the OAuth provider.
|
|
385
398
|
|
|
386
|
-
**
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
399
|
+
**Configuration priority:**
|
|
400
|
+
1. **Explicit URLs**: `MCP4_OAUTH_AUTHORIZATION_URL`, `MCP4_OAUTH_TOKEN_URL` (highest priority)
|
|
401
|
+
2. **Explicit issuer**: `MCP4_OAUTH_ISSUER` (auto-derives standard OAuth paths)
|
|
402
|
+
3. **Autodiscovery**: From `MCP4_API_BASE_URL` (fetches RFC 8414 metadata or uses standard paths)
|
|
403
|
+
|
|
404
|
+
**Environment variables:**
|
|
405
|
+
- `MCP4_OAUTH_CLIENT_ID`, `MCP4_OAUTH_CLIENT_SECRET`: OAuth client credentials (required)
|
|
406
|
+
- `MCP4_OAUTH_REDIRECT_URI`: OAuth redirect URI (required, must match registered URI)
|
|
407
|
+
- `MCP4_OAUTH_ISSUER`: OAuth provider issuer URL (optional, auto-derives endpoints)
|
|
408
|
+
- `MCP4_OAUTH_AUTHORIZATION_URL`, `MCP4_OAUTH_TOKEN_URL`: OAuth endpoints (optional, for non-standard paths)
|
|
409
|
+
|
|
410
|
+
See [docs/OAUTH.md](./docs/OAUTH.md) for complete setup guide including OAuth application registration, SSL configuration, and troubleshooting.
|
|
411
|
+
|
|
412
|
+
#### HTTP Rate Limiting (Security)
|
|
413
|
+
|
|
414
|
+
- `MCP4_HTTP_RATE_LIMIT_ENABLED`: Enable rate limiting (default: `true`)
|
|
415
|
+
- `MCP4_HTTP_RATE_LIMIT_WINDOW_MS`: Rate limit window (default: `60000` = 1 minute)
|
|
416
|
+
- `MCP4_HTTP_RATE_LIMIT_MAX_REQUESTS`: Max requests for MCP endpoints (default: `100`)
|
|
417
|
+
- `MCP4_HTTP_RATE_LIMIT_METRICS_MAX`: Max requests for `/metrics` (default: `10`)
|
|
418
|
+
|
|
419
|
+
**OAuth Rate Limiting** (stricter limits for OAuth endpoints):
|
|
420
|
+
- `MCP4_OAUTH_RATE_LIMIT_MAX`: Max OAuth requests per window (default: `10`)
|
|
421
|
+
- `MCP4_OAUTH_RATE_LIMIT_WINDOW_MS`: OAuth rate limit window (default: `600000` = 10 minutes)
|
|
422
|
+
|
|
423
|
+
**Configuration Priority**: Profile > Environment variables > Defaults
|
|
424
|
+
|
|
425
|
+
**Defaults**:
|
|
426
|
+
- 100 requests/minute for MCP endpoints, 10 requests/minute for metrics
|
|
427
|
+
- 10 requests/10 minutes for OAuth endpoints (`/oauth/authorize`, `/oauth/token`, `/oauth/callback`)
|
|
428
|
+
|
|
429
|
+
Returns `429 Too Many Requests` when exceeded.
|
|
394
430
|
|
|
395
431
|
### Optional - Observability
|
|
396
|
-
- `
|
|
397
|
-
- `
|
|
398
|
-
- `
|
|
399
|
-
- `
|
|
432
|
+
- `MCP4_LOG_LEVEL`: `debug`, `info` (default), `warn`, `error`
|
|
433
|
+
- `MCP4_LOG_FORMAT`: `console` (default) or `json`
|
|
434
|
+
- `MCP4_METRICS_ENABLED`: Enable Prometheus metrics (default: `false`)
|
|
435
|
+
- `MCP4_METRICS_PATH`: Metrics endpoint (default: `/metrics`)
|
|
400
436
|
|
|
401
437
|
**Security Note**:
|
|
402
438
|
- Sensitive auth tokens are automatically redacted from logs based on your profile's auth configuration (bearer, query, or custom-header)
|
|
@@ -467,6 +503,9 @@ npm test
|
|
|
467
503
|
- **[docs/EXAMPLE-GITLAB.md](./docs/EXAMPLE-GITLAB.md)** - Complete GitLab API example with curl commands
|
|
468
504
|
- **[docs/PROFILE-GUIDE.md](./docs/PROFILE-GUIDE.md)** - Guide for creating custom profiles
|
|
469
505
|
- **[docs/HTTP-TRANSPORT.md](./docs/HTTP-TRANSPORT.md)** - HTTP transport setup and usage
|
|
506
|
+
- **[docs/OAUTH.md](./docs/OAUTH.md)** - OAuth 2.0 authentication setup guide
|
|
507
|
+
- **[docs/MULTI-AUTH.md](./docs/MULTI-AUTH.md)** - Multi-auth support: OAuth + Bearer tokens
|
|
508
|
+
- **[docs/DEPLOYMENT-K8S-OAUTH.md](./docs/DEPLOYMENT-K8S-OAUTH.md)** - Production deployment: Kubernetes + OAuth
|
|
470
509
|
- **[docs/DOCKER.md](./docs/DOCKER.md)** - Docker deployment guide
|
|
471
510
|
- **`profiles/`** - Example profiles for OpenAPI specs
|
|
472
511
|
- **`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"}
|