mcp-swagger-parser
Version:
Enterprise-grade OpenAPI/Swagger specification parser for Model Context Protocol (MCP) projects
145 lines • 6.09 kB
JavaScript
;
/**
* @fileoverview MCP Swagger Parser - OpenAPI/Swagger specification parser for Model Context Protocol
* @version 1.0.0
* @author MCP Swagger Team
* @license MIT
*/
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.DEFAULT_TRANSFORMER_OPTIONS = exports.DEFAULT_PARSER_CONFIG = exports.PACKAGE_NAME = exports.VERSION = exports.predefinedGenerators = exports.CustomHeadersManager = exports.BearerAuthManager = exports.OpenAPIToMCPTransformer = exports.transformToMCPTools = exports.parseFromString = exports.parseFromUrl = exports.parseFromFile = void 0;
exports.parseAndTransform = parseAndTransform;
// Export types
__exportStar(require("./types/index"), exports);
// Export core functionality
__exportStar(require("./core/parser"), exports);
__exportStar(require("./core/validator"), exports);
__exportStar(require("./core/normalizer"), exports);
__exportStar(require("./core/version-detector"), exports);
__exportStar(require("./core/swagger2openapi-converter"), exports);
// Export parsers
__exportStar(require("./parsers/base-parser"), exports);
__exportStar(require("./parsers/url-parser"), exports);
__exportStar(require("./parsers/file-parser"), exports);
__exportStar(require("./parsers/text-parser"), exports);
// Export extractors
__exportStar(require("./extractors/index"), exports);
// Export utilities
__exportStar(require("./utils/index"), exports);
// Export errors
__exportStar(require("./errors/index"), exports);
// Re-export commonly used functions for convenience
const parser_1 = require("./core/parser");
const index_1 = require("./transformer/index");
// Create convenience functions
const parseFromFile = async (filePath, config) => {
const parser = new parser_1.OpenAPIParser(config);
return parser.parseFromFile(filePath);
};
exports.parseFromFile = parseFromFile;
const parseFromUrl = async (url, config) => {
const parser = new parser_1.OpenAPIParser(config);
return parser.parseFromUrl(url);
};
exports.parseFromUrl = parseFromUrl;
const parseFromString = async (content, config) => {
const parser = new parser_1.OpenAPIParser(config);
return parser.parseFromString(content);
};
exports.parseFromString = parseFromString;
// Export transformer functions
var index_2 = require("./transformer/index");
Object.defineProperty(exports, "transformToMCPTools", { enumerable: true, get: function () { return index_2.transformToMCPTools; } });
Object.defineProperty(exports, "OpenAPIToMCPTransformer", { enumerable: true, get: function () { return index_2.OpenAPIToMCPTransformer; } });
var bearer_auth_1 = require("./auth/bearer-auth");
Object.defineProperty(exports, "BearerAuthManager", { enumerable: true, get: function () { return bearer_auth_1.BearerAuthManager; } });
// Export custom headers
var index_3 = require("./headers/index");
Object.defineProperty(exports, "CustomHeadersManager", { enumerable: true, get: function () { return index_3.CustomHeadersManager; } });
Object.defineProperty(exports, "predefinedGenerators", { enumerable: true, get: function () { return index_3.predefinedGenerators; } });
/**
* High-level convenience function to parse and transform OpenAPI spec in one step
*
* @param source - File path, URL, or string content
* @param options - Parser and transformer options
* @returns Promise resolving to MCP tools array
*
* @example
* ```typescript
* // From file
* const tools = await parseAndTransform('/path/to/swagger.json');
*
* // From URL with options
* const tools = await parseAndTransform('https://api.example.com/swagger.json', {
* parserConfig: { strictMode: false },
* transformerOptions: { baseUrl: 'https://api.example.com' }
* });
*
* // From string
* const swaggerJson = '{"openapi": "3.0.0", ...}';
* const tools = await parseAndTransform(swaggerJson, { isString: true });
* ```
*/
async function parseAndTransform(source, options = {}) {
const { isString = false, isUrl = false, parserConfig, transformerOptions } = options;
let parseResult;
if (isString) {
parseResult = await (0, exports.parseFromString)(source, parserConfig);
}
else if (isUrl || source.startsWith('http://') || source.startsWith('https://')) {
parseResult = await (0, exports.parseFromUrl)(source, parserConfig);
}
else {
parseResult = await (0, exports.parseFromFile)(source, parserConfig);
}
return (0, index_1.transformToMCPTools)(parseResult.spec, transformerOptions);
}
/**
* Package metadata
*/
exports.VERSION = '1.0.0';
exports.PACKAGE_NAME = 'mcp-swagger-parser';
/**
* Default configurations
*/
exports.DEFAULT_PARSER_CONFIG = {
validateSchema: true,
resolveReferences: true,
allowEmptyPaths: false,
strictMode: false,
customValidators: [],
autoConvert: true,
autoFix: true,
swagger2Options: {
patch: true,
warnOnly: false,
resolveInternal: false,
targetVersion: '3.0.0',
preserveRefs: true,
warnProperty: 'x-s2o-warning',
debug: false
}
};
exports.DEFAULT_TRANSFORMER_OPTIONS = {
includeDeprecated: false,
includeTags: [],
excludeTags: [],
requestTimeout: 30000,
defaultHeaders: { 'Content-Type': 'application/json' },
debugHeaders: false,
protectedHeaders: ['content-type', 'content-length', 'host', 'connection', 'transfer-encoding', 'upgrade']
};
//# sourceMappingURL=index.js.map