diff --git a/README.md b/README.md index 7ba4323..38558f7 100644 --- a/README.md +++ b/README.md @@ -59,6 +59,7 @@ openapi-mcp-generator --input path/to/openapi.json --output path/to/output/dir - | `--port` | `-p` | Port for web-based transports | `3000` | | `--default-include` | | Default behavior for x-mcp filtering. Accepts `true` or `false` (case-insensitive). `true` = include by default, `false` = exclude by default. | `true` | | `--force` | | Overwrite existing files in the output directory without confirmation | `false` | +| `--insecure` | `-k` | Allow insecure HTTPS connections (self-signed certificates) | `false` | ## 📦 Programmatic API diff --git a/src/generator/server-code.ts b/src/generator/server-code.ts index 6b6a447..7118a32 100644 --- a/src/generator/server-code.ts +++ b/src/generator/server-code.ts @@ -35,7 +35,8 @@ export function generateMcpServerCode( // Generate code for API tool execution const executeApiToolFunctionCode = generateExecuteApiToolFunction( - api.components?.securitySchemes + api.components?.securitySchemes, + options.insecure ); // Generate code for request handlers @@ -105,6 +106,7 @@ import { import { z, ZodError } from 'zod'; import { jsonSchemaToZod } from 'json-schema-to-zod'; import axios, { type AxiosRequestConfig, type AxiosError } from 'axios'; +${options.insecure ? "import https from 'https';" : ''} /** * Type definition for JSON objects diff --git a/src/index.ts b/src/index.ts index d588a24..44aa84f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -87,6 +87,9 @@ program true ) .option('--force', 'Overwrite existing files without prompting') + .option('-k, --insecure', 'Allow insecure HTTPS connections (self-signed certificates)', (val) => + normalizeBoolean(val) + ) .version(pkg.version) // Match package.json version .action((options) => { runGenerator(options).catch((error) => { diff --git a/src/types/index.ts b/src/types/index.ts index e36eb3b..5f9a4ec 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -35,6 +35,8 @@ export interface CliOptions { * false = exclude by default unless x-mcp explicitly enables. */ defaultInclude?: boolean; + /** Allow insecure HTTPS connections (self-signed certificates) */ + insecure?: boolean; } /** diff --git a/src/utils/security.ts b/src/utils/security.ts index c6ecbc9..63346eb 100644 --- a/src/utils/security.ts +++ b/src/utils/security.ts @@ -82,7 +82,7 @@ export function generateHttpSecurityCode(): string { * * @returns Generated code for OAuth2 token acquisition */ -export function generateOAuth2TokenAcquisitionCode(): string { +export function generateOAuth2TokenAcquisitionCode(insecure?: boolean): string { return ` /** * Type definition for cached OAuth tokens @@ -165,7 +165,8 @@ async function acquireOAuth2Token(schemeName: string, scheme: any): Promise