diff --git a/src/parser/extract-tools.ts b/src/parser/extract-tools.ts index 6371623..bc14c62 100644 --- a/src/parser/extract-tools.ts +++ b/src/parser/extract-tools.ts @@ -62,7 +62,7 @@ export function extractToolsFromApi( } // Generate a unique name for the tool - let baseName = operation.operationId || generateOperationId(method, path); + let baseName = operation.summary || generateOperationId(method, path); if (!baseName) continue; // Sanitize the name to be MCP-compatible (only a-z, 0-9, _, -) diff --git a/src/utils/security.ts b/src/utils/security.ts index c6ecbc9..785c969 100644 --- a/src/utils/security.ts +++ b/src/utils/security.ts @@ -412,7 +412,13 @@ async function executeApiTool( urlPath = urlPath.replace(\`{\${param.name}}\`, encodeURIComponent(String(value))); } else if (param.in === 'query') { - queryParams[param.name] = value; + // Convert arrays to comma-separated strings for query parameters + queryParams[param.name] = Array.isArray(value) + ? value + .filter((v) => v !== undefined && v !== null) + .map((v) => String(v)) + .join(',') + : value; } else if (param.in === 'header') { headers[param.name.toLowerCase()] = String(value);