@llmindset/hf-mcp-server 0.1.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/LICENSE +21 -0
  2. package/components.json +21 -0
  3. package/dist/server/application.d.ts +30 -0
  4. package/dist/server/application.d.ts.map +1 -0
  5. package/dist/server/application.js +131 -0
  6. package/dist/server/application.js.map +1 -0
  7. package/dist/server/gradio-endpoint-connector.d.ts +46 -0
  8. package/dist/server/gradio-endpoint-connector.d.ts.map +1 -0
  9. package/dist/server/gradio-endpoint-connector.js +348 -0
  10. package/dist/server/gradio-endpoint-connector.js.map +1 -0
  11. package/dist/server/gradio-endpoint-connector.test.d.ts +2 -0
  12. package/dist/server/gradio-endpoint-connector.test.d.ts.map +1 -0
  13. package/dist/server/gradio-endpoint-connector.test.js +313 -0
  14. package/dist/server/gradio-endpoint-connector.test.js.map +1 -0
  15. package/dist/server/lib/logger.d.ts +5 -0
  16. package/dist/server/lib/logger.d.ts.map +1 -0
  17. package/dist/server/lib/logger.js +45 -0
  18. package/dist/server/lib/logger.js.map +1 -0
  19. package/dist/server/lib/mcp-api-client.d.ts +42 -0
  20. package/dist/server/lib/mcp-api-client.d.ts.map +1 -0
  21. package/dist/server/lib/mcp-api-client.js +188 -0
  22. package/dist/server/lib/mcp-api-client.js.map +1 -0
  23. package/dist/server/lib/tool-selection-strategy.d.ts +29 -0
  24. package/dist/server/lib/tool-selection-strategy.d.ts.map +1 -0
  25. package/dist/server/lib/tool-selection-strategy.js +113 -0
  26. package/dist/server/lib/tool-selection-strategy.js.map +1 -0
  27. package/dist/server/lib/tool-selection-strategy.test.d.ts +2 -0
  28. package/dist/server/lib/tool-selection-strategy.test.d.ts.map +1 -0
  29. package/dist/server/lib/tool-selection-strategy.test.js +407 -0
  30. package/dist/server/lib/tool-selection-strategy.test.js.map +1 -0
  31. package/dist/server/mcp-proxy.d.ts +5 -0
  32. package/dist/server/mcp-proxy.d.ts.map +1 -0
  33. package/dist/server/mcp-proxy.js +66 -0
  34. package/dist/server/mcp-proxy.js.map +1 -0
  35. package/dist/server/mcp-server.d.ts +8 -0
  36. package/dist/server/mcp-server.d.ts.map +1 -0
  37. package/dist/server/mcp-server.js +219 -0
  38. package/dist/server/mcp-server.js.map +1 -0
  39. package/dist/server/sse.d.ts +3 -0
  40. package/dist/server/sse.d.ts.map +1 -0
  41. package/dist/server/sse.js +47 -0
  42. package/dist/server/sse.js.map +1 -0
  43. package/dist/server/stdio.d.ts +3 -0
  44. package/dist/server/stdio.d.ts.map +1 -0
  45. package/dist/server/stdio.js +49 -0
  46. package/dist/server/stdio.js.map +1 -0
  47. package/dist/server/streamableHttp.d.ts +3 -0
  48. package/dist/server/streamableHttp.d.ts.map +1 -0
  49. package/dist/server/streamableHttp.js +53 -0
  50. package/dist/server/streamableHttp.js.map +1 -0
  51. package/dist/server/transport/base-transport.d.ts +132 -0
  52. package/dist/server/transport/base-transport.d.ts.map +1 -0
  53. package/dist/server/transport/base-transport.js +390 -0
  54. package/dist/server/transport/base-transport.js.map +1 -0
  55. package/dist/server/transport/json-rpc-errors.d.ts +36 -0
  56. package/dist/server/transport/json-rpc-errors.d.ts.map +1 -0
  57. package/dist/server/transport/json-rpc-errors.js +53 -0
  58. package/dist/server/transport/json-rpc-errors.js.map +1 -0
  59. package/dist/server/transport/sse-transport.d.ts +17 -0
  60. package/dist/server/transport/sse-transport.d.ts.map +1 -0
  61. package/dist/server/transport/sse-transport.js +170 -0
  62. package/dist/server/transport/sse-transport.js.map +1 -0
  63. package/dist/server/transport/stateless-http-transport.d.ts +11 -0
  64. package/dist/server/transport/stateless-http-transport.d.ts.map +1 -0
  65. package/dist/server/transport/stateless-http-transport.js +172 -0
  66. package/dist/server/transport/stateless-http-transport.js.map +1 -0
  67. package/dist/server/transport/stateless-http-transport.test.d.ts +2 -0
  68. package/dist/server/transport/stateless-http-transport.test.d.ts.map +1 -0
  69. package/dist/server/transport/stateless-http-transport.test.js +58 -0
  70. package/dist/server/transport/stateless-http-transport.test.js.map +1 -0
  71. package/dist/server/transport/stdio-transport.d.ts +12 -0
  72. package/dist/server/transport/stdio-transport.d.ts.map +1 -0
  73. package/dist/server/transport/stdio-transport.js +78 -0
  74. package/dist/server/transport/stdio-transport.js.map +1 -0
  75. package/dist/server/transport/streamable-http-transport.d.ts +21 -0
  76. package/dist/server/transport/streamable-http-transport.d.ts.map +1 -0
  77. package/dist/server/transport/streamable-http-transport.js +220 -0
  78. package/dist/server/transport/streamable-http-transport.js.map +1 -0
  79. package/dist/server/transport/transport-factory.d.ts +5 -0
  80. package/dist/server/transport/transport-factory.d.ts.map +1 -0
  81. package/dist/server/transport/transport-factory.js +21 -0
  82. package/dist/server/transport/transport-factory.js.map +1 -0
  83. package/dist/server/utils/api-metrics.d.ts +15 -0
  84. package/dist/server/utils/api-metrics.d.ts.map +1 -0
  85. package/dist/server/utils/api-metrics.js +39 -0
  86. package/dist/server/utils/api-metrics.js.map +1 -0
  87. package/dist/server/utils/auth-utils.d.ts +6 -0
  88. package/dist/server/utils/auth-utils.d.ts.map +1 -0
  89. package/dist/server/utils/auth-utils.js +25 -0
  90. package/dist/server/utils/auth-utils.js.map +1 -0
  91. package/dist/server/utils/browser-detection.d.ts +2 -0
  92. package/dist/server/utils/browser-detection.d.ts.map +1 -0
  93. package/dist/server/utils/browser-detection.js +15 -0
  94. package/dist/server/utils/browser-detection.js.map +1 -0
  95. package/dist/server/utils/browser-detection.test.d.ts +2 -0
  96. package/dist/server/utils/browser-detection.test.d.ts.map +1 -0
  97. package/dist/server/utils/browser-detection.test.js +50 -0
  98. package/dist/server/utils/browser-detection.test.js.map +1 -0
  99. package/dist/server/utils/gradio-metrics.d.ts +22 -0
  100. package/dist/server/utils/gradio-metrics.d.ts.map +1 -0
  101. package/dist/server/utils/gradio-metrics.js +60 -0
  102. package/dist/server/utils/gradio-metrics.js.map +1 -0
  103. package/dist/server/utils/query-params.d.ts +3 -0
  104. package/dist/server/utils/query-params.d.ts.map +1 -0
  105. package/dist/server/utils/query-params.js +17 -0
  106. package/dist/server/utils/query-params.js.map +1 -0
  107. package/dist/server/utils/query-params.test.d.ts +2 -0
  108. package/dist/server/utils/query-params.test.d.ts.map +1 -0
  109. package/dist/server/utils/query-params.test.js +75 -0
  110. package/dist/server/utils/query-params.test.js.map +1 -0
  111. package/dist/server/web-server.d.ts +29 -0
  112. package/dist/server/web-server.d.ts.map +1 -0
  113. package/dist/server/web-server.js +273 -0
  114. package/dist/server/web-server.js.map +1 -0
  115. package/dist/shared/constants.d.ts +5 -0
  116. package/dist/shared/constants.d.ts.map +1 -0
  117. package/dist/shared/constants.js +4 -0
  118. package/dist/shared/constants.js.map +1 -0
  119. package/dist/shared/settings.d.ts +19 -0
  120. package/dist/shared/settings.d.ts.map +1 -0
  121. package/dist/shared/settings.js +47 -0
  122. package/dist/shared/settings.js.map +1 -0
  123. package/dist/shared/transport-info.d.ts +18 -0
  124. package/dist/shared/transport-info.d.ts.map +1 -0
  125. package/dist/shared/transport-info.js +22 -0
  126. package/dist/shared/transport-info.js.map +1 -0
  127. package/dist/shared/transport-info.test.d.ts +2 -0
  128. package/dist/shared/transport-info.test.d.ts.map +1 -0
  129. package/dist/shared/transport-info.test.js +90 -0
  130. package/dist/shared/transport-info.test.js.map +1 -0
  131. package/dist/shared/transport-metrics.d.ts +180 -0
  132. package/dist/shared/transport-metrics.d.ts.map +1 -0
  133. package/dist/shared/transport-metrics.js +247 -0
  134. package/dist/shared/transport-metrics.js.map +1 -0
  135. package/dist/shared/transport-metrics.test.d.ts +2 -0
  136. package/dist/shared/transport-metrics.test.d.ts.map +1 -0
  137. package/dist/shared/transport-metrics.test.js +10 -0
  138. package/dist/shared/transport-metrics.test.js.map +1 -0
  139. package/dist/web/assets/button-C4Q2P8Ns.css +1 -0
  140. package/dist/web/assets/button-DOWMQOme.js +79 -0
  141. package/dist/web/assets/hf-logo-DbjPOSLw.svg +21 -0
  142. package/dist/web/assets/main-CB77vUha.js +115 -0
  143. package/dist/web/assets/mcpWelcome-Cpw1-KJi.js +1 -0
  144. package/dist/web/hf-logo-DbjPOSLw.svg +21 -0
  145. package/dist/web/index.html +15 -0
  146. package/dist/web/mcp-welcome.html +92 -0
  147. package/package.json +100 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Hugging Face
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,21 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema.json",
3
+ "style": "new-york",
4
+ "rsc": false,
5
+ "tsx": true,
6
+ "tailwind": {
7
+ "config": "",
8
+ "css": "src/index.css",
9
+ "baseColor": "neutral",
10
+ "cssVariables": true,
11
+ "prefix": ""
12
+ },
13
+ "aliases": {
14
+ "components": "@/components",
15
+ "utils": "@/lib/utils",
16
+ "ui": "@/components/ui",
17
+ "lib": "@/lib",
18
+ "hooks": "@/hooks"
19
+ },
20
+ "iconLibrary": "lucide"
21
+ }
@@ -0,0 +1,30 @@
1
+ import { type Express } from 'express';
2
+ import { type TransportType } from '../shared/constants.js';
3
+ import type { WebServer } from './web-server.js';
4
+ import { type ApiClientConfig } from './lib/mcp-api-client.js';
5
+ export interface ApplicationOptions {
6
+ transportType: TransportType;
7
+ webAppPort: number;
8
+ webServerInstance: WebServer;
9
+ apiClientConfig?: ApiClientConfig;
10
+ }
11
+ export declare class Application {
12
+ private serverFactory;
13
+ private webServerInstance;
14
+ private appInstance;
15
+ private transport?;
16
+ private apiClient;
17
+ private transportType;
18
+ private webAppPort;
19
+ private isDev;
20
+ constructor(options: ApplicationOptions);
21
+ start(): Promise<void>;
22
+ private setupToolManagement;
23
+ private initializeTransport;
24
+ private startWebServer;
25
+ private startToolManagement;
26
+ stop(): Promise<void>;
27
+ getExpressApp(): Express;
28
+ }
29
+ export declare function maskToken(token: string): string;
30
+ //# sourceMappingURL=application.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../../src/server/application.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAI5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAIjD,OAAO,EAAgB,KAAK,eAAe,EAAuB,MAAM,yBAAyB,CAAC;AAGlG,MAAM,WAAW,kBAAkB;IAClC,aAAa,EAAE,aAAa,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,SAAS,CAAC;IAC7B,eAAe,CAAC,EAAE,eAAe,CAAC;CAClC;AAKD,qBAAa,WAAW;IACvB,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,iBAAiB,CAAY;IACrC,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,SAAS,CAAC,CAAgB;IAClC,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,KAAK,CAAU;gBAEX,OAAO,EAAE,kBAAkB;IAkEjC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA0B5B,OAAO,CAAC,mBAAmB;YAQb,mBAAmB;YAkBnB,cAAc;YAcd,mBAAmB;IAO3B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAiB3B,aAAa,IAAI,OAAO;CAGxB;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAG/C"}
@@ -0,0 +1,131 @@
1
+ import {} from 'express';
2
+ import {} from '../shared/constants.js';
3
+ import { createTransport } from './transport/transport-factory.js';
4
+ import { logger } from './lib/logger.js';
5
+ import { createServerFactory } from './mcp-server.js';
6
+ import { createProxyServerFactory } from './mcp-proxy.js';
7
+ import { McpApiClient } from './lib/mcp-api-client.js';
8
+ import { DEFAULT_SPACE_TOOLS } from '../shared/settings.js';
9
+ export class Application {
10
+ serverFactory;
11
+ webServerInstance;
12
+ appInstance;
13
+ transport;
14
+ apiClient;
15
+ transportType;
16
+ webAppPort;
17
+ isDev;
18
+ constructor(options) {
19
+ this.transportType = options.transportType;
20
+ this.webAppPort = options.webAppPort;
21
+ this.webServerInstance = options.webServerInstance;
22
+ this.isDev = process.env.NODE_ENV === 'development';
23
+ const defaultHfToken = process.env.DEFAULT_HF_TOKEN;
24
+ const transportInfo = {
25
+ transport: this.transportType,
26
+ port: this.webAppPort,
27
+ defaultHfTokenSet: !!defaultHfToken,
28
+ hfTokenMasked: defaultHfToken ? maskToken(defaultHfToken) : undefined,
29
+ jsonResponseEnabled: this.transportType === 'streamableHttpJson',
30
+ externalApiMode: !!process.env.USER_CONFIG_API,
31
+ stdioClient: this.transportType === 'stdio' ? null : undefined,
32
+ };
33
+ const convertSpaceToolsToGradioEndpoints = (spaceTools) => {
34
+ return spaceTools.map((spaceTool) => ({
35
+ name: spaceTool.name,
36
+ subdomain: spaceTool.subdomain,
37
+ id: spaceTool._id,
38
+ emoji: spaceTool.emoji,
39
+ }));
40
+ };
41
+ const defaultGradioEndpoints = convertSpaceToolsToGradioEndpoints(DEFAULT_SPACE_TOOLS);
42
+ let apiClientConfig;
43
+ const userConfigApi = process.env.USER_CONFIG_API;
44
+ if (userConfigApi) {
45
+ apiClientConfig = {
46
+ type: 'external',
47
+ externalUrl: userConfigApi,
48
+ hfToken: process.env.DEFAULT_HF_TOKEN,
49
+ };
50
+ logger.info(`Using external API client with user config API: ${userConfigApi}`);
51
+ }
52
+ else {
53
+ apiClientConfig = options.apiClientConfig || {
54
+ type: 'polling',
55
+ baseUrl: `http://localhost:${String(this.webAppPort)}`,
56
+ pollInterval: 5000,
57
+ staticGradioEndpoints: defaultGradioEndpoints,
58
+ };
59
+ logger.info(`Using internal API client with user config API: ${apiClientConfig.baseUrl}}`);
60
+ }
61
+ this.apiClient = new McpApiClient(apiClientConfig, transportInfo);
62
+ const originalServerFactory = createServerFactory(this.webServerInstance, this.apiClient);
63
+ this.serverFactory = createProxyServerFactory(this.webServerInstance, this.apiClient, originalServerFactory);
64
+ this.appInstance = this.webServerInstance.getApp();
65
+ }
66
+ async start() {
67
+ const transportInfo = this.apiClient.getTransportInfo();
68
+ if (transportInfo) {
69
+ this.webServerInstance.setTransportInfo(transportInfo);
70
+ }
71
+ this.setupToolManagement();
72
+ this.webServerInstance.setupApiRoutes();
73
+ await this.startWebServer();
74
+ await this.initializeTransport();
75
+ await this.webServerInstance.setupStaticFiles(this.isDev);
76
+ await this.startToolManagement();
77
+ }
78
+ setupToolManagement() {
79
+ this.webServerInstance.initializeToolStates();
80
+ this.webServerInstance.setApiClient(this.apiClient);
81
+ }
82
+ async initializeTransport() {
83
+ if (this.transportType === 'unknown')
84
+ return;
85
+ try {
86
+ this.transport = createTransport(this.transportType, this.serverFactory, this.appInstance);
87
+ this.webServerInstance.setTransport(this.transport);
88
+ await this.transport.initialize({
89
+ port: this.webAppPort,
90
+ });
91
+ }
92
+ catch (error) {
93
+ logger.error({ error }, `Error initializing ${this.transportType} transport`);
94
+ throw error;
95
+ }
96
+ }
97
+ async startWebServer() {
98
+ await this.webServerInstance.start(this.webAppPort);
99
+ logger.info(`Server running at http://localhost:${String(this.webAppPort)}`);
100
+ logger.info({ transportType: this.transportType, mode: this.isDev ? 'development with HMR' : 'production' }, 'Server configuration');
101
+ if (this.isDev) {
102
+ logger.info('HMR is active - frontend changes will be automatically reflected in the browser');
103
+ logger.info("For server changes, use 'npm run dev:watch' to automatically rebuild and apply changes");
104
+ }
105
+ }
106
+ async startToolManagement() {
107
+ await this.apiClient.startPolling((toolId, enabled) => {
108
+ logger.debug(`Global tool ${toolId} ${enabled ? 'enabled' : 'disabled'}`);
109
+ });
110
+ }
111
+ async stop() {
112
+ this.apiClient.stopPolling();
113
+ if (this.transport?.shutdown) {
114
+ this.transport.shutdown();
115
+ }
116
+ logger.info('Shutting down web server...');
117
+ await this.webServerInstance.stop();
118
+ if (this.transport) {
119
+ await this.transport.cleanup();
120
+ }
121
+ }
122
+ getExpressApp() {
123
+ return this.appInstance;
124
+ }
125
+ }
126
+ export function maskToken(token) {
127
+ if (!token || token.length <= 9)
128
+ return token;
129
+ return `${token.substring(0, 4)}...${token.substring(token.length - 5)}`;
130
+ }
131
+ //# sourceMappingURL=application.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"application.js","sourceRoot":"","sources":["../../src/server/application.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import { Client } from '@modelcontextprotocol/sdk/client/index.js';
2
+ import { type Tool } from '@modelcontextprotocol/sdk/types.js';
3
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
4
+ import { z } from 'zod';
5
+ import type { GradioEndpoint } from './lib/mcp-api-client.js';
6
+ interface JsonSchemaProperty {
7
+ type?: string;
8
+ description?: string;
9
+ default?: unknown;
10
+ [key: string]: unknown;
11
+ }
12
+ interface JsonSchema {
13
+ type?: string;
14
+ properties?: Record<string, JsonSchemaProperty>;
15
+ required?: string[];
16
+ [key: string]: unknown;
17
+ }
18
+ interface EndpointConnection {
19
+ endpointId: string;
20
+ originalIndex: number;
21
+ client: Client | null;
22
+ tool: Tool;
23
+ name?: string;
24
+ emoji?: string;
25
+ sseUrl?: string;
26
+ isPrivate?: boolean;
27
+ }
28
+ type EndpointConnectionResult = {
29
+ success: true;
30
+ endpointId: string;
31
+ connection: EndpointConnection;
32
+ } | {
33
+ success: false;
34
+ endpointId: string;
35
+ error: Error;
36
+ };
37
+ export declare function parseSchemaResponse(schemaResponse: unknown, endpointId: string, subdomain: string): {
38
+ name: string;
39
+ description?: string;
40
+ inputSchema: JsonSchema;
41
+ };
42
+ export declare function connectToGradioEndpoints(gradioEndpoints: GradioEndpoint[], hfToken: string | undefined): Promise<EndpointConnectionResult[]>;
43
+ export declare function registerRemoteTool(server: McpServer, connection: EndpointConnection, hfToken?: string): void;
44
+ export declare function convertJsonSchemaToZod(jsonSchemaProperty: JsonSchemaProperty, skipDefault?: boolean): z.ZodTypeAny;
45
+ export {};
46
+ //# sourceMappingURL=gradio-endpoint-connector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gradio-endpoint-connector.d.ts","sourceRoot":"","sources":["../../src/server/gradio-endpoint-connector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAEnE,OAAO,EAAwB,KAAK,IAAI,EAAE,MAAM,oCAAoC,CAAC;AACrF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAM9D,UAAU,kBAAkB;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB;AAED,UAAU,UAAU;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAChD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB;AASD,UAAU,kBAAkB;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,KAAK,wBAAwB,GAC1B;IACA,OAAO,EAAE,IAAI,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,kBAAkB,CAAC;CAC9B,GACD;IACA,OAAO,EAAE,KAAK,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,KAAK,CAAC;CACZ,CAAC;AAkBL,wBAAgB,mBAAmB,CAClC,cAAc,EAAE,OAAO,EACvB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GACf;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,UAAU,CAAA;CAAE,CAmEjE;AAsGD,wBAAsB,wBAAwB,CAC7C,eAAe,EAAE,cAAc,EAAE,EACjC,OAAO,EAAE,MAAM,GAAG,SAAS,GACzB,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAsErC;AAwDD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,kBAAkB,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAwG5G;AAOD,wBAAgB,sBAAsB,CAAC,kBAAkB,EAAE,kBAAkB,EAAE,WAAW,UAAQ,GAAG,CAAC,CAAC,UAAU,CAkFhH"}
@@ -0,0 +1,348 @@
1
+ import { Client } from '@modelcontextprotocol/sdk/client/index.js';
2
+ import { SSEClientTransport } from '@modelcontextprotocol/sdk/client/sse.js';
3
+ import { CallToolResultSchema } from '@modelcontextprotocol/sdk/types.js';
4
+ import { logger } from './lib/logger.js';
5
+ import { z } from 'zod';
6
+ import { spaceInfo } from '@huggingface/hub';
7
+ import { gradioMetrics, getMetricsSafeName } from './utils/gradio-metrics.js';
8
+ import { GRADIO_PREFIX, GRADIO_PRIVATE_PREFIX } from '../shared/constants.js';
9
+ const CONNECTION_TIMEOUT_MS = 12000;
10
+ function createTimeout(ms) {
11
+ return new Promise((_, reject) => {
12
+ setTimeout(() => {
13
+ reject(new Error(`Connection timeout after ${ms.toString()}ms`));
14
+ }, ms);
15
+ });
16
+ }
17
+ export function parseSchemaResponse(schemaResponse, endpointId, subdomain) {
18
+ let tools = [];
19
+ if (Array.isArray(schemaResponse)) {
20
+ tools = schemaResponse.filter((tool) => typeof tool === 'object' &&
21
+ tool !== null &&
22
+ 'name' in tool &&
23
+ typeof tool.name === 'string' &&
24
+ 'inputSchema' in tool);
25
+ logger.debug({
26
+ endpointId,
27
+ toolCount: tools.length,
28
+ tools: tools.map((t) => t.name),
29
+ }, 'Retrieved schema (array format)');
30
+ }
31
+ else if (typeof schemaResponse === 'object' && schemaResponse !== null) {
32
+ const schema = schemaResponse;
33
+ tools = Object.entries(schema).map(([name, toolSchema]) => ({
34
+ name,
35
+ description: typeof toolSchema.description === 'string' ? toolSchema.description : undefined,
36
+ inputSchema: toolSchema,
37
+ }));
38
+ logger.debug({
39
+ endpointId,
40
+ toolCount: tools.length,
41
+ tools: tools.map((t) => t.name),
42
+ }, 'Retrieved schema (object format)');
43
+ }
44
+ else {
45
+ logger.error({ endpointId, subdomain, schemaType: typeof schemaResponse }, 'Invalid schema format');
46
+ throw new Error('Invalid schema format: expected array or object');
47
+ }
48
+ if (tools.length === 0) {
49
+ logger.error({ endpointId, subdomain }, 'No tools found in schema');
50
+ throw new Error('No tools found in schema');
51
+ }
52
+ let selectedTool = tools[tools.length - 1];
53
+ if (!selectedTool) {
54
+ logger.error({ endpointId, subdomain }, 'No tool selected from available tools');
55
+ throw new Error('No tool selected from available tools');
56
+ }
57
+ const inferTool = tools.find((tool) => tool.name.toLowerCase().includes('infer'));
58
+ if (inferTool) {
59
+ selectedTool = inferTool;
60
+ logger.debug({ endpointId, toolName: selectedTool.name }, 'Selected tool containing "infer"');
61
+ }
62
+ else {
63
+ logger.debug({ endpointId, toolName: selectedTool.name }, 'Selected last tool (no "infer" tool found)');
64
+ }
65
+ return selectedTool;
66
+ }
67
+ async function isSpacePrivate(spaceName, hfToken) {
68
+ try {
69
+ if (!hfToken)
70
+ return false;
71
+ const info = await spaceInfo({ name: spaceName, credentials: { accessToken: hfToken } });
72
+ return info.private;
73
+ }
74
+ catch (error) {
75
+ logger.warn({ spaceName, error }, 'Failed to fetch space info, assuming public');
76
+ return false;
77
+ }
78
+ }
79
+ async function fetchEndpointSchema(endpoint, originalIndex, hfToken) {
80
+ const endpointId = `endpoint${(originalIndex + 1).toString()}`;
81
+ const schemaUrl = `https://${endpoint.subdomain}.hf.space/gradio_api/mcp/schema`;
82
+ const isPrivateSpace = await isSpacePrivate(endpoint.name, hfToken);
83
+ logger.debug({ url: schemaUrl, endpointId }, 'Fetching schema from endpoint');
84
+ const headers = {
85
+ 'Content-Type': 'application/json',
86
+ };
87
+ if (isPrivateSpace && hfToken) {
88
+ headers['X-HF-Authorization'] = `Bearer ${hfToken}`;
89
+ }
90
+ const apiTimeout = process.env.HF_API_TIMEOUT ? parseInt(process.env.HF_API_TIMEOUT, 10) : 12500;
91
+ const controller = new AbortController();
92
+ const timeoutId = setTimeout(() => controller.abort(), apiTimeout);
93
+ const response = await fetch(schemaUrl, {
94
+ method: 'GET',
95
+ headers,
96
+ signal: controller.signal,
97
+ });
98
+ clearTimeout(timeoutId);
99
+ if (!response.ok) {
100
+ logger.error({
101
+ endpointId,
102
+ subdomain: endpoint.subdomain,
103
+ status: response.status,
104
+ statusText: response.statusText,
105
+ }, 'Failed to fetch schema from endpoint');
106
+ throw new Error(`Failed to fetch schema: ${response.status} ${response.statusText}`);
107
+ }
108
+ const schemaResponse = (await response.json());
109
+ const selectedTool = parseSchemaResponse(schemaResponse, endpointId, endpoint.subdomain);
110
+ const tool = {
111
+ name: selectedTool.name,
112
+ description: selectedTool.description || `${selectedTool.name} tool`,
113
+ inputSchema: {
114
+ type: 'object',
115
+ properties: selectedTool.inputSchema.properties || {},
116
+ required: selectedTool.inputSchema.required || [],
117
+ description: selectedTool.inputSchema.description,
118
+ },
119
+ };
120
+ return {
121
+ endpointId,
122
+ originalIndex,
123
+ client: null,
124
+ tool,
125
+ name: endpoint.name,
126
+ emoji: endpoint.emoji,
127
+ sseUrl: `https://${endpoint.subdomain}.hf.space/gradio_api/mcp/sse`,
128
+ isPrivate: isPrivateSpace,
129
+ };
130
+ }
131
+ export async function connectToGradioEndpoints(gradioEndpoints, hfToken) {
132
+ const validWithIndex = gradioEndpoints
133
+ .map((ep, index) => ({ endpoint: ep, originalIndex: index }))
134
+ .filter((item) => item.endpoint.subdomain && item.endpoint.subdomain.trim() !== '');
135
+ if (validWithIndex.length === 0) {
136
+ logger.debug('No valid Gradio endpoints to fetch schemas from');
137
+ return [];
138
+ }
139
+ const schemaFetchTasks = validWithIndex.map(({ endpoint, originalIndex }) => {
140
+ const endpointId = `endpoint${(originalIndex + 1).toString()}`;
141
+ return Promise.race([fetchEndpointSchema(endpoint, originalIndex, hfToken), createTimeout(CONNECTION_TIMEOUT_MS)])
142
+ .then((connection) => ({
143
+ success: true,
144
+ endpointId,
145
+ connection,
146
+ }))
147
+ .catch((error) => {
148
+ logger.error({
149
+ endpointId,
150
+ subdomain: endpoint.subdomain,
151
+ error: error instanceof Error ? error.message : String(error),
152
+ }, 'Failed to fetch schema from endpoint');
153
+ return {
154
+ success: false,
155
+ endpointId,
156
+ error: error instanceof Error ? error : new Error(String(error)),
157
+ };
158
+ });
159
+ });
160
+ const results = await Promise.all(schemaFetchTasks);
161
+ const successful = results.filter((r) => r.success);
162
+ const failed = results.filter((r) => !r.success);
163
+ logger.debug({
164
+ total: results.length,
165
+ successful: successful.length,
166
+ failed: failed.length,
167
+ }, 'Gradio endpoint schema fetch results');
168
+ if (failed.length > 0) {
169
+ failed.forEach((f) => {
170
+ logger.error({
171
+ endpointId: f.endpointId,
172
+ error: f.error.message,
173
+ }, 'Endpoint schema fetch failed');
174
+ });
175
+ }
176
+ return results;
177
+ }
178
+ async function createLazyConnection(sseUrl, hfToken) {
179
+ logger.debug({ url: sseUrl }, 'Creating lazy SSE connection for tool execution');
180
+ const remoteClient = new Client({
181
+ name: 'hf-mcp-proxy-client',
182
+ version: '1.0.0',
183
+ }, {
184
+ capabilities: {},
185
+ });
186
+ const transportOptions = {};
187
+ if (hfToken) {
188
+ const headerName = 'X-HF-Authorization';
189
+ const customHeaders = {
190
+ [headerName]: `Bearer ${hfToken}`,
191
+ };
192
+ logger.trace(`connection to gradio endpoint with ${headerName} header`);
193
+ transportOptions.requestInit = {
194
+ headers: customHeaders,
195
+ };
196
+ transportOptions.eventSourceInit = {
197
+ fetch: (url, init) => {
198
+ const headers = new Headers(init.headers);
199
+ Object.entries(customHeaders).forEach(([key, value]) => {
200
+ headers.set(key, value);
201
+ });
202
+ return fetch(url.toString(), { ...init, headers });
203
+ },
204
+ };
205
+ }
206
+ logger.debug(`MCP Client connection contains token? (${undefined != hfToken})`);
207
+ const transport = new SSEClientTransport(new URL(sseUrl), transportOptions);
208
+ await remoteClient.connect(transport);
209
+ logger.debug('Lazy SSE connection established');
210
+ return remoteClient;
211
+ }
212
+ export function registerRemoteTool(server, connection, hfToken) {
213
+ const sanitizedName = connection.name ? connection.name.replace(/[/\-\s]+/g, '_').toLowerCase() : 'unknown';
214
+ const prefix = connection.isPrivate ? GRADIO_PRIVATE_PREFIX : GRADIO_PREFIX;
215
+ const remoteName = `${prefix}${(connection.originalIndex + 1).toString()}_${sanitizedName}`;
216
+ logger.trace({
217
+ endpointId: connection.endpointId,
218
+ originalName: connection.tool.name,
219
+ remoteName,
220
+ description: connection.tool.description,
221
+ }, 'Registering remote tool');
222
+ logger.trace({
223
+ toolName: connection.tool.name,
224
+ inputSchema: connection.tool.inputSchema,
225
+ }, 'Remote tool inputSchema structure');
226
+ const schemaShape = {};
227
+ if (typeof connection.tool.inputSchema === 'object' && 'properties' in connection.tool.inputSchema) {
228
+ const jsonSchema = connection.tool.inputSchema;
229
+ const props = jsonSchema.properties || {};
230
+ const required = jsonSchema.required || [];
231
+ for (const [key, jsonSchemaProperty] of Object.entries(props)) {
232
+ const isRequired = required.includes(key);
233
+ let zodSchema = convertJsonSchemaToZod(jsonSchemaProperty, isRequired);
234
+ if (!isRequired) {
235
+ zodSchema = zodSchema.optional();
236
+ }
237
+ schemaShape[key] = zodSchema;
238
+ }
239
+ }
240
+ const displayName = connection.name || 'Unknown Space';
241
+ const toolTitle = `${displayName} - ${connection.tool.name}${connection.emoji ? ` ${connection.emoji}` : ''}`;
242
+ const toolDescription = connection.tool.description
243
+ ? `${connection.tool.description} (from ${displayName})`
244
+ : `${connection.tool.name} tool from ${displayName}`;
245
+ server.tool(remoteName, toolDescription, schemaShape, {
246
+ openWorldHint: true,
247
+ title: toolTitle,
248
+ }, async (params) => {
249
+ logger.info({ tool: connection.tool.name, params }, 'Calling remote tool');
250
+ try {
251
+ if (!connection.sseUrl) {
252
+ throw new Error('No SSE URL available for tool execution');
253
+ }
254
+ logger.debug({ tool: connection.tool.name }, 'Creating SSE connection for tool execution');
255
+ const activeClient = await createLazyConnection(connection.sseUrl, hfToken);
256
+ const result = await activeClient.request({
257
+ method: 'tools/call',
258
+ params: {
259
+ name: connection.tool.name,
260
+ arguments: params,
261
+ },
262
+ }, CallToolResultSchema);
263
+ const metricsName = getMetricsSafeName(remoteName);
264
+ if (result.isError) {
265
+ logger.warn({ tool: connection.tool.name, error: result.content }, 'Gradio tool call returned error');
266
+ gradioMetrics.recordFailure(metricsName);
267
+ }
268
+ else {
269
+ logger.debug({ tool: connection.tool.name }, 'Gradio tool call returned error');
270
+ gradioMetrics.recordSuccess(metricsName);
271
+ }
272
+ return result;
273
+ }
274
+ catch (error) {
275
+ logger.error({ tool: connection.tool.name, error }, 'Remote tool call failed');
276
+ const metricsName = getMetricsSafeName(remoteName);
277
+ gradioMetrics.recordFailure(metricsName);
278
+ throw error;
279
+ }
280
+ });
281
+ }
282
+ export function convertJsonSchemaToZod(jsonSchemaProperty, skipDefault = false) {
283
+ let zodSchema;
284
+ if (jsonSchemaProperty.title === 'FileData' ||
285
+ (jsonSchemaProperty.format === 'a http or https url to a file' &&
286
+ typeof jsonSchemaProperty.default === 'object' &&
287
+ jsonSchemaProperty.default !== null)) {
288
+ zodSchema = z.object({
289
+ path: z.string(),
290
+ url: z.string().optional(),
291
+ size: z.number().nullable().optional(),
292
+ orig_name: z.string().optional(),
293
+ mime_type: z.string().nullable().optional(),
294
+ is_stream: z.boolean().optional(),
295
+ meta: z
296
+ .object({
297
+ _type: z.string().optional(),
298
+ })
299
+ .optional(),
300
+ });
301
+ }
302
+ else {
303
+ switch (jsonSchemaProperty.type) {
304
+ case 'string':
305
+ zodSchema = z.string();
306
+ break;
307
+ case 'number':
308
+ zodSchema = z.number();
309
+ break;
310
+ case 'boolean':
311
+ zodSchema = z.boolean();
312
+ break;
313
+ case 'array':
314
+ zodSchema = z.array(z.any());
315
+ break;
316
+ case 'object':
317
+ zodSchema = z.object({});
318
+ break;
319
+ default:
320
+ zodSchema = z.any();
321
+ }
322
+ }
323
+ let description = jsonSchemaProperty.description || '';
324
+ if (jsonSchemaProperty.format === 'a http or https url to a file' || jsonSchemaProperty.title === 'FileData') {
325
+ description = description
326
+ ? `${description} (File input: provide URL or file path)`
327
+ : 'File input: provide URL or file path';
328
+ }
329
+ if (description) {
330
+ zodSchema = zodSchema.describe(description);
331
+ }
332
+ if (!skipDefault && 'default' in jsonSchemaProperty && jsonSchemaProperty.default !== undefined) {
333
+ let defaultValue = jsonSchemaProperty.default;
334
+ if (jsonSchemaProperty.type === 'string' &&
335
+ typeof defaultValue === 'object' &&
336
+ defaultValue !== null &&
337
+ 'url' in defaultValue &&
338
+ jsonSchemaProperty.title !== 'FileData') {
339
+ const urlValue = defaultValue.url;
340
+ if (typeof urlValue === 'string') {
341
+ defaultValue = urlValue;
342
+ }
343
+ }
344
+ zodSchema = zodSchema.default(defaultValue);
345
+ }
346
+ return zodSchema;
347
+ }
348
+ //# sourceMappingURL=gradio-endpoint-connector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gradio-endpoint-connector.js","sourceRoot":"","sources":["../../src/server/gradio-endpoint-connector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=gradio-endpoint-connector.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gradio-endpoint-connector.test.d.ts","sourceRoot":"","sources":["../../src/server/gradio-endpoint-connector.test.ts"],"names":[],"mappings":""}