@ampeco/public-api-mcp 0.2.2 → 0.4.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.
Files changed (76) hide show
  1. package/README.md +296 -4
  2. package/dist/build/index.js +52 -7
  3. package/dist/build/index.js.map +1 -1
  4. package/dist/build/optimizer.d.ts.map +1 -1
  5. package/dist/build/optimizer.js +82 -21
  6. package/dist/build/optimizer.js.map +1 -1
  7. package/dist/build/parser.d.ts.map +1 -1
  8. package/dist/build/parser.js +74 -1
  9. package/dist/build/parser.js.map +1 -1
  10. package/dist/build/types.d.ts +24 -2
  11. package/dist/build/types.d.ts.map +1 -1
  12. package/dist/cli/index.js +25 -11
  13. package/dist/cli/index.js.map +1 -1
  14. package/dist/generated/build-stats.json +11 -5
  15. package/dist/generated/endpoints.json +29219 -20895
  16. package/dist/generated/response-schemas.json +84437 -0
  17. package/dist/generated/schemas.d.ts +7157 -2416
  18. package/dist/generated/schemas.d.ts.map +1 -1
  19. package/dist/generated/schemas.js +1443 -590
  20. package/dist/generated/schemas.js.map +1 -1
  21. package/dist/generated/schemas.ts +1447 -596
  22. package/dist/server/factory.d.ts +3 -2
  23. package/dist/server/factory.d.ts.map +1 -1
  24. package/dist/server/factory.js +144 -231
  25. package/dist/server/factory.js.map +1 -1
  26. package/dist/server/factory.test.js +62 -4
  27. package/dist/server/factory.test.js.map +1 -1
  28. package/dist/server/http.d.ts +2 -1
  29. package/dist/server/http.d.ts.map +1 -1
  30. package/dist/server/http.js +11 -3
  31. package/dist/server/http.js.map +1 -1
  32. package/dist/server/index.d.ts +2 -0
  33. package/dist/server/index.d.ts.map +1 -1
  34. package/dist/server/index.js +12 -1388
  35. package/dist/server/index.js.map +1 -1
  36. package/dist/server/instructions.d.ts +13 -0
  37. package/dist/server/instructions.d.ts.map +1 -0
  38. package/dist/server/instructions.js +146 -0
  39. package/dist/server/instructions.js.map +1 -0
  40. package/dist/server/loader.d.ts +6 -1
  41. package/dist/server/loader.d.ts.map +1 -1
  42. package/dist/server/loader.js +9 -0
  43. package/dist/server/loader.js.map +1 -1
  44. package/dist/server/resources/handlers.d.ts +31 -0
  45. package/dist/server/resources/handlers.d.ts.map +1 -0
  46. package/dist/server/resources/handlers.js +113 -0
  47. package/dist/server/resources/handlers.js.map +1 -0
  48. package/dist/server/resources/handlers.test.d.ts +6 -0
  49. package/dist/server/resources/handlers.test.d.ts.map +1 -0
  50. package/dist/server/resources/handlers.test.js +203 -0
  51. package/dist/server/resources/handlers.test.js.map +1 -0
  52. package/dist/server/resources/native.d.ts +11 -0
  53. package/dist/server/resources/native.d.ts.map +1 -0
  54. package/dist/server/resources/native.js +31 -0
  55. package/dist/server/resources/native.js.map +1 -0
  56. package/dist/server/resources/tools.d.ts +11 -0
  57. package/dist/server/resources/tools.d.ts.map +1 -0
  58. package/dist/server/resources/tools.js +41 -0
  59. package/dist/server/resources/tools.js.map +1 -0
  60. package/dist/server/stdio.d.ts +2 -1
  61. package/dist/server/stdio.d.ts.map +1 -1
  62. package/dist/server/stdio.js +11 -3
  63. package/dist/server/stdio.js.map +1 -1
  64. package/dist/server/types.d.ts +36 -0
  65. package/dist/server/types.d.ts.map +1 -0
  66. package/dist/server/types.js +6 -0
  67. package/dist/server/types.js.map +1 -0
  68. package/dist/server/utils/response-transformer.d.ts +78 -0
  69. package/dist/server/utils/response-transformer.d.ts.map +1 -0
  70. package/dist/server/utils/response-transformer.js +423 -0
  71. package/dist/server/utils/response-transformer.js.map +1 -0
  72. package/dist/server/utils/response-transformer.test.d.ts +2 -0
  73. package/dist/server/utils/response-transformer.test.d.ts.map +1 -0
  74. package/dist/server/utils/response-transformer.test.js +103 -0
  75. package/dist/server/utils/response-transformer.test.js.map +1 -0
  76. package/package.json +4 -2
@@ -3,9 +3,10 @@
3
3
  * Creates and configures MCP server instances with shared logic for resources, tools, and prompts
4
4
  */
5
5
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
6
- import type { BuildOutput } from '../build/types.js';
6
+ import type { BuildOutput, ResponseSchemaMap } from '../build/types.js';
7
+ import type { ServerOptions } from './types.js';
7
8
  /**
8
9
  * Create and configure the MCP server
9
10
  */
10
- export declare function createServer(endpoints: BuildOutput, bearerToken: string, hostname: string): McpServer;
11
+ export declare function createServer(endpoints: BuildOutput, responseSchemas: ResponseSchemaMap, options: ServerOptions): McpServer;
11
12
  //# sourceMappingURL=factory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/server/factory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AASpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD;;GAEG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,CAihBrG"}
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/server/factory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOpE,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAqBhD;;GAEG;AACH,wBAAgB,YAAY,CAC1B,SAAS,EAAE,WAAW,EACtB,eAAe,EAAE,iBAAiB,EAClC,OAAO,EAAE,aAAa,GACrB,SAAS,CA2aX"}
@@ -3,238 +3,117 @@
3
3
  * Creates and configures MCP server instances with shared logic for resources, tools, and prompts
4
4
  */
5
5
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
6
- import { ListResourcesRequestSchema, ReadResourceRequestSchema, ListPromptsRequestSchema, GetPromptRequestSchema } from '@modelcontextprotocol/sdk/types.js';
6
+ import { ListPromptsRequestSchema, GetPromptRequestSchema } from '@modelcontextprotocol/sdk/types.js';
7
7
  import { z } from 'zod';
8
8
  import fetch from 'node-fetch';
9
9
  import { getPromptContent } from './prompts.js';
10
+ import { getNativeResourceInstructions, getToolEmulationInstructions } from './instructions.js';
11
+ import { registerNativeResources } from './resources/native.js';
12
+ import { registerEmulationTools } from './resources/tools.js';
13
+ import { transformResponse } from './utils/response-transformer.js';
14
+ /**
15
+ * Helper to get response schema for an endpoint
16
+ */
17
+ function getResponseSchema(responseSchemas, operationId, statusCode) {
18
+ if (!operationId || !responseSchemas[operationId]) {
19
+ return null;
20
+ }
21
+ return responseSchemas[operationId][statusCode]?.schema || null;
22
+ }
10
23
  /**
11
24
  * Create and configure the MCP server
12
25
  */
13
- export function createServer(endpoints, bearerToken, hostname) {
26
+ export function createServer(endpoints, responseSchemas, options) {
27
+ const { hostname, bearerToken, emulateResourcesViaTools = false, } = options;
28
+ // Validate hostname
29
+ if (!hostname) {
30
+ throw new Error('Hostname is required but was not provided');
31
+ }
32
+ // Validate hostname is a valid URL
33
+ try {
34
+ new URL(hostname);
35
+ }
36
+ catch (error) {
37
+ throw new Error(`Invalid hostname URL: ${hostname}`);
38
+ }
14
39
  const server = new McpServer({
15
40
  name: 'public-api-mcp',
16
41
  version: '0.1.0',
17
42
  }, {
18
43
  capabilities: {
19
- resources: {},
44
+ resources: emulateResourcesViaTools ? undefined : {},
20
45
  tools: {},
21
46
  prompts: {},
22
47
  logging: {},
23
48
  },
24
- instructions: `This server provides access to the ${endpoints.info.title} API (v${endpoints.info.version}).
25
-
26
- It exposes ${endpoints.endpoints.filter(e => !e.deprecated).length} active API endpoints through a hierarchical resource structure (deprecated endpoints are automatically filtered out) and provides a tool for making authenticated HTTP requests.
27
-
28
- Target API: ${hostname}
29
-
30
- Resource Structure (3-tier hierarchy):
31
- - Tier 1 (Discovery): List resources returns API tags (e.g., tag://Users, tag://ChargingSessions)
32
- - Tier 2 (Navigation): Read a tag resource to see all endpoints within that tag
33
- - Tier 3 (Details): Read an individual endpoint resource for full specification
34
-
35
- Usage:
36
- 1. List available resources to discover API tags (returns ~10-30 tags instead of 443 endpoints)
37
- 2. Read a tag resource (e.g., tag://Users) to see all endpoints within that tag
38
- 3. Read an endpoint resource (e.g., api://GET/users/{id}) to get detailed endpoint information
39
- 4. Use the 'api_request' tool to make HTTP calls to any endpoint
40
-
41
- URI Formats:
42
- - Tags: tag://{TagName} (e.g., tag://Users)
43
- - Endpoints: api://{METHOD}{path} (e.g., api://GET/users/{id})
44
-
45
- The server automatically proxies your Bearer token to all API requests to ${hostname}.
46
-
47
- Note: Deprecated endpoints are not exposed as resources and cannot be accessed. This hierarchical structure reduces initial context consumption by ~95-97%.
48
-
49
- ## Available Prompts
50
-
51
- This server provides helpful prompts for common workflows. Use these prompts to learn best practices:
52
-
53
- - **charging_session_workflow**: Learn how to implement the complete charging session lifecycle: finding charge points, starting/stopping sessions, and retrieving session details
54
- - **authentication_workflow**: Understand how authentication works with the AMPECO API and how to implement custom authentication in your backend
55
- - **reservation_workflow**: Learn how to reserve charge points for immediate or future use
56
- - **smart_charging_setup**: Guide for configuring smart charging modes including scheduled, solar, and dynamic pricing strategies
57
-
58
- To use a prompt, simply reference it by name when you need guidance on these workflows.
59
-
60
- ## AMPECO API Resource Relationships
61
-
62
- The AMPECO API has a hierarchical structure: **Locations** → **Charging Zones** → **Charge Points** → **EVSEs** → **Connectors**
63
-
64
- Each resource can be listed independently. EVSEs contain the currentType field ("ac"/"dc") for determining charging type.
65
-
66
- ## Best Practices for Data Fetching
67
-
68
- **Always prefer top-level listing endpoints over nested fetching:**
69
- - ✅ Use \`GET /evses\` to get all EVSEs across all charge points (1 API call)
70
- - ❌ Avoid fetching \`GET /charge-points/{id}/evses\` for each charge point (N API calls)
71
-
72
- The top-level listing endpoints are more efficient and reduce API load. Use nested endpoints only when you specifically need resources for a single parent entity.
73
-
74
- ## Session State & Webhooks
75
-
76
- The AMPECO API is event-driven and uses webhooks for real-time updates. When performing actions like starting/stopping charging sessions:
77
- - Initial API responses return immediately with session IDs
78
- - Actual state changes arrive via webhooks (SessionUpdateNotification, SessionMeterValuesNotification)
79
- - Clients should implement webhook handlers to track session status changes from "pending" → "active" → "finished"
80
- - Session details and final metrics are retrieved via GET requests after receiving webhook notifications
81
-
82
- ## Cursor Pagination Guide
83
-
84
- Many list endpoints support cursor-based pagination, which is faster and more reliable than offset-based pagination. Here's how to use it:
49
+ instructions: emulateResourcesViaTools
50
+ ? getToolEmulationInstructions(endpoints, hostname)
51
+ : getNativeResourceInstructions(endpoints, hostname),
52
+ });
53
+ // Register resources or emulation tools based on mode
54
+ if (emulateResourcesViaTools) {
55
+ registerEmulationTools(server, endpoints);
56
+ }
57
+ else {
58
+ registerNativeResources(server, endpoints);
59
+ }
60
+ // Register the API request tool
61
+ server.tool('api_request', `Make an authenticated HTTP request to any active API endpoint from the OpenAPI specification. Deprecated endpoints cannot be called and will return an error. Authentication is handled automatically using the Bearer token from the MCP request. The target API hostname is: ${hostname}
85
62
 
86
- **Initial Request** - Start with an empty cursor:
87
- \`\`\`
88
- api_request(endpoint: "/users", method: "GET", query_params: { limit: 100, cursor: "" })
89
- \`\`\`
63
+ **Smart Response Transformation** (Enabled by Default):
64
+ When responses are large (>20KB), automatic transformation is applied to:
65
+ - Preserve ALL pagination metadata (cursor, total, hasMore, nextPage)
66
+ - Provide statistical summaries (min, max, avg, median, percentiles)
67
+ - Include categorical distributions (status counts, type breakdowns)
68
+ - Sample representative items for context
90
69
 
91
- **Subsequent Requests** - Use the cursor from the previous response:
92
- \`\`\`
93
- api_request(endpoint: "/users", method: "GET", query_params: { limit: 100, cursor: "eyJpZCI6MTAwfQ==" })
94
- \`\`\`
70
+ This ensures you can:
71
+ ✓ Navigate paginated results reliably
72
+ Understand data distributions without loading all items
73
+ ✓ Make data-driven decisions with statistical insights
74
+ ✓ Reduce token consumption by 80-95% for large responses
95
75
 
96
- **Pagination Loop:**
97
- 1. Start with \`cursor=""\` (empty string)
98
- 2. Make request with current cursor
99
- 3. Collect items from response
100
- 4. If response contains a non-empty cursor, use it for next request
101
- 5. Stop when cursor is null/empty or data array is empty
76
+ Field types are automatically detected from OpenAPI schemas (zero configuration required).
102
77
 
103
- **Key Points:**
104
- - ✅ Always use \`cursor=""\` for first request
105
- - ✅ Use exact cursor value from responses
106
- - ✅ Check for null/empty cursor or empty data array to detect end
107
- - ✅ Adjust limit based on data size (100-1000 typical)
108
- - ❌ Don't use offset pagination when cursor is available`,
109
- });
110
- // Register resources/list handler - returns tags (Tier 1)
111
- server.server.setRequestHandler(ListResourcesRequestSchema, async () => {
112
- const startTime = Date.now();
113
- console.error('[Resources List] Building tag-based resource list...');
114
- // Filter out deprecated endpoints first
115
- const activeEndpoints = endpoints.endpoints.filter(endpoint => !endpoint.deprecated);
116
- // Extract unique tags from all active endpoints
117
- const tagsSet = new Set();
118
- let untaggedCount = 0;
119
- for (const endpoint of activeEndpoints) {
120
- if (endpoint.tags && endpoint.tags.length > 0) {
121
- endpoint.tags.forEach(tag => tagsSet.add(tag));
122
- }
123
- else {
124
- untaggedCount++;
125
- }
126
- }
127
- // Convert to sorted array
128
- const tags = Array.from(tagsSet).sort();
129
- // Add "Untagged" category if there are untagged endpoints
130
- if (untaggedCount > 0) {
131
- tags.push('Untagged');
132
- }
133
- // Build resources list with tag URIs
134
- const resources = tags.map(tag => {
135
- const tagEndpoints = activeEndpoints.filter(e => tag === 'Untagged'
136
- ? !e.tags || e.tags.length === 0
137
- : e.tags?.includes(tag));
138
- return {
139
- uri: `tag://${tag}`,
140
- name: tag,
141
- description: `${tagEndpoints.length} endpoint${tagEndpoints.length !== 1 ? 's' : ''} tagged with '${tag}'`,
142
- mimeType: 'application/json',
143
- };
144
- });
145
- const duration = Date.now() - startTime;
146
- console.error(`[Resources List] Built ${resources.length} tag resources (filtered ${endpoints.endpoints.length - activeEndpoints.length} deprecated endpoints) in ${duration}ms`);
147
- return { resources };
148
- });
149
- // Register resources/read handler - supports tag:// (Tier 2) and api:// (Tier 3) URIs
150
- server.server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
151
- const uri = request.params.uri;
152
- // Manual URI parsing to handle spaces and special characters in tag names
153
- // Format: tag://{TagName} or api://{METHOD}{path}
154
- const protocolMatch = uri.match(/^([^:]+):\/\/(.*)$/);
155
- if (!protocolMatch) {
156
- throw new Error(`Invalid URI format: ${uri}`);
157
- }
158
- const protocol = protocolMatch[1];
159
- const remainder = protocolMatch[2];
160
- // Tier 2: Handle tag:// URIs - return list of endpoints within the tag
161
- if (protocol === 'tag') {
162
- const tag = remainder;
163
- // Filter active endpoints by tag
164
- const activeEndpoints = endpoints.endpoints.filter(endpoint => !endpoint.deprecated);
165
- const taggedEndpoints = activeEndpoints.filter(e => tag === 'Untagged'
166
- ? !e.tags || e.tags.length === 0
167
- : e.tags?.includes(tag));
168
- if (taggedEndpoints.length === 0) {
169
- throw new Error(`No endpoints found for tag: ${tag}`);
170
- }
171
- // Build response with endpoint summaries
172
- const tagResource = {
173
- tag,
174
- count: taggedEndpoints.length,
175
- endpoints: taggedEndpoints.map(e => ({
176
- uri: `api://${e.method.toUpperCase()}${e.path}`,
177
- method: e.method.toUpperCase(),
178
- path: e.path,
179
- summary: e.summary || e.operationId || `${e.method} ${e.path}`,
180
- operationId: e.operationId,
181
- })),
182
- };
183
- return {
184
- contents: [
185
- {
186
- uri,
187
- mimeType: 'application/json',
188
- text: JSON.stringify(tagResource, null, 2),
189
- },
190
- ],
191
- };
192
- }
193
- // Tier 3: Handle api:// URIs - return individual endpoint details
194
- if (protocol === 'api') {
195
- // Parse URI format: api://METHOD/path
196
- // Example: api://POST/users or api://GET/users/{id}
197
- const match = remainder.match(/^([A-Z]+)(\/.*)/);
198
- if (!match) {
199
- throw new Error(`Invalid API URI format: ${uri}`);
200
- }
201
- const method = match[1];
202
- const path = match[2];
203
- // Find the matching endpoint
204
- const endpoint = endpoints.endpoints.find((e) => e.path === path && e.method.toUpperCase() === method.toUpperCase());
205
- if (!endpoint) {
206
- throw new Error(`Endpoint not found: ${method} ${path}`);
207
- }
208
- // Reject deprecated endpoints
209
- if (endpoint.deprecated) {
210
- throw new Error(`Endpoint is deprecated: ${method} ${path}`);
211
- }
212
- // Return comprehensive endpoint information
213
- return {
214
- contents: [
215
- {
216
- uri,
217
- mimeType: 'application/json',
218
- text: JSON.stringify(endpoint, null, 2),
219
- },
220
- ],
221
- };
222
- }
223
- // Unsupported protocol
224
- throw new Error(`Unsupported URI protocol: ${protocol}. Expected 'tag' or 'api'`);
225
- });
226
- // Register the API request tool
227
- server.tool('api_request', `Make an authenticated HTTP request to any active API endpoint from the OpenAPI specification. Deprecated endpoints cannot be called and will return an error. Authentication is handled automatically using the Bearer token from the MCP request. The target API hostname is: ${hostname}
78
+ To disable transformation: Set transform_response=false
228
79
 
229
- IMPORTANT - Pagination: Always prefer cursor-based pagination when available. For list endpoints that support both offset and cursor pagination, you MUST use cursor pagination by including an empty "cursor" query parameter (cursor="") in your initial request to engage cursor-based pagination. Subsequent requests should use the cursor value returned in the response.`, {
80
+ **Pagination Best Practice**:
81
+ Always prefer cursor-based pagination when available. For list endpoints that support both offset and cursor pagination, include an empty "cursor" query parameter (cursor="") in your initial request to engage cursor-based pagination.`, {
230
82
  endpoint: z.string().describe('The API endpoint path (e.g., "/users/{id}")'),
231
83
  method: z.enum(['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD', 'OPTIONS']).describe('HTTP method'),
232
84
  path_params: z.preprocess((val) => (val === null || val === undefined || val === '' ? {} : val), z.record(z.any()).default({})).optional().describe('Path parameter values as key-value pairs (optional)'),
233
85
  query_params: z.preprocess((val) => (val === null || val === undefined || val === '' ? {} : val), z.record(z.any()).default({})).optional().describe('Query string parameters as key-value pairs (optional)'),
234
86
  body: z.preprocess((val) => (val === null || val === undefined || val === '' ? undefined : val), z.any()).optional().describe('Request body for POST/PUT/PATCH requests (optional)'),
235
87
  headers: z.preprocess((val) => (val === null || val === undefined || val === '' ? {} : val), z.record(z.string()).default({})).optional().describe('Additional HTTP headers (optional)'),
88
+ // NEW: Smart transformation parameters
89
+ transform_response: z.boolean()
90
+ .default(true)
91
+ .optional()
92
+ .describe('Enable smart response transformation for large responses. When enabled, large array-based responses ' +
93
+ 'are automatically transformed to include: (1) pagination metadata, (2) statistical summaries ' +
94
+ '(min/max/avg/distribution), and (3) sample items. This dramatically reduces token usage while ' +
95
+ 'preserving critical navigation and analytical information. Default: true'),
96
+ transform_options: z.object({
97
+ maxResponseSize: z.number()
98
+ .min(1000)
99
+ .max(1000000)
100
+ .optional()
101
+ .describe('Maximum response size in bytes before transformation is applied (default: 20000, range: 1000-1000000)'),
102
+ sampleSize: z.number()
103
+ .int()
104
+ .min(1)
105
+ .max(20)
106
+ .optional()
107
+ .describe('Number of sample items to include in transformed response (default: 5, range: 1-20)'),
108
+ computeStats: z.boolean()
109
+ .optional()
110
+ .describe('Whether to compute numeric statistics and categorical distributions (default: true)'),
111
+ includeDistribution: z.boolean()
112
+ .optional()
113
+ .describe('Whether to include categorical field distributions (default: true)'),
114
+ }).optional().describe('Advanced transformation options (optional). Field selection is automatic via OpenAPI schema detection.'),
236
115
  }, async (args) => {
237
- const { endpoint, method, path_params = {}, query_params = {}, body, headers = {}, } = args;
116
+ const { endpoint, method, path_params = {}, query_params = {}, body, headers = {}, transform_response = true, transform_options = {}, } = args;
238
117
  // Check if endpoint is deprecated
239
118
  const endpointDef = endpoints.endpoints.find((e) => e.path === endpoint && e.method.toUpperCase() === method.toUpperCase());
240
119
  if (endpointDef?.deprecated) {
@@ -298,40 +177,74 @@ IMPORTANT - Pagination: Always prefer cursor-based pagination when available. Fo
298
177
  }
299
178
  // Log the response
300
179
  console.error(`[API Response] ${response.status} ${response.statusText}`);
301
- // Prepare structured response with truncation
302
- const responseObject = {
303
- status: response.status,
304
- statusText: response.statusText,
305
- headers: Object.fromEntries(response.headers.entries()),
306
- body: responseBody,
307
- };
308
- let responseText = JSON.stringify(responseObject, null, 2);
309
- // Truncate if response exceeds 20000 characters (leaving room for metadata)
310
- const MAX_RESPONSE_LENGTH = 20000;
311
- let wasTruncated = false;
312
- if (responseText.length > MAX_RESPONSE_LENGTH) {
313
- wasTruncated = true;
314
- const originalLength = responseText.length;
315
- responseText = responseText.substring(0, MAX_RESPONSE_LENGTH);
316
- // Try to truncate at a reasonable boundary (end of a line)
317
- const lastNewlineIndex = responseText.lastIndexOf('\n');
318
- if (lastNewlineIndex > MAX_RESPONSE_LENGTH * 0.9) {
319
- responseText = responseText.substring(0, lastNewlineIndex);
180
+ // NEW: Apply smart transformation if enabled
181
+ let finalResponse;
182
+ if (transform_response && responseBody && typeof responseBody === "object") {
183
+ // Smart 2XX response schema selection
184
+ let responseSchema = null;
185
+ const statusCode = response.status.toString();
186
+ // Try exact status code first
187
+ responseSchema = getResponseSchema(responseSchemas, endpointDef?.operationId, statusCode);
188
+ // Fallback: try common success codes in priority order
189
+ if (!responseSchema) {
190
+ const successCodes = ["200", "201", "202", "204", "2XX", "default"];
191
+ for (const code of successCodes) {
192
+ responseSchema = getResponseSchema(responseSchemas, endpointDef?.operationId, code);
193
+ if (responseSchema) {
194
+ console.error(`[Transformer] Using schema for status ${code} (fallback from ${statusCode})`);
195
+ break;
196
+ }
197
+ }
198
+ }
199
+ else {
200
+ console.error(`[Transformer] Using schema for status ${statusCode}`);
201
+ }
202
+ if (!responseSchema) {
203
+ console.error(`[Transformer] No schema found for ${method} ${endpoint} ` +
204
+ `(operationId: ${endpointDef?.operationId}, status: ${statusCode})`);
205
+ }
206
+ // Apply transformation
207
+ const transformResult = transformResponse(responseBody, {
208
+ ...transform_options,
209
+ enabled: true,
210
+ }, responseSchema // Pass the selected schema
211
+ );
212
+ finalResponse = {
213
+ ...transformResult,
214
+ };
215
+ // Log transformation results
216
+ if (transformResult.data._transformation.applied) {
217
+ const reduction = (((transformResult.data._transformation.originalSize -
218
+ transformResult.data._transformation.transformedSize) /
219
+ transformResult.data._transformation.originalSize) *
220
+ 100).toFixed(1);
221
+ console.error(`[Transformer] Applied transformation: ${transformResult.data._transformation.originalSize} → ` +
222
+ `${transformResult.data._transformation.transformedSize} bytes (${reduction}% reduction)`);
320
223
  }
321
- // Add truncation notice
322
- responseText += `\n\n... [Response truncated - original size: ${originalLength} characters, showing first ${responseText.length} characters]\n\nNote: The response was too large to display in full. This is typically because the API returned detailed error information or a large dataset. Check the status code and the visible portion of the response for key information.`;
323
224
  }
324
- const toolResponse = {
225
+ else {
226
+ finalResponse = {
227
+ status: response.status,
228
+ body: responseBody,
229
+ };
230
+ }
231
+ let responseText = JSON.stringify(finalResponse, null, 2);
232
+ // Fallback truncation (should rarely trigger now)
233
+ const MAX_RESPONSE_LENGTH = 50000; // Increased since transformation reduces size
234
+ if (responseText.length > MAX_RESPONSE_LENGTH) {
235
+ console.error(`[Warning] Response still exceeds limit after transformation ` +
236
+ `(${responseText.length} chars, status ${response.status})`);
237
+ responseText = responseText.substring(0, MAX_RESPONSE_LENGTH) + "\n\n... [Response truncated]";
238
+ }
239
+ // Return structured response
240
+ return {
325
241
  content: [
326
242
  {
327
- type: 'text',
243
+ type: "text",
328
244
  text: responseText,
329
245
  },
330
246
  ],
331
247
  };
332
- console.error(`[Tool Response] Returning response with ${responseText.length} characters${wasTruncated ? ' (truncated)' : ''}`);
333
- // Return structured response
334
- return toolResponse;
335
248
  }
336
249
  catch (error) {
337
250
  const errorMessage = error instanceof Error ? error.message : String(error);
@@ -1 +1 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/server/factory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,wBAAwB,EACxB,sBAAsB,EACvB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,SAAsB,EAAE,WAAmB,EAAE,QAAgB;IACxF,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B;QACE,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,OAAO;KACjB,EACD;QACE,YAAY,EAAE;YACZ,SAAS,EAAE,EAAE;YACb,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,EAAE;SACZ;QACD,YAAY,EAAE,sCAAsC,SAAS,CAAC,IAAI,CAAC,KAAK,UAAU,SAAS,CAAC,IAAI,CAAC,OAAO;;aAEjG,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM;;cAEpD,QAAQ;;;;;;;;;;;;;;;;;4EAiBsD,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yDA+D3B;KACpD,CACF,CAAC;IAEF,0DAA0D;IAC1D,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QACrE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,OAAO,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAEtE,wCAAwC;QACxC,MAAM,eAAe,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAErF,gDAAgD;QAChD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,IAAI,aAAa,GAAG,CAAC,CAAC;QAEtB,KAAK,MAAM,QAAQ,IAAI,eAAe,EAAE,CAAC;YACvC,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9C,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YACjD,CAAC;iBAAM,CAAC;gBACN,aAAa,EAAE,CAAC;YAClB,CAAC;QACH,CAAC;QAED,0BAA0B;QAC1B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAExC,0DAA0D;QAC1D,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxB,CAAC;QAED,qCAAqC;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YAC/B,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAC9C,GAAG,KAAK,UAAU;gBAChB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;gBAChC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,CAC1B,CAAC;YAEF,OAAO;gBACL,GAAG,EAAE,SAAS,GAAG,EAAE;gBACnB,IAAI,EAAE,GAAG;gBACT,WAAW,EAAE,GAAG,YAAY,CAAC,MAAM,YAAY,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,iBAAiB,GAAG,GAAG;gBAC1G,QAAQ,EAAE,kBAAkB;aAC7B,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QACxC,OAAO,CAAC,KAAK,CAAC,0BAA0B,SAAS,CAAC,MAAM,4BAA4B,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,6BAA6B,QAAQ,IAAI,CAAC,CAAC;QAElL,OAAO,EAAE,SAAS,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,sFAAsF;IACtF,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,yBAAyB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAC3E,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;QAE/B,0EAA0E;QAC1E,kDAAkD;QAClD,MAAM,aAAa,GAAG,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACtD,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,EAAE,CAAC,CAAC;QAChD,CAAC;QAED,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,SAAS,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAEnC,uEAAuE;QACvE,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,SAAS,CAAC;YAEtB,iCAAiC;YACjC,MAAM,eAAe,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YACrF,MAAM,eAAe,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACjD,GAAG,KAAK,UAAU;gBAChB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;gBAChC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,CAC1B,CAAC;YAEF,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjC,MAAM,IAAI,KAAK,CAAC,+BAA+B,GAAG,EAAE,CAAC,CAAC;YACxD,CAAC;YAED,yCAAyC;YACzC,MAAM,WAAW,GAAG;gBAClB,GAAG;gBACH,KAAK,EAAE,eAAe,CAAC,MAAM;gBAC7B,SAAS,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBACnC,GAAG,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE;oBAC/C,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE;oBAC9B,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,WAAW,IAAI,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,EAAE;oBAC9D,WAAW,EAAE,CAAC,CAAC,WAAW;iBAC3B,CAAC,CAAC;aACJ,CAAC;YAEF,OAAO;gBACL,QAAQ,EAAE;oBACR;wBACE,GAAG;wBACH,QAAQ,EAAE,kBAAkB;wBAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;qBAC3C;iBACF;aACF,CAAC;QACJ,CAAC;QAED,kEAAkE;QAClE,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;YACvB,sCAAsC;YACtC,oDAAoD;YACpD,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;YACjD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,EAAE,CAAC,CAAC;YACpD,CAAC;YAED,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACxB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAEtB,6BAA6B;YAC7B,MAAM,QAAQ,GAAG,SAAS,CAAC,SAAS,CAAC,IAAI,CACvC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,WAAW,EAAE,CAC1E,CAAC;YAEF,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CAAC,uBAAuB,MAAM,IAAI,IAAI,EAAE,CAAC,CAAC;YAC3D,CAAC;YAED,8BAA8B;YAC9B,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CAAC,2BAA2B,MAAM,IAAI,IAAI,EAAE,CAAC,CAAC;YAC/D,CAAC;YAED,4CAA4C;YAC5C,OAAO;gBACL,QAAQ,EAAE;oBACR;wBACE,GAAG;wBACH,QAAQ,EAAE,kBAAkB;wBAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;qBACxC;iBACF;aACF,CAAC;QACJ,CAAC;QAED,uBAAuB;QACvB,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,2BAA2B,CAAC,CAAC;IACpF,CAAC,CAAC,CAAC;IAEH,gCAAgC;IAChC,MAAM,CAAC,IAAI,CACT,aAAa,EACb,kRAAkR,QAAQ;;gXAEkF,EAC5W;QACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;QAC5E,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC;QACpG,WAAW,EAAE,CAAC,CAAC,UAAU,CACvB,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EACrE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAC9B,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;QAC5E,YAAY,EAAE,CAAC,CAAC,UAAU,CACxB,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EACrE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAC9B,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uDAAuD,CAAC;QAC9E,IAAI,EAAE,CAAC,CAAC,UAAU,CAChB,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,EAC5E,CAAC,CAAC,GAAG,EAAE,CACR,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;QAC5E,OAAO,EAAE,CAAC,CAAC,UAAU,CACnB,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EACrE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CACjC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;KAC5D,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,EACJ,QAAQ,EACR,MAAM,EACN,WAAW,GAAG,EAAE,EAChB,YAAY,GAAG,EAAE,EACjB,IAAI,EACJ,OAAO,GAAG,EAAE,GACb,GAAG,IAAI,CAAC;QAET,kCAAkC;QAClC,MAAM,WAAW,GAAG,SAAS,CAAC,SAAS,CAAC,IAAI,CAC1C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,WAAW,EAAE,CAC9E,CAAC;QAEF,IAAI,WAAW,EAAE,UAAU,EAAE,CAAC;YAC5B,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;4BACE,KAAK,EAAE,IAAI;4BACX,OAAO,EAAE,gDAAgD,MAAM,IAAI,QAAQ,EAAE;yBAC9E,EACD,IAAI,EACJ,CAAC,CACF;qBACF;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,yBAAyB;QACzB,IAAI,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC;QAEjD,0BAA0B;QAC1B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;YACvD,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,GAAG,EAAE,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACnE,CAAC;QAED,uBAAuB;QACvB,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;aAC7C,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;aACxF,IAAI,CAAC,GAAG,CAAC,CAAC;QACb,IAAI,WAAW,EAAE,CAAC;YAChB,GAAG,IAAI,IAAI,WAAW,EAAE,CAAC;QAC3B,CAAC;QAED,4CAA4C;QAC5C,MAAM,cAAc,GAA2B;YAC7C,cAAc,EAAE,kBAAkB;YAClC,GAAG,OAAO;SACX,CAAC;QAEF,wDAAwD;QACxD,IAAI,WAAW,EAAE,CAAC;YAChB,cAAc,CAAC,eAAe,CAAC,GAAG,UAAU,WAAW,EAAE,CAAC;QAC5D,CAAC;QAED,kBAAkB;QAClB,OAAO,CAAC,KAAK,CAAC,iBAAiB,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC;QAEhD,IAAI,CAAC;YACH,wBAAwB;YACxB,MAAM,YAAY,GAAQ;gBACxB,MAAM;gBACN,OAAO,EAAE,cAAc;aACxB,CAAC;YAEF,+DAA+D;YAC/D,IAAI,IAAI,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;gBAC5D,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC3C,CAAC;YAED,wBAAwB;YACxB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;YAEhD,iBAAiB;YACjB,MAAM,eAAe,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC9C,IAAI,YAAiB,CAAC;YACtB,IAAI,CAAC;gBACH,YAAY,GAAG,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACtE,CAAC;YAAC,MAAM,CAAC;gBACP,YAAY,GAAG,eAAe,CAAC;YACjC,CAAC;YAED,mBAAmB;YACnB,OAAO,CAAC,KAAK,CAAC,kBAAkB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YAE1E,8CAA8C;YAC9C,MAAM,cAAc,GAAG;gBACrB,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;gBAC/B,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACvD,IAAI,EAAE,YAAY;aACnB,CAAC;YAEF,IAAI,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAE3D,4EAA4E;YAC5E,MAAM,mBAAmB,GAAG,KAAK,CAAC;YAClC,IAAI,YAAY,GAAG,KAAK,CAAC;YAEzB,IAAI,YAAY,CAAC,MAAM,GAAG,mBAAmB,EAAE,CAAC;gBAC9C,YAAY,GAAG,IAAI,CAAC;gBACpB,MAAM,cAAc,GAAG,YAAY,CAAC,MAAM,CAAC;gBAC3C,YAAY,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;gBAE9D,2DAA2D;gBAC3D,MAAM,gBAAgB,GAAG,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBACxD,IAAI,gBAAgB,GAAG,mBAAmB,GAAG,GAAG,EAAE,CAAC;oBACjD,YAAY,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;gBAC7D,CAAC;gBAED,wBAAwB;gBACxB,YAAY,IAAI,gDAAgD,cAAc,8BAA8B,YAAY,CAAC,MAAM,mPAAmP,CAAC;YACrX,CAAC;YAED,MAAM,YAAY,GAAG;gBACnB,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,YAAY;qBACnB;iBACF;aACF,CAAC;YAEF,OAAO,CAAC,KAAK,CAAC,2CAA2C,YAAY,CAAC,MAAM,cAAc,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAEhI,6BAA6B;YAC7B,OAAO,YAAY,CAAC;QACtB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,OAAO,CAAC,KAAK,CAAC,eAAe,YAAY,EAAE,CAAC,CAAC;YAE7C,MAAM,WAAW,GAAG;gBAClB,KAAK,EAAE,IAAI;gBACX,OAAO,EAAE,YAAY;gBACrB,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;aAC1D,CAAC;YAEF,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAErD,+BAA+B;YAC/B,MAAM,gBAAgB,GAAG,IAAI,CAAC;YAC9B,IAAI,SAAS,CAAC,MAAM,GAAG,gBAAgB,EAAE,CAAC;gBACxC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,gBAAgB,CAAC,GAAG,mCAAmC,CAAC;YAC7F,CAAC;YAED,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,SAAS;qBAChB;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,gEAAgE;IAChE,+EAA+E;IAC/E,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;QACnE,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,2BAA2B;oBACjC,WAAW,EAAE,mJAAmJ;oBAChK,SAAS,EAAE;wBACT;4BACE,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,iGAAiG;4BAC9G,QAAQ,EAAE,KAAK;yBAChB;wBACD;4BACE,IAAI,EAAE,WAAW;4BACjB,WAAW,EAAE,0FAA0F;4BACvG,QAAQ,EAAE,KAAK;yBAChB;qBACF;iBACF;gBACD;oBACE,IAAI,EAAE,yBAAyB;oBAC/B,WAAW,EAAE,oHAAoH;oBACjI,SAAS,EAAE,EAAE;iBACd;gBACD;oBACE,IAAI,EAAE,sBAAsB;oBAC5B,WAAW,EAAE,gEAAgE;oBAC7E,SAAS,EAAE;wBACT;4BACE,IAAI,EAAE,eAAe;4BACrB,WAAW,EAAE,2CAA2C;4BACxD,QAAQ,EAAE,KAAK;yBAChB;wBACD;4BACE,IAAI,EAAE,eAAe;4BACrB,WAAW,EAAE,2CAA2C;4BACxD,QAAQ,EAAE,KAAK;yBAChB;wBACD;4BACE,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,+CAA+C;4BAC5D,QAAQ,EAAE,KAAK;yBAChB;wBACD;4BACE,IAAI,EAAE,iBAAiB;4BACvB,WAAW,EAAE,gFAAgF;4BAC7F,QAAQ,EAAE,KAAK;yBAChB;qBACF;iBACF;gBACD;oBACE,IAAI,EAAE,sBAAsB;oBAC5B,WAAW,EAAE,uGAAuG;oBACpH,SAAS,EAAE;wBACT;4BACE,IAAI,EAAE,eAAe;4BACrB,WAAW,EAAE,6CAA6C;4BAC1D,QAAQ,EAAE,KAAK;yBAChB;wBACD;4BACE,IAAI,EAAE,MAAM;4BACZ,WAAW,EAAE,kIAAkI;4BAC/I,QAAQ,EAAE,KAAK;yBAChB;qBACF;iBACF;aACF;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACxE,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;QACvC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;QAE5C,MAAM,UAAU,GAAG,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAEtD,OAAO;YACL,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE;wBACP,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,UAAU;qBACjB;iBACF;aACF;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/server/factory.ts"],"names":[],"mappings":"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"}
@@ -31,7 +31,10 @@ describe('createServer', () => {
31
31
  buildDuration: 100,
32
32
  },
33
33
  };
34
- const server = createServer(mockEndpoints, 'test-token', 'http://test.example.com');
34
+ const server = createServer(mockEndpoints, {}, {
35
+ bearerToken: 'test-token',
36
+ hostname: 'http://test.example.com',
37
+ });
35
38
  expect(server).toBeDefined();
36
39
  expect(server.server).toBeDefined();
37
40
  });
@@ -51,10 +54,13 @@ describe('createServer', () => {
51
54
  buildDuration: 0,
52
55
  },
53
56
  };
54
- const server = createServer(mockEndpoints, 'test-token', 'http://test.example.com');
57
+ const server = createServer(mockEndpoints, {}, {
58
+ bearerToken: 'test-token',
59
+ hostname: 'http://test.example.com',
60
+ });
55
61
  expect(server).toBeDefined();
56
62
  });
57
- it('should accept bearer token and hostname', () => {
63
+ it('should accept bearer token and hostname via options', () => {
58
64
  const mockEndpoints = {
59
65
  endpoints: [],
60
66
  info: {
@@ -70,8 +76,60 @@ describe('createServer', () => {
70
76
  buildDuration: 0,
71
77
  },
72
78
  };
73
- const server = createServer(mockEndpoints, 'my-token', 'https://api.example.com');
79
+ const server = createServer(mockEndpoints, {}, {
80
+ bearerToken: 'my-token',
81
+ hostname: 'https://api.example.com',
82
+ });
74
83
  expect(server).toBeDefined();
75
84
  });
85
+ it('should accept emulateResourcesViaTools=true option (tool emulation mode)', () => {
86
+ const mockEndpoints = {
87
+ endpoints: [],
88
+ info: {
89
+ title: 'Test API',
90
+ version: '1.0.0',
91
+ },
92
+ buildTimestamp: '2025-10-10T00:00:00Z',
93
+ stats: {
94
+ totalEndpoints: 0,
95
+ originalSize: 0,
96
+ optimizedSize: 0,
97
+ reductionPercent: 0,
98
+ buildDuration: 0,
99
+ },
100
+ };
101
+ const server = createServer(mockEndpoints, {}, {
102
+ bearerToken: 'my-token',
103
+ hostname: 'https://api.example.com',
104
+ emulateResourcesViaTools: true,
105
+ });
106
+ expect(server).toBeDefined();
107
+ // Verify server was created successfully
108
+ expect(server.server).toBeDefined();
109
+ });
110
+ it('should default to native resources mode', () => {
111
+ const mockEndpoints = {
112
+ endpoints: [],
113
+ info: {
114
+ title: 'Test API',
115
+ version: '1.0.0',
116
+ },
117
+ buildTimestamp: '2025-10-10T00:00:00Z',
118
+ stats: {
119
+ totalEndpoints: 0,
120
+ originalSize: 0,
121
+ optimizedSize: 0,
122
+ reductionPercent: 0,
123
+ buildDuration: 0,
124
+ },
125
+ };
126
+ const server = createServer(mockEndpoints, {}, {
127
+ bearerToken: 'my-token',
128
+ hostname: 'https://api.example.com',
129
+ });
130
+ expect(server).toBeDefined();
131
+ // Verify server was created successfully
132
+ expect(server.server).toBeDefined();
133
+ });
76
134
  });
77
135
  //# sourceMappingURL=factory.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"factory.test.js","sourceRoot":"","sources":["../../src/server/factory.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,aAAa,GAAgB;YACjC,SAAS,EAAE;gBACT;oBACE,IAAI,EAAE,OAAO;oBACb,MAAM,EAAE,KAAK;oBACb,WAAW,EAAE,SAAS;oBACtB,OAAO,EAAE,eAAe;oBACxB,IAAI,EAAE,CAAC,MAAM,CAAC;oBACd,UAAU,EAAE,KAAK;oBACjB,UAAU,EAAE,EAAE;oBACd,SAAS,EAAE,EAAE;iBACd;aACF;YACD,IAAI,EAAE;gBACJ,KAAK,EAAE,UAAU;gBACjB,OAAO,EAAE,OAAO;aACjB;YACD,cAAc,EAAE,sBAAsB;YACtC,KAAK,EAAE;gBACL,cAAc,EAAE,CAAC;gBACjB,YAAY,EAAE,IAAI;gBAClB,aAAa,EAAE,GAAG;gBAClB,gBAAgB,EAAE,EAAE;gBACpB,aAAa,EAAE,GAAG;aACnB;SACF,CAAC;QAEF,MAAM,MAAM,GAAG,YAAY,CAAC,aAAa,EAAE,YAAY,EAAE,yBAAyB,CAAC,CAAC;QAEpF,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;QAC7B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,aAAa,GAAgB;YACjC,SAAS,EAAE,EAAE;YACb,IAAI,EAAE;gBACJ,KAAK,EAAE,WAAW;gBAClB,OAAO,EAAE,OAAO;aACjB;YACD,cAAc,EAAE,sBAAsB;YACtC,KAAK,EAAE;gBACL,cAAc,EAAE,CAAC;gBACjB,YAAY,EAAE,CAAC;gBACf,aAAa,EAAE,CAAC;gBAChB,gBAAgB,EAAE,CAAC;gBACnB,aAAa,EAAE,CAAC;aACjB;SACF,CAAC;QAEF,MAAM,MAAM,GAAG,YAAY,CAAC,aAAa,EAAE,YAAY,EAAE,yBAAyB,CAAC,CAAC;QAEpF,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,aAAa,GAAgB;YACjC,SAAS,EAAE,EAAE;YACb,IAAI,EAAE;gBACJ,KAAK,EAAE,UAAU;gBACjB,OAAO,EAAE,OAAO;aACjB;YACD,cAAc,EAAE,sBAAsB;YACtC,KAAK,EAAE;gBACL,cAAc,EAAE,CAAC;gBACjB,YAAY,EAAE,CAAC;gBACf,aAAa,EAAE,CAAC;gBAChB,gBAAgB,EAAE,CAAC;gBACnB,aAAa,EAAE,CAAC;aACjB;SACF,CAAC;QAEF,MAAM,MAAM,GAAG,YAAY,CAAC,aAAa,EAAE,UAAU,EAAE,yBAAyB,CAAC,CAAC;QAElF,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;IAC/B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"factory.test.js","sourceRoot":"","sources":["../../src/server/factory.test.ts"],"names":[],"mappings":"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"}
@@ -2,9 +2,10 @@
2
2
  * HTTP MCP Server
3
3
  * Runs MCP server with HTTP Streamable transport for remote access
4
4
  */
5
+ import type { HttpServerOptions } from './types.js';
5
6
  /**
6
7
  * Start MCP server in HTTP mode
7
8
  * Creates Express server listening on specified port
8
9
  */
9
- export declare function startHttpServer(port: number): Promise<void>;
10
+ export declare function startHttpServer(options: HttpServerOptions): Promise<void>;
10
11
  //# sourceMappingURL=http.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/server/http.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH;;;GAGG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA+GjE"}
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/server/http.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD;;;GAGG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4H/E"}