spiceflow 1.12.1 → 1.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +107 -4
- package/dist/_node-server-unsupported.js +1 -0
- package/dist/_node-server-unsupported.js.map +1 -0
- package/dist/_node-server.d.ts.map +1 -1
- package/dist/_node-server.js +2 -2
- package/dist/_node-server.js.map +1 -0
- package/dist/client/errors.js +1 -0
- package/dist/client/errors.js.map +1 -0
- package/dist/client/index.d.ts +2 -2
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +7 -4
- package/dist/client/index.js.map +1 -0
- package/dist/client/types.js +1 -0
- package/dist/client/types.js.map +1 -0
- package/dist/client/utils.js +1 -0
- package/dist/client/utils.js.map +1 -0
- package/dist/client.test.js +1 -0
- package/dist/client.test.js.map +1 -0
- package/dist/context.d.ts +6 -3
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +1 -0
- package/dist/context.js.map +1 -0
- package/dist/cors.js +1 -0
- package/dist/cors.js.map +1 -0
- package/dist/cors.test.js +1 -0
- package/dist/cors.test.js.map +1 -0
- package/dist/error.js +1 -0
- package/dist/error.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp-client-transport.d.ts +35 -0
- package/dist/mcp-client-transport.d.ts.map +1 -0
- package/dist/mcp-client-transport.js +147 -0
- package/dist/mcp-client-transport.js.map +1 -0
- package/dist/mcp-transport.js +1 -0
- package/dist/mcp-transport.js.map +1 -0
- package/dist/mcp.d.ts +18 -1
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +43 -224
- package/dist/mcp.js.map +1 -0
- package/dist/middleware.test.js +1 -0
- package/dist/middleware.test.js.map +1 -0
- package/dist/openapi-to-mcp.d.ts +38 -0
- package/dist/openapi-to-mcp.d.ts.map +1 -0
- package/dist/openapi-to-mcp.js +367 -0
- package/dist/openapi-to-mcp.js.map +1 -0
- package/dist/openapi.d.ts.map +1 -1
- package/dist/openapi.js +7 -2
- package/dist/openapi.js.map +1 -0
- package/dist/openapi.test.js +32 -31
- package/dist/openapi.test.js.map +1 -0
- package/dist/simple.benchmark.js +1 -0
- package/dist/simple.benchmark.js.map +1 -0
- package/dist/spiceflow.d.ts +5 -2
- package/dist/spiceflow.d.ts.map +1 -1
- package/dist/spiceflow.js +26 -6
- package/dist/spiceflow.js.map +1 -0
- package/dist/spiceflow.test.js +15 -3
- package/dist/spiceflow.test.js.map +1 -0
- package/dist/static-node.js +1 -0
- package/dist/static-node.js.map +1 -0
- package/dist/static.benchmark.js +1 -0
- package/dist/static.benchmark.js.map +1 -0
- package/dist/static.js +1 -0
- package/dist/static.js.map +1 -0
- package/dist/stream.test.js +1 -0
- package/dist/stream.test.js.map +1 -0
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -0
- package/dist/types.test.js +1 -0
- package/dist/types.test.js.map +1 -0
- package/dist/utils.js +1 -0
- package/dist/utils.js.map +1 -0
- package/dist/waitUntil.test.d.ts +2 -0
- package/dist/waitUntil.test.d.ts.map +1 -0
- package/dist/waitUntil.test.js +142 -0
- package/dist/waitUntil.test.js.map +1 -0
- package/dist/zod.test.js +1 -0
- package/dist/zod.test.js.map +1 -0
- package/package.json +4 -3
- package/src/_node-server.ts +1 -2
- package/src/client/index.ts +9 -7
- package/src/context.ts +6 -3
- package/src/index.ts +1 -1
- package/src/mcp-client-transport.ts +184 -0
- package/src/mcp.ts +49 -307
- package/src/openapi-to-mcp.ts +510 -0
- package/src/openapi.test.ts +31 -31
- package/src/openapi.ts +9 -3
- package/src/spiceflow.test.ts +18 -4
- package/src/spiceflow.ts +42 -15
- package/src/waitUntil.test.ts +168 -0
- package/dist/serialize.d.ts +0 -2
- package/dist/serialize.d.ts.map +0 -1
- package/dist/serialize.js +0 -9
- package/src/serialize.ts +0 -10
|
@@ -0,0 +1,367 @@
|
|
|
1
|
+
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
2
|
+
// import deref from 'dereference-json-schema'
|
|
3
|
+
import { CallToolRequestSchema, ListResourcesRequestSchema, ListToolsRequestSchema, ReadResourceRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
|
|
4
|
+
function getOperationRequestBody(operation) {
|
|
5
|
+
if (!operation.requestBody)
|
|
6
|
+
return undefined;
|
|
7
|
+
const requestBody = operation.requestBody;
|
|
8
|
+
const content = requestBody.content['application/json'];
|
|
9
|
+
return content?.schema;
|
|
10
|
+
}
|
|
11
|
+
function getOperationParameters(operation) {
|
|
12
|
+
if (!operation.parameters)
|
|
13
|
+
return {};
|
|
14
|
+
const queryProperties = {};
|
|
15
|
+
const pathProperties = {};
|
|
16
|
+
const headerProperties = {};
|
|
17
|
+
const cookieProperties = {};
|
|
18
|
+
const queryRequired = [];
|
|
19
|
+
const pathRequired = [];
|
|
20
|
+
const headerRequired = [];
|
|
21
|
+
const cookieRequired = [];
|
|
22
|
+
operation.parameters.forEach((param) => {
|
|
23
|
+
const paramObj = param;
|
|
24
|
+
if (paramObj.in === 'query') {
|
|
25
|
+
queryProperties[paramObj.name] = paramObj.schema;
|
|
26
|
+
if (paramObj.required)
|
|
27
|
+
queryRequired.push(paramObj.name);
|
|
28
|
+
}
|
|
29
|
+
else if (paramObj.in === 'path') {
|
|
30
|
+
pathProperties[paramObj.name] = paramObj.schema;
|
|
31
|
+
if (paramObj.required)
|
|
32
|
+
pathRequired.push(paramObj.name);
|
|
33
|
+
}
|
|
34
|
+
else if (paramObj.in === 'header') {
|
|
35
|
+
headerProperties[paramObj.name] =
|
|
36
|
+
paramObj.schema;
|
|
37
|
+
if (paramObj.required)
|
|
38
|
+
headerRequired.push(paramObj.name);
|
|
39
|
+
}
|
|
40
|
+
else if (paramObj.in === 'cookie') {
|
|
41
|
+
cookieProperties[paramObj.name] =
|
|
42
|
+
paramObj.schema;
|
|
43
|
+
if (paramObj.required)
|
|
44
|
+
cookieRequired.push(paramObj.name);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
const result = {};
|
|
48
|
+
if (Object.keys(queryProperties).length > 0) {
|
|
49
|
+
result.queryParams = {
|
|
50
|
+
type: 'object',
|
|
51
|
+
properties: queryProperties,
|
|
52
|
+
required: queryRequired.length > 0 ? queryRequired : undefined,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
if (Object.keys(pathProperties).length > 0) {
|
|
56
|
+
result.pathParams = {
|
|
57
|
+
type: 'object',
|
|
58
|
+
properties: pathProperties,
|
|
59
|
+
required: pathRequired.length > 0 ? pathRequired : undefined,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
if (Object.keys(headerProperties).length > 0) {
|
|
63
|
+
result.headerParams = {
|
|
64
|
+
type: 'object',
|
|
65
|
+
properties: headerProperties,
|
|
66
|
+
required: headerRequired.length > 0 ? headerRequired : undefined,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
if (Object.keys(cookieProperties).length > 0) {
|
|
70
|
+
result.cookieParams = {
|
|
71
|
+
type: 'object',
|
|
72
|
+
properties: cookieProperties,
|
|
73
|
+
required: cookieRequired.length > 0 ? cookieRequired : undefined,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
return result;
|
|
77
|
+
}
|
|
78
|
+
function extractApiFromBaseUrl(openapi) {
|
|
79
|
+
if (openapi.servers && openapi.servers.length > 0) {
|
|
80
|
+
return openapi.servers[0].url;
|
|
81
|
+
}
|
|
82
|
+
return '';
|
|
83
|
+
}
|
|
84
|
+
function getAuthHeaders(openapi, operation) {
|
|
85
|
+
const headers = {};
|
|
86
|
+
const token = process.env.API_TOKEN;
|
|
87
|
+
if (!token || !openapi.components?.securitySchemes) {
|
|
88
|
+
return headers;
|
|
89
|
+
}
|
|
90
|
+
const securitySchemes = openapi.components.securitySchemes;
|
|
91
|
+
let selectedScheme = null;
|
|
92
|
+
// Check for operation-specific security requirements first
|
|
93
|
+
if (operation?.security && operation.security.length > 0) {
|
|
94
|
+
const firstSecurityReq = operation.security[0];
|
|
95
|
+
const operationSchemeNames = Object.keys(firstSecurityReq);
|
|
96
|
+
for (const schemeName of operationSchemeNames) {
|
|
97
|
+
const scheme = securitySchemes[schemeName];
|
|
98
|
+
if (scheme) {
|
|
99
|
+
selectedScheme = scheme;
|
|
100
|
+
break;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
// If no operation-specific scheme found, use the first available scheme
|
|
105
|
+
if (!selectedScheme) {
|
|
106
|
+
const schemes = Object.values(securitySchemes);
|
|
107
|
+
if (schemes.length > 0) {
|
|
108
|
+
selectedScheme = schemes[0];
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
if (!selectedScheme) {
|
|
112
|
+
return headers;
|
|
113
|
+
}
|
|
114
|
+
// Set headers based on scheme type
|
|
115
|
+
switch (selectedScheme.type) {
|
|
116
|
+
case 'http':
|
|
117
|
+
if (selectedScheme.scheme === 'bearer') {
|
|
118
|
+
headers['Authorization'] = `Bearer ${token}`;
|
|
119
|
+
}
|
|
120
|
+
else if (selectedScheme.scheme === 'basic') {
|
|
121
|
+
headers['Authorization'] = `Basic ${token}`;
|
|
122
|
+
}
|
|
123
|
+
break;
|
|
124
|
+
case 'apiKey':
|
|
125
|
+
if (selectedScheme.in === 'header') {
|
|
126
|
+
headers[selectedScheme.name] = token;
|
|
127
|
+
}
|
|
128
|
+
break;
|
|
129
|
+
case 'oauth2':
|
|
130
|
+
headers['Authorization'] = `Bearer ${token}`;
|
|
131
|
+
break;
|
|
132
|
+
}
|
|
133
|
+
return headers;
|
|
134
|
+
}
|
|
135
|
+
const defaultFetch = fetch;
|
|
136
|
+
export function createMCPServer({ name = 'spiceflow', version = '1.0.0', openapi, fetch = defaultFetch, paths, ignorePaths, baseUrl = '', }) {
|
|
137
|
+
const server = new Server({ name, version }, {
|
|
138
|
+
capabilities: {
|
|
139
|
+
tools: {},
|
|
140
|
+
resources: {},
|
|
141
|
+
},
|
|
142
|
+
});
|
|
143
|
+
// openapi = deref.dereferenceSync(openapi)
|
|
144
|
+
if (!baseUrl) {
|
|
145
|
+
baseUrl = extractApiFromBaseUrl(openapi);
|
|
146
|
+
}
|
|
147
|
+
if (baseUrl.endsWith('/')) {
|
|
148
|
+
baseUrl = baseUrl.slice(0, -1);
|
|
149
|
+
}
|
|
150
|
+
async function fetchWithBaseServerAndAuth(u, options, operation, userHeaders, userCookies) {
|
|
151
|
+
const authHeaders = getAuthHeaders(openapi, operation);
|
|
152
|
+
// Build cookie string from userCookies
|
|
153
|
+
let cookieHeader = '';
|
|
154
|
+
if (userCookies && Object.keys(userCookies).length > 0) {
|
|
155
|
+
cookieHeader = Object.entries(userCookies)
|
|
156
|
+
.map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`)
|
|
157
|
+
.join('; ');
|
|
158
|
+
}
|
|
159
|
+
const commonHeaders = {};
|
|
160
|
+
const finalHeaders = {
|
|
161
|
+
...commonHeaders,
|
|
162
|
+
...(userHeaders || {}),
|
|
163
|
+
...authHeaders,
|
|
164
|
+
...(options?.headers || {}),
|
|
165
|
+
};
|
|
166
|
+
if (cookieHeader) {
|
|
167
|
+
// Merge with existing Cookie header if present
|
|
168
|
+
const existingCookie = finalHeaders['Cookie'] || finalHeaders['cookie'];
|
|
169
|
+
finalHeaders['Cookie'] = existingCookie
|
|
170
|
+
? `${existingCookie}; ${cookieHeader}`
|
|
171
|
+
: cookieHeader;
|
|
172
|
+
}
|
|
173
|
+
console.error(`using headers ${JSON.stringify(finalHeaders, null, 2)}`);
|
|
174
|
+
return await fetch(new URL(u, baseUrl), {
|
|
175
|
+
...options,
|
|
176
|
+
headers: finalHeaders,
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
180
|
+
const filteredPaths = Object.entries(openapi.paths).filter(([path]) => {
|
|
181
|
+
if (ignorePaths?.includes(path))
|
|
182
|
+
return false;
|
|
183
|
+
if (paths && paths.length > 0) {
|
|
184
|
+
return paths.some((filterPath) => path.startsWith(filterPath));
|
|
185
|
+
}
|
|
186
|
+
return true;
|
|
187
|
+
});
|
|
188
|
+
const tools = filteredPaths.flatMap(([path, pathObj]) => Object.entries(pathObj || {})
|
|
189
|
+
.filter(([method]) => method !== 'parameters')
|
|
190
|
+
.map(([method, operation]) => {
|
|
191
|
+
const properties = {};
|
|
192
|
+
const required = [];
|
|
193
|
+
const requestBody = getOperationRequestBody(operation);
|
|
194
|
+
if (requestBody) {
|
|
195
|
+
properties.body = requestBody;
|
|
196
|
+
required.push('body');
|
|
197
|
+
}
|
|
198
|
+
const { queryParams, pathParams, headerParams, cookieParams } = getOperationParameters(operation);
|
|
199
|
+
if (queryParams) {
|
|
200
|
+
properties.query = queryParams;
|
|
201
|
+
}
|
|
202
|
+
if (pathParams) {
|
|
203
|
+
properties.params = pathParams;
|
|
204
|
+
}
|
|
205
|
+
if (headerParams) {
|
|
206
|
+
properties.headers = headerParams;
|
|
207
|
+
}
|
|
208
|
+
if (cookieParams) {
|
|
209
|
+
properties.cookies = cookieParams;
|
|
210
|
+
}
|
|
211
|
+
let description = `${method.toUpperCase()} route for ${baseUrl}${path}`;
|
|
212
|
+
let moreDescription = operation.description ||
|
|
213
|
+
operation.summary;
|
|
214
|
+
if (moreDescription) {
|
|
215
|
+
description += '. ';
|
|
216
|
+
description += moreDescription;
|
|
217
|
+
}
|
|
218
|
+
return {
|
|
219
|
+
name: getRouteName({ method, path }),
|
|
220
|
+
description,
|
|
221
|
+
inputSchema: {
|
|
222
|
+
type: 'object',
|
|
223
|
+
properties,
|
|
224
|
+
required: required.length > 0 ? required : undefined,
|
|
225
|
+
},
|
|
226
|
+
};
|
|
227
|
+
}));
|
|
228
|
+
return { tools };
|
|
229
|
+
});
|
|
230
|
+
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
231
|
+
const toolName = request.params.name;
|
|
232
|
+
let { path, method } = getPathFromToolName(toolName);
|
|
233
|
+
const pathObj = openapi.paths[path];
|
|
234
|
+
if (!pathObj || !pathObj[method.toLowerCase()]) {
|
|
235
|
+
return {
|
|
236
|
+
content: [{ type: 'text', text: `Tool ${toolName} not found` }],
|
|
237
|
+
isError: true,
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
try {
|
|
241
|
+
const args = request.params.arguments || {};
|
|
242
|
+
const { body, query, params } = args;
|
|
243
|
+
const userHeaders = args.headers;
|
|
244
|
+
const userCookies = args.cookies;
|
|
245
|
+
const operation = pathObj[method.toLowerCase()];
|
|
246
|
+
if (params) {
|
|
247
|
+
Object.entries(params).forEach(([key, value]) => {
|
|
248
|
+
path = path.replace(`{${key}}`, encodeURIComponent(String(value)));
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
if (query) {
|
|
252
|
+
const searchParams = new URLSearchParams();
|
|
253
|
+
Object.entries(query).forEach(([key, value]) => {
|
|
254
|
+
searchParams.set(key, String(value));
|
|
255
|
+
});
|
|
256
|
+
path += `?${searchParams.toString()}`;
|
|
257
|
+
}
|
|
258
|
+
const response = await fetchWithBaseServerAndAuth(path, {
|
|
259
|
+
method,
|
|
260
|
+
headers: {
|
|
261
|
+
'content-type': 'application/json',
|
|
262
|
+
},
|
|
263
|
+
body: body
|
|
264
|
+
? typeof body === 'string'
|
|
265
|
+
? body
|
|
266
|
+
: JSON.stringify(body)
|
|
267
|
+
: undefined,
|
|
268
|
+
}, operation, userHeaders, userCookies);
|
|
269
|
+
const isError = !response.ok;
|
|
270
|
+
const contentType = response.headers.get('content-type');
|
|
271
|
+
if (contentType?.includes('application/json')) {
|
|
272
|
+
const json = await response.json();
|
|
273
|
+
return {
|
|
274
|
+
isError,
|
|
275
|
+
content: [{ type: 'text', text: JSON.stringify(json, null, 2) }],
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
const text = await response.text();
|
|
279
|
+
return {
|
|
280
|
+
isError,
|
|
281
|
+
content: [{ type: 'text', text }],
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
catch (error) {
|
|
285
|
+
return {
|
|
286
|
+
content: [{ type: 'text', text: error.message || 'Unknown error' }],
|
|
287
|
+
isError: true,
|
|
288
|
+
};
|
|
289
|
+
}
|
|
290
|
+
});
|
|
291
|
+
server.setRequestHandler(ListResourcesRequestSchema, async () => {
|
|
292
|
+
const resources = [];
|
|
293
|
+
for (const [path, pathObj] of Object.entries(openapi.paths)) {
|
|
294
|
+
if (path.startsWith('/mcp')) {
|
|
295
|
+
continue;
|
|
296
|
+
}
|
|
297
|
+
const getOperation = pathObj?.get;
|
|
298
|
+
if (getOperation && !path.includes('{')) {
|
|
299
|
+
const { queryParams, headerParams, cookieParams } = getOperationParameters(getOperation);
|
|
300
|
+
const hasRequiredQuery = queryParams?.required && queryParams.required.length > 0;
|
|
301
|
+
const hasRequiredHeaders = headerParams?.required && headerParams.required.length > 0;
|
|
302
|
+
const hasRequiredCookies = cookieParams?.required && cookieParams.required.length > 0;
|
|
303
|
+
if (!hasRequiredQuery && !hasRequiredHeaders && !hasRequiredCookies) {
|
|
304
|
+
resources.push({
|
|
305
|
+
uri: path,
|
|
306
|
+
mimeType: 'application/json',
|
|
307
|
+
name: `GET ${path}`,
|
|
308
|
+
});
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
return { resources: [] };
|
|
313
|
+
});
|
|
314
|
+
server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
|
|
315
|
+
throw new Error('Resources are not supported - use tools instead');
|
|
316
|
+
});
|
|
317
|
+
return { server };
|
|
318
|
+
}
|
|
319
|
+
function getRouteName({ method, path, }) {
|
|
320
|
+
return formatToolName(`${method.toUpperCase()} ${path}`, method, path);
|
|
321
|
+
}
|
|
322
|
+
const toolNameToPath = new Map();
|
|
323
|
+
function getPathFromToolName(toolName) {
|
|
324
|
+
const cached = toolNameToPath.get(toolName);
|
|
325
|
+
if (cached) {
|
|
326
|
+
return cached;
|
|
327
|
+
}
|
|
328
|
+
throw new Error(`Tool name '${toolName}' not found. It might not have been registered or was invalid.`);
|
|
329
|
+
}
|
|
330
|
+
function formatToolName(nameToFormat, method, pathForMap) {
|
|
331
|
+
if (!nameToFormat || nameToFormat.trim() === '') {
|
|
332
|
+
throw new Error('Original tool name for formatting cannot be empty');
|
|
333
|
+
}
|
|
334
|
+
// Replace spaces and other invalid characters with underscores
|
|
335
|
+
let formatted = nameToFormat
|
|
336
|
+
.replace(/[^a-zA-Z0-9_-]/g, '_')
|
|
337
|
+
.replace(/_+/g, '_') // Replace multiple underscores with single underscore
|
|
338
|
+
.replace(/^_+|_+$/g, ''); // Remove leading/trailing underscores
|
|
339
|
+
// Truncate to 64 characters if necessary
|
|
340
|
+
if (formatted.length > 64) {
|
|
341
|
+
formatted = formatted.substring(0, 64);
|
|
342
|
+
}
|
|
343
|
+
// Remove trailing underscores again in case truncation created them or they persisted
|
|
344
|
+
formatted = formatted.replace(/_+$/, '');
|
|
345
|
+
if (formatted === '') {
|
|
346
|
+
throw new Error(`Tool name results in empty string after formatting (from original: '${nameToFormat}')`);
|
|
347
|
+
}
|
|
348
|
+
// Validate against regex
|
|
349
|
+
const regex = /^[a-zA-Z0-9_-]{1,64}$/;
|
|
350
|
+
if (!regex.test(formatted)) {
|
|
351
|
+
throw new Error(`Formatted tool name "${formatted}" (from original: '${nameToFormat}') does not match required pattern: ^[a-zA-Z0-9_-]{1,64}$`);
|
|
352
|
+
}
|
|
353
|
+
// Check for duplicates: if this formatted name already exists and belongs to a DIFFERENT tool (method/path), it's a collision.
|
|
354
|
+
const existingEntry = toolNameToPath.get(formatted);
|
|
355
|
+
if (existingEntry &&
|
|
356
|
+
(existingEntry.method !== method || existingEntry.path !== pathForMap)) {
|
|
357
|
+
console.error(new Error(`Duplicate tool name generated: '${formatted}'. ` +
|
|
358
|
+
`This name was generated for original: '${nameToFormat}' (method: '${method}', path: '${pathForMap}'). ` +
|
|
359
|
+
`It conflicts with an existing tool that also maps to '${formatted}', originally from (method: '${existingEntry.method}', path: '${existingEntry.path}'). ` +
|
|
360
|
+
`Ensure operationIds or path/method combinations in your OpenAPI spec are sufficiently unique to avoid naming collisions after formatting.`));
|
|
361
|
+
}
|
|
362
|
+
// Register the name with its method and path.
|
|
363
|
+
// If the same tool (method/path) is formatted again to the same name, this just overwrites with identical values.
|
|
364
|
+
toolNameToPath.set(formatted, { method, path: pathForMap });
|
|
365
|
+
return formatted;
|
|
366
|
+
}
|
|
367
|
+
//# sourceMappingURL=openapi-to-mcp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openapi-to-mcp.js","sourceRoot":"","sources":["../src/openapi-to-mcp.ts"],"names":[],"mappings":"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"}
|
package/dist/openapi.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../src/openapi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsC,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../src/openapi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsC,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AA8V9C,eAAO,MAAM,OAAO,GAAI,IAAI,SAAS,MAAM,GAAG,UAAU,EAAE,0BAGvD;IACD,IAAI,CAAC,EAAE,IAAI,CAAA;CACZ,GAAG,IAAI,CACN,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,EACzB,yCAAyC,GACzC,qCAAqC,CACxC,GAAG;IACA,uBAAuB,CAAC,EAAE,KAAK,CAAC;QAC9B,MAAM,EAAE,MAAM,CAAA;QACd,IAAI,EAAE,MAAM,CAAA;QACZ,QAAQ,CAAC,EAAE,OAAO,CAAA;KACnB,CAAC,CAAA;IACF,gBAAgB,CAAC,EAAE;QACjB,OAAO,EAAE;YACP,MAAM,EAAE,MAAM,CAAA;YACd,OAAO,EAAE,MAAM,CAAA;YACf,MAAM,EAAE,MAAM,EAAE,CAAA;SACjB,CAAA;KACF,CAAA;CACG;;;;;;;;;;;;;;;;;;;6GAsFP,CAAA"}
|
package/dist/openapi.js
CHANGED
|
@@ -77,7 +77,7 @@ const generateOperationId = (method, paths) => {
|
|
|
77
77
|
}
|
|
78
78
|
return operationId;
|
|
79
79
|
};
|
|
80
|
-
const registerSchemaPath = ({ schema, route, models, }) => {
|
|
80
|
+
const registerSchemaPath = ({ schema, route, models, basePath, }) => {
|
|
81
81
|
const hooks = route.hooks;
|
|
82
82
|
let contentTypes = ['application/json'];
|
|
83
83
|
if (isAsyncGenerator(route.handler) && !route.hooks?.response) {
|
|
@@ -252,6 +252,7 @@ export const openapi = ({ path = '/openapi', ...additional } = {}) => {
|
|
|
252
252
|
let totalRoutes = 0;
|
|
253
253
|
const relativePath = path.startsWith('/') ? path.slice(1) : path;
|
|
254
254
|
const app = new Spiceflow({ name: 'openapi' }).get(path, ({}) => {
|
|
255
|
+
const basePath = app.topLevelApp.basePath; // TODO this does not work
|
|
255
256
|
let routes = app.getAllRoutes();
|
|
256
257
|
if (routes.length !== totalRoutes) {
|
|
257
258
|
const ALLOWED_METHODS = [
|
|
@@ -266,6 +267,8 @@ export const openapi = ({ path = '/openapi', ...additional } = {}) => {
|
|
|
266
267
|
];
|
|
267
268
|
totalRoutes = routes.length;
|
|
268
269
|
routes.forEach((route) => {
|
|
270
|
+
if (route.path.startsWith('_mcp_'))
|
|
271
|
+
return;
|
|
269
272
|
if (route.hooks?.detail?.hide === true)
|
|
270
273
|
return;
|
|
271
274
|
// TODO: route.hooks?.detail?.hide !== false add ability to hide: false to prevent excluding
|
|
@@ -277,15 +280,16 @@ export const openapi = ({ path = '/openapi', ...additional } = {}) => {
|
|
|
277
280
|
if (route.method === 'ALL') {
|
|
278
281
|
ALLOWED_METHODS.forEach((method) => {
|
|
279
282
|
registerSchemaPath({
|
|
283
|
+
basePath,
|
|
280
284
|
schema,
|
|
281
285
|
route: { ...route, method },
|
|
282
|
-
// @ts-ignore
|
|
283
286
|
models: app.definitions?.type,
|
|
284
287
|
});
|
|
285
288
|
});
|
|
286
289
|
return;
|
|
287
290
|
}
|
|
288
291
|
registerSchemaPath({
|
|
292
|
+
basePath,
|
|
289
293
|
schema,
|
|
290
294
|
route,
|
|
291
295
|
// @ts-ignore
|
|
@@ -357,3 +361,4 @@ function isAsyncGenerator(fn) {
|
|
|
357
361
|
typeof fn === 'function' &&
|
|
358
362
|
fn.constructor?.name === 'AsyncGeneratorFunction');
|
|
359
363
|
}
|
|
364
|
+
//# sourceMappingURL=openapi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openapi.js","sourceRoot":"","sources":["../src/openapi.ts"],"names":[],"mappings":"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"}
|
package/dist/openapi.test.js
CHANGED
|
@@ -4,7 +4,7 @@ import { z as z4 } from 'zod/v4';
|
|
|
4
4
|
import { openapi } from "./openapi.js";
|
|
5
5
|
import { Spiceflow } from "./spiceflow.js";
|
|
6
6
|
test('openapi response', async () => {
|
|
7
|
-
const app = new Spiceflow()
|
|
7
|
+
const app = new Spiceflow({ basePath: '/base' })
|
|
8
8
|
.use(openapi({
|
|
9
9
|
info: {
|
|
10
10
|
title: 'Spiceflow Docs',
|
|
@@ -115,73 +115,73 @@ test('openapi response', async () => {
|
|
|
115
115
|
}),
|
|
116
116
|
}));
|
|
117
117
|
const openapiSchema = await app
|
|
118
|
-
.handle(new Request('http://localhost/openapi'))
|
|
118
|
+
.handle(new Request('http://localhost/base/openapi'))
|
|
119
119
|
.then((x) => x.json());
|
|
120
120
|
expect(openapiSchema).toMatchInlineSnapshot(`
|
|
121
121
|
{
|
|
122
122
|
"__superjsonMeta": {
|
|
123
123
|
"values": {
|
|
124
|
-
"paths./addBody.patch.responses.200.content.application/json.schema.items": [
|
|
124
|
+
"paths./base/addBody.patch.responses.200.content.application/json.schema.items": [
|
|
125
125
|
"undefined",
|
|
126
126
|
],
|
|
127
|
-
"paths./addBody.patch.responses.200.content.application/json.schema.patternProperties": [
|
|
127
|
+
"paths./base/addBody.patch.responses.200.content.application/json.schema.patternProperties": [
|
|
128
128
|
"undefined",
|
|
129
129
|
],
|
|
130
|
-
"paths./addBody.patch.responses.200.content.application/json.schema.required": [
|
|
130
|
+
"paths./base/addBody.patch.responses.200.content.application/json.schema.required": [
|
|
131
131
|
"undefined",
|
|
132
132
|
],
|
|
133
|
-
"paths./formWithSchemaForm.post.responses.200.content.multipart/form-data.schema.items": [
|
|
133
|
+
"paths./base/formWithSchemaForm.post.responses.200.content.multipart/form-data.schema.items": [
|
|
134
134
|
"undefined",
|
|
135
135
|
],
|
|
136
|
-
"paths./formWithSchemaForm.post.responses.200.content.multipart/form-data.schema.patternProperties": [
|
|
136
|
+
"paths./base/formWithSchemaForm.post.responses.200.content.multipart/form-data.schema.patternProperties": [
|
|
137
137
|
"undefined",
|
|
138
138
|
],
|
|
139
|
-
"paths./one/ids/{id}.get.parameters.0.description": [
|
|
139
|
+
"paths./base/one/ids/{id}.get.parameters.0.description": [
|
|
140
140
|
"undefined",
|
|
141
141
|
],
|
|
142
|
-
"paths./one/ids/{id}.get.parameters.0.examples": [
|
|
142
|
+
"paths./base/one/ids/{id}.get.parameters.0.examples": [
|
|
143
143
|
"undefined",
|
|
144
144
|
],
|
|
145
|
-
"paths./one/ids/{id}.get.responses.404.content.application/json.schema.items": [
|
|
145
|
+
"paths./base/one/ids/{id}.get.responses.404.content.application/json.schema.items": [
|
|
146
146
|
"undefined",
|
|
147
147
|
],
|
|
148
|
-
"paths./one/ids/{id}.get.responses.404.content.application/json.schema.patternProperties": [
|
|
148
|
+
"paths./base/one/ids/{id}.get.responses.404.content.application/json.schema.patternProperties": [
|
|
149
149
|
"undefined",
|
|
150
150
|
],
|
|
151
|
-
"paths./queryParams.get.parameters.0.description": [
|
|
151
|
+
"paths./base/queryParams.get.parameters.0.description": [
|
|
152
152
|
"undefined",
|
|
153
153
|
],
|
|
154
|
-
"paths./queryParams.get.parameters.0.examples": [
|
|
154
|
+
"paths./base/queryParams.get.parameters.0.examples": [
|
|
155
155
|
"undefined",
|
|
156
156
|
],
|
|
157
|
-
"paths./queryParams.get.responses.200.content.application/json.schema.items": [
|
|
157
|
+
"paths./base/queryParams.get.responses.200.content.application/json.schema.items": [
|
|
158
158
|
"undefined",
|
|
159
159
|
],
|
|
160
|
-
"paths./queryParams.get.responses.200.content.application/json.schema.patternProperties": [
|
|
160
|
+
"paths./base/queryParams.get.responses.200.content.application/json.schema.patternProperties": [
|
|
161
161
|
"undefined",
|
|
162
162
|
],
|
|
163
|
-
"paths./queryParams.get.responses.200.content.application/json.schema.required": [
|
|
163
|
+
"paths./base/queryParams.get.responses.200.content.application/json.schema.required": [
|
|
164
164
|
"undefined",
|
|
165
165
|
],
|
|
166
|
-
"paths./queryParams.post.responses.200.content.application/json.schema.items": [
|
|
166
|
+
"paths./base/queryParams.post.responses.200.content.application/json.schema.items": [
|
|
167
167
|
"undefined",
|
|
168
168
|
],
|
|
169
|
-
"paths./queryParams.post.responses.200.content.application/json.schema.patternProperties": [
|
|
169
|
+
"paths./base/queryParams.post.responses.200.content.application/json.schema.patternProperties": [
|
|
170
170
|
"undefined",
|
|
171
171
|
],
|
|
172
|
-
"paths./queryParams.post.responses.200.content.application/json.schema.required": [
|
|
172
|
+
"paths./base/queryParams.post.responses.200.content.application/json.schema.required": [
|
|
173
173
|
"undefined",
|
|
174
174
|
],
|
|
175
|
-
"paths./streamWithSchema.get.responses.200.content.application/json.schema.items": [
|
|
175
|
+
"paths./base/streamWithSchema.get.responses.200.content.application/json.schema.items": [
|
|
176
176
|
"undefined",
|
|
177
177
|
],
|
|
178
|
-
"paths./streamWithSchema.get.responses.200.content.application/json.schema.patternProperties": [
|
|
178
|
+
"paths./base/streamWithSchema.get.responses.200.content.application/json.schema.patternProperties": [
|
|
179
179
|
"undefined",
|
|
180
180
|
],
|
|
181
|
-
"paths./two/ids/{id}.get.parameters.0.description": [
|
|
181
|
+
"paths./base/two/ids/{id}.get.parameters.0.description": [
|
|
182
182
|
"undefined",
|
|
183
183
|
],
|
|
184
|
-
"paths./two/ids/{id}.get.parameters.0.examples": [
|
|
184
|
+
"paths./base/two/ids/{id}.get.parameters.0.examples": [
|
|
185
185
|
"undefined",
|
|
186
186
|
],
|
|
187
187
|
},
|
|
@@ -196,7 +196,7 @@ test('openapi response', async () => {
|
|
|
196
196
|
},
|
|
197
197
|
"openapi": "3.1.3",
|
|
198
198
|
"paths": {
|
|
199
|
-
"/addBody": {
|
|
199
|
+
"/base/addBody": {
|
|
200
200
|
"patch": {
|
|
201
201
|
"parameters": [],
|
|
202
202
|
"requestBody": {
|
|
@@ -247,7 +247,7 @@ test('openapi response', async () => {
|
|
|
247
247
|
},
|
|
248
248
|
},
|
|
249
249
|
},
|
|
250
|
-
"/formWithSchemaForm": {
|
|
250
|
+
"/base/formWithSchemaForm": {
|
|
251
251
|
"post": {
|
|
252
252
|
"description": "This returns form data with schema",
|
|
253
253
|
"responses": {
|
|
@@ -286,7 +286,7 @@ test('openapi response', async () => {
|
|
|
286
286
|
},
|
|
287
287
|
},
|
|
288
288
|
},
|
|
289
|
-
"/one/ids/{id}": {
|
|
289
|
+
"/base/one/ids/{id}": {
|
|
290
290
|
"get": {
|
|
291
291
|
"parameters": [
|
|
292
292
|
{
|
|
@@ -342,7 +342,7 @@ test('openapi response', async () => {
|
|
|
342
342
|
},
|
|
343
343
|
},
|
|
344
344
|
},
|
|
345
|
-
"/openapi": {
|
|
345
|
+
"/base/openapi": {
|
|
346
346
|
"get": {
|
|
347
347
|
"responses": {
|
|
348
348
|
"200": {
|
|
@@ -364,7 +364,7 @@ test('openapi response', async () => {
|
|
|
364
364
|
},
|
|
365
365
|
},
|
|
366
366
|
},
|
|
367
|
-
"/queryParams": {
|
|
367
|
+
"/base/queryParams": {
|
|
368
368
|
"get": {
|
|
369
369
|
"parameters": [
|
|
370
370
|
{
|
|
@@ -460,7 +460,7 @@ test('openapi response', async () => {
|
|
|
460
460
|
},
|
|
461
461
|
},
|
|
462
462
|
},
|
|
463
|
-
"/stream": {
|
|
463
|
+
"/base/stream": {
|
|
464
464
|
"get": {
|
|
465
465
|
"description": "This is a stream",
|
|
466
466
|
"responses": {
|
|
@@ -486,7 +486,7 @@ test('openapi response', async () => {
|
|
|
486
486
|
},
|
|
487
487
|
},
|
|
488
488
|
},
|
|
489
|
-
"/streamWithSchema": {
|
|
489
|
+
"/base/streamWithSchema": {
|
|
490
490
|
"get": {
|
|
491
491
|
"description": "This is a stream with schema",
|
|
492
492
|
"responses": {
|
|
@@ -524,7 +524,7 @@ test('openapi response', async () => {
|
|
|
524
524
|
},
|
|
525
525
|
},
|
|
526
526
|
},
|
|
527
|
-
"/two/ids/{id}": {
|
|
527
|
+
"/base/two/ids/{id}": {
|
|
528
528
|
"get": {
|
|
529
529
|
"parameters": [
|
|
530
530
|
{
|
|
@@ -562,3 +562,4 @@ test('openapi response', async () => {
|
|
|
562
562
|
}
|
|
563
563
|
`);
|
|
564
564
|
});
|
|
565
|
+
//# sourceMappingURL=openapi.test.js.map
|