mcp4openapi 0.3.0 → 0.3.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/dist/src/argument-normalizer.d.ts +5 -0
- package/dist/src/argument-normalizer.d.ts.map +1 -0
- package/dist/src/argument-normalizer.js +61 -0
- package/dist/src/argument-normalizer.js.map +1 -0
- package/dist/src/auth/oauth-provider.d.ts.map +1 -1
- package/dist/src/auth/oauth-provider.js +5 -2
- package/dist/src/auth/oauth-provider.js.map +1 -1
- package/dist/src/cli-config.d.ts +9 -0
- package/dist/src/cli-config.d.ts.map +1 -0
- package/dist/src/cli-config.js +111 -0
- package/dist/src/cli-config.js.map +1 -0
- package/dist/src/composite-executor.d.ts +77 -0
- package/dist/src/composite-executor.d.ts.map +1 -0
- package/dist/src/composite-executor.js +193 -0
- package/dist/src/composite-executor.js.map +1 -0
- package/dist/src/constants.d.ts +85 -0
- package/dist/src/constants.d.ts.map +1 -0
- package/dist/src/constants.js +85 -0
- package/dist/src/constants.js.map +1 -0
- package/dist/src/core/cli-config.d.ts.map +1 -1
- package/dist/src/core/cli-config.js +1 -0
- package/dist/src/core/cli-config.js.map +1 -1
- package/dist/src/core/index.d.ts.map +1 -1
- package/dist/src/core/index.js +1 -0
- package/dist/src/core/index.js.map +1 -1
- package/dist/src/dag-executor.d.ts +49 -0
- package/dist/src/dag-executor.d.ts.map +1 -0
- package/dist/src/dag-executor.js +138 -0
- package/dist/src/dag-executor.js.map +1 -0
- package/dist/src/errors.d.ts +59 -0
- package/dist/src/errors.d.ts.map +1 -0
- package/dist/src/errors.js +119 -0
- package/dist/src/errors.js.map +1 -0
- package/dist/src/filtering.d.ts +19 -0
- package/dist/src/filtering.d.ts.map +1 -0
- package/dist/src/filtering.js +292 -0
- package/dist/src/filtering.js.map +1 -0
- package/dist/src/generated-schemas.d.ts +45 -0
- package/dist/src/generated-schemas.d.ts.map +1 -1
- package/dist/src/generated-schemas.js +3 -0
- package/dist/src/generated-schemas.js.map +1 -1
- package/dist/src/http-client-factory.d.ts +62 -0
- package/dist/src/http-client-factory.d.ts.map +1 -0
- package/dist/src/http-client-factory.js +133 -0
- package/dist/src/http-client-factory.js.map +1 -0
- package/dist/src/http-transport-config.d.ts +6 -0
- package/dist/src/http-transport-config.d.ts.map +1 -0
- package/dist/src/http-transport-config.js +47 -0
- package/dist/src/http-transport-config.js.map +1 -0
- package/dist/src/http-transport.d.ts +316 -0
- package/dist/src/http-transport.d.ts.map +1 -0
- package/dist/src/http-transport.js +2412 -0
- package/dist/src/http-transport.js.map +1 -0
- package/dist/src/index.js +0 -0
- package/dist/src/interceptors.d.ts +116 -0
- package/dist/src/interceptors.d.ts.map +1 -0
- package/dist/src/interceptors.js +392 -0
- package/dist/src/interceptors.js.map +1 -0
- package/dist/src/jsonrpc-validator.d.ts +27 -0
- package/dist/src/jsonrpc-validator.d.ts.map +1 -0
- package/dist/src/jsonrpc-validator.js +58 -0
- package/dist/src/jsonrpc-validator.js.map +1 -0
- package/dist/src/logger.d.ts +59 -0
- package/dist/src/logger.d.ts.map +1 -0
- package/dist/src/logger.js +177 -0
- package/dist/src/logger.js.map +1 -0
- package/dist/src/mcp-server-manager.d.ts +20 -0
- package/dist/src/mcp-server-manager.d.ts.map +1 -0
- package/dist/src/mcp-server-manager.js +38 -0
- package/dist/src/mcp-server-manager.js.map +1 -0
- package/dist/src/mcp-server.d.ts +203 -0
- package/dist/src/mcp-server.d.ts.map +1 -0
- package/dist/src/mcp-server.js +1369 -0
- package/dist/src/mcp-server.js.map +1 -0
- package/dist/src/metrics.d.ts +97 -0
- package/dist/src/metrics.d.ts.map +1 -0
- package/dist/src/metrics.js +273 -0
- package/dist/src/metrics.js.map +1 -0
- package/dist/src/naming-warnings.d.ts +23 -0
- package/dist/src/naming-warnings.d.ts.map +1 -0
- package/dist/src/naming-warnings.js +83 -0
- package/dist/src/naming-warnings.js.map +1 -0
- package/dist/src/naming.d.ts +58 -0
- package/dist/src/naming.d.ts.map +1 -0
- package/dist/src/naming.js +510 -0
- package/dist/src/naming.js.map +1 -0
- package/dist/src/oauth-provider.d.ts +131 -0
- package/dist/src/oauth-provider.d.ts.map +1 -0
- package/dist/src/oauth-provider.js +836 -0
- package/dist/src/oauth-provider.js.map +1 -0
- package/dist/src/openapi/openapi-parser.d.ts.map +1 -1
- package/dist/src/openapi/openapi-parser.js +22 -0
- package/dist/src/openapi/openapi-parser.js.map +1 -1
- package/dist/src/openapi-parser.d.ts +70 -0
- package/dist/src/openapi-parser.d.ts.map +1 -0
- package/dist/src/openapi-parser.js +436 -0
- package/dist/src/openapi-parser.js.map +1 -0
- package/dist/src/profile/profile-loader.d.ts.map +1 -1
- package/dist/src/profile/profile-loader.js +8 -1
- package/dist/src/profile/profile-loader.js.map +1 -1
- package/dist/src/profile/profile-registry.d.ts +2 -1
- package/dist/src/profile/profile-registry.d.ts.map +1 -1
- package/dist/src/profile/profile-registry.js +18 -1
- package/dist/src/profile/profile-registry.js.map +1 -1
- package/dist/src/profile/profile-resolver.d.ts +16 -0
- package/dist/src/profile/profile-resolver.d.ts.map +1 -1
- package/dist/src/profile/profile-resolver.js +120 -0
- package/dist/src/profile/profile-resolver.js.map +1 -1
- package/dist/src/profile-loader.d.ts +78 -0
- package/dist/src/profile-loader.d.ts.map +1 -0
- package/dist/src/profile-loader.js +483 -0
- package/dist/src/profile-loader.js.map +1 -0
- package/dist/src/profile-registry.d.ts +18 -0
- package/dist/src/profile-registry.d.ts.map +1 -0
- package/dist/src/profile-registry.js +26 -0
- package/dist/src/profile-registry.js.map +1 -0
- package/dist/src/profile-resolver.d.ts +19 -0
- package/dist/src/profile-resolver.d.ts.map +1 -0
- package/dist/src/profile-resolver.js +167 -0
- package/dist/src/profile-resolver.js.map +1 -0
- package/dist/src/proxy-executor.d.ts +86 -0
- package/dist/src/proxy-executor.d.ts.map +1 -0
- package/dist/src/proxy-executor.js +497 -0
- package/dist/src/proxy-executor.js.map +1 -0
- package/dist/src/schema-validator.d.ts +30 -0
- package/dist/src/schema-validator.d.ts.map +1 -0
- package/dist/src/schema-validator.js +128 -0
- package/dist/src/schema-validator.js.map +1 -0
- package/dist/src/startup-profile.d.ts +17 -0
- package/dist/src/startup-profile.d.ts.map +1 -0
- package/dist/src/startup-profile.js +30 -0
- package/dist/src/startup-profile.js.map +1 -0
- package/dist/src/startup-validation.d.ts +11 -0
- package/dist/src/startup-validation.d.ts.map +1 -0
- package/dist/src/startup-validation.js +21 -0
- package/dist/src/startup-validation.js.map +1 -0
- package/dist/src/tool-filter.d.ts +65 -0
- package/dist/src/tool-filter.d.ts.map +1 -0
- package/dist/src/tool-filter.js +471 -0
- package/dist/src/tool-filter.js.map +1 -0
- package/dist/src/tool-generator.d.ts +67 -0
- package/dist/src/tool-generator.d.ts.map +1 -0
- package/dist/src/tool-generator.js +182 -0
- package/dist/src/tool-generator.js.map +1 -0
- package/dist/src/tooling/composite-executor.d.ts.map +1 -1
- package/dist/src/tooling/composite-executor.js +7 -2
- package/dist/src/tooling/composite-executor.js.map +1 -1
- package/dist/src/tooling/proxy-executor.d.ts.map +1 -1
- package/dist/src/tooling/proxy-executor.js +4 -0
- package/dist/src/tooling/proxy-executor.js.map +1 -1
- package/dist/src/tooling/tool-generator.d.ts.map +1 -1
- package/dist/src/tooling/tool-generator.js +36 -3
- package/dist/src/tooling/tool-generator.js.map +1 -1
- package/dist/src/transport/http-transport-config.d.ts.map +1 -1
- package/dist/src/transport/http-transport-config.js +1 -0
- package/dist/src/transport/http-transport-config.js.map +1 -1
- package/dist/src/transport/http-transport.d.ts +5 -0
- package/dist/src/transport/http-transport.d.ts.map +1 -1
- package/dist/src/transport/http-transport.js +63 -1
- package/dist/src/transport/http-transport.js.map +1 -1
- package/dist/src/transport/profile-index.d.ts +84 -0
- package/dist/src/transport/profile-index.d.ts.map +1 -0
- package/dist/src/transport/profile-index.js +405 -0
- package/dist/src/transport/profile-index.js.map +1 -0
- package/dist/src/types/http-transport.d.ts +1 -0
- package/dist/src/types/http-transport.d.ts.map +1 -1
- package/dist/src/types/openapi.d.ts +3 -0
- package/dist/src/types/openapi.d.ts.map +1 -1
- package/dist/src/types/profile.d.ts +3 -0
- package/dist/src/types/profile.d.ts.map +1 -1
- package/dist/src/validation/validation-utils.d.ts.map +1 -1
- package/dist/src/validation/validation-utils.js +1 -0
- package/dist/src/validation/validation-utils.js.map +1 -1
- package/dist/src/validation-utils.d.ts +49 -0
- package/dist/src/validation-utils.d.ts.map +1 -0
- package/dist/src/validation-utils.js +138 -0
- package/dist/src/validation-utils.js.map +1 -0
- package/html/profile-index.html +386 -0
- package/package.json +2 -1
- package/profile-schema.json +14 -0
- package/profiles/gitlab/developer-profile-oauth.json +1 -1
- package/profiles/gitlab/developer-profile.json +1508 -0
- package/profiles/gitlab/developer-profile.test.json +3432 -0
- package/profiles/n8n/profile-optimized.json +1 -1
- package/profiles/n8n/profile.json +1 -1
- package/profiles/n8n-nodes/profile-nodes.json +1 -1
- package/profiles/semgrep/profile.json +1 -1
- package/profiles/youtrack/profile.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generated-schemas.js","sourceRoot":"","sources":["../../src/generated-schemas.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"generated-schemas.js","sourceRoot":"","sources":["../../src/generated-schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP Client Factory - unified HTTP client management
|
|
3
|
+
*
|
|
4
|
+
* Why: Eliminates code duplication in HTTP client creation and management
|
|
5
|
+
* Provides consistent client lifecycle, auth handling, and caching
|
|
6
|
+
*/
|
|
7
|
+
import { HttpClient } from './interceptors.js';
|
|
8
|
+
import type { Profile } from './types/profile.js';
|
|
9
|
+
export interface HttpClientConfig {
|
|
10
|
+
profile: Profile;
|
|
11
|
+
baseUrl: string;
|
|
12
|
+
sessionToken?: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Factory for creating and managing HTTP clients
|
|
16
|
+
* Handles both global and session-specific clients
|
|
17
|
+
*/
|
|
18
|
+
export declare class HttpClientFactory {
|
|
19
|
+
private globalClient?;
|
|
20
|
+
private sessionClients;
|
|
21
|
+
/**
|
|
22
|
+
* Create global HTTP client (for stdio transport)
|
|
23
|
+
*/
|
|
24
|
+
createGlobalClient(config: HttpClientConfig): HttpClient;
|
|
25
|
+
/**
|
|
26
|
+
* Get or create session-specific HTTP client
|
|
27
|
+
*/
|
|
28
|
+
getOrCreateSessionClient(sessionId: string, config: HttpClientConfig): HttpClient;
|
|
29
|
+
/**
|
|
30
|
+
* Get global client (throws if not initialized)
|
|
31
|
+
*/
|
|
32
|
+
getGlobalClient(): HttpClient;
|
|
33
|
+
/**
|
|
34
|
+
* Get session client (throws if not exists)
|
|
35
|
+
*/
|
|
36
|
+
getSessionClient(sessionId: string): HttpClient;
|
|
37
|
+
/**
|
|
38
|
+
* Cleanup session client
|
|
39
|
+
*/
|
|
40
|
+
cleanupSessionClient(sessionId: string): boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Check if global client exists
|
|
43
|
+
*/
|
|
44
|
+
hasGlobalClient(): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Check if session client exists
|
|
47
|
+
*/
|
|
48
|
+
hasSessionClient(sessionId: string): boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Get auth token for client creation
|
|
51
|
+
*/
|
|
52
|
+
private getAuthToken;
|
|
53
|
+
/**
|
|
54
|
+
* Create interceptor chain for client
|
|
55
|
+
*/
|
|
56
|
+
private createInterceptorChain;
|
|
57
|
+
/**
|
|
58
|
+
* Validate client configuration
|
|
59
|
+
*/
|
|
60
|
+
validateClientConfig(config: HttpClientConfig): void;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=http-client-factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-client-factory.d.ts","sourceRoot":"","sources":["../../src/http-client-factory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAoB,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAGlD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,YAAY,CAAC,CAAa;IAClC,OAAO,CAAC,cAAc,CAAiC;IAEvD;;OAEG;IACH,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,GAAG,UAAU;IAOxD;;OAEG;IACH,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,UAAU;IAsBjF;;OAEG;IACH,eAAe,IAAI,UAAU;IAO7B;;OAEG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU;IAQ/C;;OAEG;IACH,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAIhD;;OAEG;IACH,eAAe,IAAI,OAAO;IAI1B;;OAEG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI5C;;OAEG;IACH,OAAO,CAAC,YAAY;IAuBpB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAK9B;;OAEG;IACH,oBAAoB,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;CAsBrD"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP Client Factory - unified HTTP client management
|
|
3
|
+
*
|
|
4
|
+
* Why: Eliminates code duplication in HTTP client creation and management
|
|
5
|
+
* Provides consistent client lifecycle, auth handling, and caching
|
|
6
|
+
*/
|
|
7
|
+
import { InterceptorChain, HttpClient } from './interceptors.js';
|
|
8
|
+
import { ConfigurationError, AuthenticationError } from './errors.js';
|
|
9
|
+
/**
|
|
10
|
+
* Factory for creating and managing HTTP clients
|
|
11
|
+
* Handles both global and session-specific clients
|
|
12
|
+
*/
|
|
13
|
+
export class HttpClientFactory {
|
|
14
|
+
constructor() {
|
|
15
|
+
this.sessionClients = new Map();
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Create global HTTP client (for stdio transport)
|
|
19
|
+
*/
|
|
20
|
+
createGlobalClient(config) {
|
|
21
|
+
const interceptors = this.createInterceptorChain(config);
|
|
22
|
+
const client = new HttpClient(config.baseUrl, interceptors);
|
|
23
|
+
this.globalClient = client;
|
|
24
|
+
return client;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Get or create session-specific HTTP client
|
|
28
|
+
*/
|
|
29
|
+
getOrCreateSessionClient(sessionId, config) {
|
|
30
|
+
// Check cache first
|
|
31
|
+
let client = this.sessionClients.get(sessionId);
|
|
32
|
+
if (client) {
|
|
33
|
+
return client;
|
|
34
|
+
}
|
|
35
|
+
// Create new client for session
|
|
36
|
+
const interceptors = this.createInterceptorChain(config);
|
|
37
|
+
const newClient = new HttpClient(config.baseUrl, interceptors);
|
|
38
|
+
// Double-check for race condition
|
|
39
|
+
const existingClient = this.sessionClients.get(sessionId);
|
|
40
|
+
if (existingClient) {
|
|
41
|
+
return existingClient;
|
|
42
|
+
}
|
|
43
|
+
// Cache and return
|
|
44
|
+
this.sessionClients.set(sessionId, newClient);
|
|
45
|
+
return newClient;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Get global client (throws if not initialized)
|
|
49
|
+
*/
|
|
50
|
+
getGlobalClient() {
|
|
51
|
+
if (!this.globalClient) {
|
|
52
|
+
throw new ConfigurationError('Global HTTP client not initialized');
|
|
53
|
+
}
|
|
54
|
+
return this.globalClient;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Get session client (throws if not exists)
|
|
58
|
+
*/
|
|
59
|
+
getSessionClient(sessionId) {
|
|
60
|
+
const client = this.sessionClients.get(sessionId);
|
|
61
|
+
if (!client) {
|
|
62
|
+
throw new ConfigurationError(`Session HTTP client not found for session: ${sessionId}`);
|
|
63
|
+
}
|
|
64
|
+
return client;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Cleanup session client
|
|
68
|
+
*/
|
|
69
|
+
cleanupSessionClient(sessionId) {
|
|
70
|
+
return this.sessionClients.delete(sessionId);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Check if global client exists
|
|
74
|
+
*/
|
|
75
|
+
hasGlobalClient() {
|
|
76
|
+
return !!this.globalClient;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Check if session client exists
|
|
80
|
+
*/
|
|
81
|
+
hasSessionClient(sessionId) {
|
|
82
|
+
return this.sessionClients.has(sessionId);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Get auth token for client creation
|
|
86
|
+
*/
|
|
87
|
+
getAuthToken(config) {
|
|
88
|
+
// Priority: session token > environment token
|
|
89
|
+
if (config.sessionToken) {
|
|
90
|
+
return config.sessionToken;
|
|
91
|
+
}
|
|
92
|
+
const authConfigRaw = config.profile.interceptors?.auth;
|
|
93
|
+
if (!authConfigRaw) {
|
|
94
|
+
return undefined;
|
|
95
|
+
}
|
|
96
|
+
// Handle multi-auth: get primary non-OAuth config
|
|
97
|
+
const authConfigs = Array.isArray(authConfigRaw) ? authConfigRaw : [authConfigRaw];
|
|
98
|
+
const sortedConfigs = authConfigs.sort((a, b) => (a.priority || 0) - (b.priority || 0));
|
|
99
|
+
const authConfig = sortedConfigs.find(c => c.type !== 'oauth');
|
|
100
|
+
if (authConfig && authConfig.value_from_env) {
|
|
101
|
+
return process.env[authConfig.value_from_env];
|
|
102
|
+
}
|
|
103
|
+
return undefined;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Create interceptor chain for client
|
|
107
|
+
*/
|
|
108
|
+
createInterceptorChain(config) {
|
|
109
|
+
const token = this.getAuthToken(config);
|
|
110
|
+
return new InterceptorChain(config.profile.interceptors || {}, token);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Validate client configuration
|
|
114
|
+
*/
|
|
115
|
+
validateClientConfig(config) {
|
|
116
|
+
if (!config.baseUrl) {
|
|
117
|
+
throw new ConfigurationError('Base URL is required for HTTP client');
|
|
118
|
+
}
|
|
119
|
+
if (!config.profile) {
|
|
120
|
+
throw new ConfigurationError('Profile is required for HTTP client');
|
|
121
|
+
}
|
|
122
|
+
// Check if we have any auth token available
|
|
123
|
+
const hasToken = this.getAuthToken(config);
|
|
124
|
+
if (!hasToken && config.profile.interceptors?.auth) {
|
|
125
|
+
const authConfigRaw = config.profile.interceptors.auth;
|
|
126
|
+
const authConfigs = Array.isArray(authConfigRaw) ? authConfigRaw : [authConfigRaw];
|
|
127
|
+
const nonOAuthConfig = authConfigs.find(c => c.type !== 'oauth');
|
|
128
|
+
const envVar = nonOAuthConfig?.value_from_env || 'MCP4_API_TOKEN';
|
|
129
|
+
throw new AuthenticationError(`No auth token available. Expected token in Authorization header or ${envVar} env var`, { envVar });
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=http-client-factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-client-factory.js","sourceRoot":"","sources":["../../src/http-client-factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build base HTTP transport configuration from environment variables.
|
|
3
|
+
*/
|
|
4
|
+
import type { HttpTransportConfig } from './types/http-transport.js';
|
|
5
|
+
export declare function buildHttpTransportBaseConfig(host: string, port: number): HttpTransportConfig;
|
|
6
|
+
//# sourceMappingURL=http-transport-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-transport-config.d.ts","sourceRoot":"","sources":["../../src/http-transport-config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAErE,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,mBAAmB,CA0C5F"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build base HTTP transport configuration from environment variables.
|
|
3
|
+
*/
|
|
4
|
+
import { TIMEOUTS } from './constants.js';
|
|
5
|
+
import { ConfigurationError } from './errors.js';
|
|
6
|
+
export function buildHttpTransportBaseConfig(host, port) {
|
|
7
|
+
return {
|
|
8
|
+
host,
|
|
9
|
+
port,
|
|
10
|
+
sessionTimeoutMs: parseInt(process.env.MCP4_SESSION_TIMEOUT_MS || String(TIMEOUTS.SESSION_TIMEOUT_MS), 10),
|
|
11
|
+
heartbeatEnabled: process.env.MCP4_HEARTBEAT_ENABLED === 'true',
|
|
12
|
+
heartbeatIntervalMs: parseInt(process.env.MCP4_HEARTBEAT_INTERVAL_MS || String(TIMEOUTS.HEARTBEAT_INTERVAL_MS), 10),
|
|
13
|
+
metricsEnabled: process.env.MCP4_METRICS_ENABLED === 'true',
|
|
14
|
+
metricsPath: process.env.MCP4_METRICS_PATH || '/metrics',
|
|
15
|
+
allowedOrigins: process.env.MCP4_ALLOWED_ORIGINS
|
|
16
|
+
? process.env.MCP4_ALLOWED_ORIGINS.split(',').map(o => o.trim())
|
|
17
|
+
: undefined,
|
|
18
|
+
rateLimitEnabled: process.env.MCP4_HTTP_RATE_LIMIT_ENABLED !== 'false', // default: true
|
|
19
|
+
rateLimitWindowMs: parseInt(process.env.MCP4_HTTP_RATE_LIMIT_WINDOW_MS || String(TIMEOUTS.RATE_LIMIT_WINDOW_MS), 10),
|
|
20
|
+
rateLimitMaxRequests: parseInt(process.env.MCP4_HTTP_RATE_LIMIT_MAX_REQUESTS || '100', 10),
|
|
21
|
+
rateLimitMetricsMax: parseInt(process.env.MCP4_HTTP_RATE_LIMIT_METRICS_MAX || '10', 10),
|
|
22
|
+
maxTokenLength: process.env.MCP4_TOKEN_MAX_LENGTH
|
|
23
|
+
? parseInt(process.env.MCP4_TOKEN_MAX_LENGTH, 10)
|
|
24
|
+
: undefined,
|
|
25
|
+
sslCertFile: process.env.MCP4_SSL_CERT_FILE,
|
|
26
|
+
sslKeyFile: process.env.MCP4_SSL_KEY_FILE,
|
|
27
|
+
oauthSessionTimeoutMs: (() => {
|
|
28
|
+
if (process.env.MCP4_OAUTH_SESSION_TIMEOUT_MS === undefined)
|
|
29
|
+
return undefined;
|
|
30
|
+
const parsed = parseInt(process.env.MCP4_OAUTH_SESSION_TIMEOUT_MS, 10);
|
|
31
|
+
if (Number.isNaN(parsed)) {
|
|
32
|
+
throw new ConfigurationError(`Invalid MCP4_OAUTH_SESSION_TIMEOUT_MS: expected integer milliseconds, got '${process.env.MCP4_OAUTH_SESSION_TIMEOUT_MS}'`);
|
|
33
|
+
}
|
|
34
|
+
return parsed;
|
|
35
|
+
})(),
|
|
36
|
+
oauthRefreshThresholdMs: (() => {
|
|
37
|
+
if (process.env.MCP4_OAUTH_REFRESH_THRESHOLD_MS === undefined)
|
|
38
|
+
return undefined;
|
|
39
|
+
const parsed = parseInt(process.env.MCP4_OAUTH_REFRESH_THRESHOLD_MS, 10);
|
|
40
|
+
if (Number.isNaN(parsed)) {
|
|
41
|
+
throw new ConfigurationError(`Invalid MCP4_OAUTH_REFRESH_THRESHOLD_MS: expected integer milliseconds, got '${process.env.MCP4_OAUTH_REFRESH_THRESHOLD_MS}'`);
|
|
42
|
+
}
|
|
43
|
+
return parsed;
|
|
44
|
+
})(),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=http-transport-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-transport-config.js","sourceRoot":"","sources":["../../src/http-transport-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,316 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP Streamable Transport for MCP
|
|
3
|
+
*
|
|
4
|
+
* Implements MCP Specification 2025-03-26
|
|
5
|
+
* https://modelcontextprotocol.io/specification/2025-03-26/basic/transports
|
|
6
|
+
*
|
|
7
|
+
* Why: Enables remote MCP server access with SSE streaming, session management,
|
|
8
|
+
* and resumability for reliable communication over HTTP.
|
|
9
|
+
*/
|
|
10
|
+
import type { Logger } from './logger.js';
|
|
11
|
+
import type { HttpTransportConfig, HttpProfileContext } from './types/http-transport.js';
|
|
12
|
+
import type { SessionToolFilter, SessionToolFilterRequest } from './types/http-transport.js';
|
|
13
|
+
export declare class HttpTransport {
|
|
14
|
+
private app;
|
|
15
|
+
private server;
|
|
16
|
+
private config;
|
|
17
|
+
private logger;
|
|
18
|
+
private metrics;
|
|
19
|
+
private cleanupInterval;
|
|
20
|
+
private messageHandler;
|
|
21
|
+
private profileContextProvider;
|
|
22
|
+
private profileStates;
|
|
23
|
+
private oauthRedirectHostCache;
|
|
24
|
+
private warnedMissingOAuthRedirectEnvVars;
|
|
25
|
+
constructor(config: HttpTransportConfig, logger: Logger);
|
|
26
|
+
/**
|
|
27
|
+
* Setup Express middleware
|
|
28
|
+
*
|
|
29
|
+
* Why: Security (Origin validation, rate limiting), JSON parsing, session extraction, metrics
|
|
30
|
+
*/
|
|
31
|
+
private setupMiddleware;
|
|
32
|
+
setProfileContextProvider(provider: (profileId: string) => Promise<HttpProfileContext | null>): void;
|
|
33
|
+
private getDefaultProfileId;
|
|
34
|
+
private buildDefaultProfileContext;
|
|
35
|
+
private getProfileState;
|
|
36
|
+
private getProfileIdForRequest;
|
|
37
|
+
private getProfileStateForRequest;
|
|
38
|
+
private hasWarnedAboutBinding;
|
|
39
|
+
/**
|
|
40
|
+
* Check if origin is allowed
|
|
41
|
+
*
|
|
42
|
+
* Why: Prevent DNS rebinding attacks
|
|
43
|
+
*
|
|
44
|
+
* Supports:
|
|
45
|
+
* - Exact hostname: 'example.com', 'api.example.com'
|
|
46
|
+
* - Wildcard subdomain: '*.example.com'
|
|
47
|
+
* - IPv4 CIDR: '192.168.1.0/24', '10.0.0.0/8'
|
|
48
|
+
* - IPv4 exact: '192.168.1.100'
|
|
49
|
+
*/
|
|
50
|
+
private isAllowedOrigin;
|
|
51
|
+
private getOAuthRedirectHostPatterns;
|
|
52
|
+
private extractRedirectHostPatterns;
|
|
53
|
+
private resolveRedirectUriFromEnv;
|
|
54
|
+
private resolveProfileIdFromPath;
|
|
55
|
+
private resolveProfileIdForOriginCheck;
|
|
56
|
+
private primeOAuthRedirectHosts;
|
|
57
|
+
private isAllowedOriginForRequest;
|
|
58
|
+
/**
|
|
59
|
+
* Match hostname against allowed origin pattern
|
|
60
|
+
*
|
|
61
|
+
* Supports:
|
|
62
|
+
* - Exact match: 'example.com' === 'example.com'
|
|
63
|
+
* - Wildcard: '*.example.com' matches 'api.example.com', 'web.example.com'
|
|
64
|
+
* - CIDR: '192.168.1.0/24' matches '192.168.1.1' through '192.168.1.254'
|
|
65
|
+
*/
|
|
66
|
+
private matchOrigin;
|
|
67
|
+
/**
|
|
68
|
+
* Check if IP address is within CIDR range (IPv4 or IPv6)
|
|
69
|
+
*
|
|
70
|
+
* Example: '192.168.1.50' matches '192.168.1.0/24'
|
|
71
|
+
* '2001:db8::1' matches '2001:db8::/32'
|
|
72
|
+
*/
|
|
73
|
+
private matchCIDR;
|
|
74
|
+
/**
|
|
75
|
+
* Convert IPv4 address to 32-bit integer
|
|
76
|
+
*
|
|
77
|
+
* Example: '192.168.1.1' -> 3232235777
|
|
78
|
+
*/
|
|
79
|
+
private ipv4ToInt;
|
|
80
|
+
/**
|
|
81
|
+
* Convert IPv6 address to 128-bit BigInt
|
|
82
|
+
*/
|
|
83
|
+
private ipv6ToBigInt;
|
|
84
|
+
private ipv6Mask;
|
|
85
|
+
private stripIpv6Brackets;
|
|
86
|
+
/**
|
|
87
|
+
* Create configured rate limiter or a passthrough handler when disabled
|
|
88
|
+
*
|
|
89
|
+
* Why: Both MCP and metrics endpoints share the same rate limiting setup logic.
|
|
90
|
+
* Centralizing it keeps behaviour consistent and avoids drifting configuration.
|
|
91
|
+
*/
|
|
92
|
+
private createRateLimiter;
|
|
93
|
+
private formatRateLimitMessage;
|
|
94
|
+
private getProfilePrefix;
|
|
95
|
+
private buildProfilePath;
|
|
96
|
+
private getServerOrigin;
|
|
97
|
+
private buildProfileUrl;
|
|
98
|
+
private normalizeResourcePath;
|
|
99
|
+
private resolveProfileIdFromResourceUrl;
|
|
100
|
+
getOAuthProtectedResourceUrl(profileId?: string): string;
|
|
101
|
+
private respondProfileNotFound;
|
|
102
|
+
/**
|
|
103
|
+
* Setup MCP endpoint routes
|
|
104
|
+
*
|
|
105
|
+
* Why: Single endpoint for POST (client→server) and GET (SSE stream)
|
|
106
|
+
*/
|
|
107
|
+
private setupRoutes;
|
|
108
|
+
private getProfileIssuerUrl;
|
|
109
|
+
private handleOAuthProtectedResource;
|
|
110
|
+
private handleOAuthAuthorize;
|
|
111
|
+
private handleOAuthToken;
|
|
112
|
+
private handleOAuthCallback;
|
|
113
|
+
private handleOAuthAuthorizationServerMetadata;
|
|
114
|
+
private handleOAuthRegister;
|
|
115
|
+
/**
|
|
116
|
+
* Handle metrics endpoint
|
|
117
|
+
*
|
|
118
|
+
* Why: Prometheus scraping endpoint
|
|
119
|
+
*/
|
|
120
|
+
private handleMetrics;
|
|
121
|
+
/**
|
|
122
|
+
* Validate authentication token by making a probe request to the API
|
|
123
|
+
*
|
|
124
|
+
* Supports all auth types: bearer, query, custom-header
|
|
125
|
+
* Returns true if token is valid, false otherwise
|
|
126
|
+
*/
|
|
127
|
+
/**
|
|
128
|
+
* Builds a URL by intelligently combining base URL and endpoint
|
|
129
|
+
* Handles absolute URLs, absolute paths, and relative paths correctly
|
|
130
|
+
*/
|
|
131
|
+
private buildUrl;
|
|
132
|
+
private validateAuthToken;
|
|
133
|
+
/**
|
|
134
|
+
* Validate token format and length
|
|
135
|
+
*
|
|
136
|
+
* Why centralized: Single source of truth for token validation rules
|
|
137
|
+
*
|
|
138
|
+
* Relaxed validation: Allow common API token characters including colons,
|
|
139
|
+
* to support various token formats (GitLab glpat-, YouTrack perm:, etc.)
|
|
140
|
+
*/
|
|
141
|
+
private validateToken;
|
|
142
|
+
/**
|
|
143
|
+
* Extract and validate auth token from request headers
|
|
144
|
+
*
|
|
145
|
+
* Supports:
|
|
146
|
+
* - Authorization: Bearer <token>
|
|
147
|
+
* - X-API-Token: <token>
|
|
148
|
+
* - OAuth session (via mcp-session-id header)
|
|
149
|
+
*
|
|
150
|
+
* Why strict validation: Prevents header injection attacks
|
|
151
|
+
*
|
|
152
|
+
* Returns: { type: 'bearer' | 'oauth' | 'api-token', token: string, sessionId?: string }
|
|
153
|
+
*/
|
|
154
|
+
private extractAuthToken;
|
|
155
|
+
/**
|
|
156
|
+
* Lazy initialization of ToolFilterService
|
|
157
|
+
*/
|
|
158
|
+
private getToolFilterService;
|
|
159
|
+
/**
|
|
160
|
+
* Handle POST requests - Client sending messages to server
|
|
161
|
+
*
|
|
162
|
+
* MCP Spec: POST can contain requests, notifications, or responses
|
|
163
|
+
*/
|
|
164
|
+
private handlePost;
|
|
165
|
+
/**
|
|
166
|
+
* Handle GET requests - Client opening SSE stream for server messages
|
|
167
|
+
*
|
|
168
|
+
* MCP Spec: GET opens SSE stream for server-initiated requests/notifications
|
|
169
|
+
*/
|
|
170
|
+
private handleGet;
|
|
171
|
+
/**
|
|
172
|
+
* Handle DELETE requests - Client terminating session
|
|
173
|
+
*
|
|
174
|
+
* MCP Spec: DELETE explicitly terminates session
|
|
175
|
+
*/
|
|
176
|
+
private handleDelete;
|
|
177
|
+
/**
|
|
178
|
+
* Start SSE response for a POST request
|
|
179
|
+
*
|
|
180
|
+
* Why: Returns response via SSE stream, allows server-initiated messages
|
|
181
|
+
*/
|
|
182
|
+
private startSSEResponse;
|
|
183
|
+
/**
|
|
184
|
+
* Start SSE stream for GET request
|
|
185
|
+
*
|
|
186
|
+
* Why: Allows server to send requests/notifications to client
|
|
187
|
+
*/
|
|
188
|
+
private startSSEStream;
|
|
189
|
+
/**
|
|
190
|
+
* Replay messages after Last-Event-ID
|
|
191
|
+
*
|
|
192
|
+
* Why: Resumability - client can reconnect and receive missed messages
|
|
193
|
+
*/
|
|
194
|
+
private replayMessages;
|
|
195
|
+
/**
|
|
196
|
+
* Send message to client via SSE
|
|
197
|
+
*
|
|
198
|
+
* Why: Server-initiated requests/notifications
|
|
199
|
+
*/
|
|
200
|
+
sendToClient(profileId: string, sessionId: string, message: unknown): void;
|
|
201
|
+
/**
|
|
202
|
+
* Determine message type (request, notification, response)
|
|
203
|
+
*/
|
|
204
|
+
private getMessageType;
|
|
205
|
+
private getFilteringHeaderValue;
|
|
206
|
+
private getToolFilterHeaderValue;
|
|
207
|
+
/**
|
|
208
|
+
* Create new session
|
|
209
|
+
*
|
|
210
|
+
* Why: Stateful sessions for MCP protocol
|
|
211
|
+
*/
|
|
212
|
+
private createSession;
|
|
213
|
+
/**
|
|
214
|
+
* Update session activity timestamp
|
|
215
|
+
*/
|
|
216
|
+
private updateSessionActivity;
|
|
217
|
+
/**
|
|
218
|
+
* Destroy session and cleanup resources
|
|
219
|
+
*
|
|
220
|
+
* Why: Free memory, close streams
|
|
221
|
+
*/
|
|
222
|
+
private destroySession;
|
|
223
|
+
/**
|
|
224
|
+
* Session destruction listeners for cleanup in other components
|
|
225
|
+
*/
|
|
226
|
+
private sessionDestroyedListeners;
|
|
227
|
+
/**
|
|
228
|
+
* Register listener for session destruction events
|
|
229
|
+
*
|
|
230
|
+
* Why: Allows MCPServer to cleanup per-session HTTP clients
|
|
231
|
+
*/
|
|
232
|
+
onSessionDestroyed(listener: (profileId: string, sessionId: string) => void): void;
|
|
233
|
+
/**
|
|
234
|
+
* Notify all listeners about session destruction
|
|
235
|
+
*/
|
|
236
|
+
private notifySessionDestroyed;
|
|
237
|
+
/**
|
|
238
|
+
* Store OAuth tokens in internal map for later session initialization
|
|
239
|
+
*
|
|
240
|
+
* Why: Bridge between /oauth/token endpoint (where we see OAuthTokens)
|
|
241
|
+
* and session initialization (where we only see access token in Authorization header)
|
|
242
|
+
*/
|
|
243
|
+
private storeOAuthTokens;
|
|
244
|
+
/**
|
|
245
|
+
* Cleanup expired sessions
|
|
246
|
+
*
|
|
247
|
+
* Why: Prevent memory leaks, enforce session timeout
|
|
248
|
+
*
|
|
249
|
+
* OAuth sessions with refresh tokens have extended or unlimited timeout
|
|
250
|
+
* to avoid forcing users to re-authenticate after periods of inactivity
|
|
251
|
+
*/
|
|
252
|
+
private cleanupExpiredSessions;
|
|
253
|
+
/**
|
|
254
|
+
* Get auth token from session
|
|
255
|
+
*
|
|
256
|
+
* Why public: Allows MCPServer to securely access session tokens without breaking encapsulation
|
|
257
|
+
*/
|
|
258
|
+
getSessionToken(profileId: string, sessionId: string): string | undefined;
|
|
259
|
+
getSessionFiltering(profileId: string, sessionId: string): Record<string, string[]> | undefined;
|
|
260
|
+
getSessionFilteringHeader(profileId: string, sessionId: string): string | undefined;
|
|
261
|
+
getSessionToolFilterRequest(profileId: string, sessionId: string): SessionToolFilterRequest | undefined;
|
|
262
|
+
getSessionToolFilter(profileId: string, sessionId: string): SessionToolFilter | undefined;
|
|
263
|
+
getSessionToolFilterHeader(profileId: string, sessionId: string): string | undefined;
|
|
264
|
+
setSessionToolFilter(profileId: string, sessionId: string, toolFilter: SessionToolFilter): void;
|
|
265
|
+
recordGlobalToolFilterMetrics(summary: {
|
|
266
|
+
originalCount: number;
|
|
267
|
+
allowedCount: number;
|
|
268
|
+
removedCount: number;
|
|
269
|
+
patternCounts: Record<string, number>;
|
|
270
|
+
}): void;
|
|
271
|
+
recordSessionToolFilterMetrics(sessionId: string, allowedCount: number, request: SessionToolFilterRequest): void;
|
|
272
|
+
recordToolFilterRejection(tool: string, source: 'env' | 'session'): void;
|
|
273
|
+
/**
|
|
274
|
+
* Ensure session has a valid access token, refreshing if necessary
|
|
275
|
+
*
|
|
276
|
+
* Why: Transparently refresh expired OAuth tokens before making API calls
|
|
277
|
+
* Returns true if token is valid (or was successfully refreshed), false otherwise
|
|
278
|
+
*/
|
|
279
|
+
ensureValidSessionToken(profileId: string, sessionId: string): Promise<boolean>;
|
|
280
|
+
/**
|
|
281
|
+
* Refresh access token using refresh token
|
|
282
|
+
*
|
|
283
|
+
* Why: Automatically renew expired OAuth access tokens without user intervention
|
|
284
|
+
* Returns true on success, false on failure
|
|
285
|
+
*/
|
|
286
|
+
private refreshAccessToken;
|
|
287
|
+
/**
|
|
288
|
+
* Set message handler for processing incoming JSON-RPC messages
|
|
289
|
+
*/
|
|
290
|
+
setMessageHandler(handler: (message: unknown, sessionId?: string, profileId?: string) => Promise<unknown>): void;
|
|
291
|
+
/**
|
|
292
|
+
* Check if OAuth provider is configured
|
|
293
|
+
*/
|
|
294
|
+
hasOAuthProvider(profileId?: string): boolean;
|
|
295
|
+
/**
|
|
296
|
+
* Get server URL
|
|
297
|
+
*/
|
|
298
|
+
getServerUrl(profileId?: string): string;
|
|
299
|
+
/**
|
|
300
|
+
* Get OAuth authorization URL
|
|
301
|
+
*/
|
|
302
|
+
getOAuthAuthorizationUrl(profileId?: string): string;
|
|
303
|
+
/**
|
|
304
|
+
* Get OAuth scopes
|
|
305
|
+
*/
|
|
306
|
+
getOAuthScopes(profileId?: string): string[];
|
|
307
|
+
/**
|
|
308
|
+
* Start HTTP server
|
|
309
|
+
*/
|
|
310
|
+
start(): Promise<void>;
|
|
311
|
+
/**
|
|
312
|
+
* Stop HTTP server
|
|
313
|
+
*/
|
|
314
|
+
stop(): Promise<void>;
|
|
315
|
+
}
|
|
316
|
+
//# sourceMappingURL=http-transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-transport.d.ts","sourceRoot":"","sources":["../../src/http-transport.ts"],"names":[],"mappings":"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"}
|