Skip to main content
Glama
index.ts4.49 kB
/** * @fileoverview MCP Swagger Parser - OpenAPI/Swagger specification parser for Model Context Protocol * @version 1.0.0 * @author MCP Swagger Team * @license MIT */ // Export types export * from './types/index'; // Export core functionality export * from './core/parser'; export * from './core/validator'; export * from './core/normalizer'; export * from './core/version-detector'; export * from './core/swagger2openapi-converter'; // Export parsers export * from './parsers/base-parser'; export * from './parsers/url-parser'; export * from './parsers/file-parser'; export * from './parsers/text-parser'; // Export extractors export * from './extractors/index'; // Export utilities export * from './utils/index'; // Export errors export * from './errors/index'; // Re-export commonly used functions for convenience import { OpenAPIParser } from './core/parser'; import { transformToMCPTools, type TransformerOptions } from './transformer/index'; import type { OpenAPISpec, ParserConfig } from './types/index'; // Create convenience functions export const parseFromFile = async (filePath: string, config?: ParserConfig) => { const parser = new OpenAPIParser(config); return parser.parseFromFile(filePath); }; export const parseFromUrl = async (url: string, config?: ParserConfig) => { const parser = new OpenAPIParser(config); return parser.parseFromUrl(url); }; export const parseFromString = async (content: string, config?: ParserConfig) => { const parser = new OpenAPIParser(config); return parser.parseFromString(content); }; // Export transformer functions export { transformToMCPTools, OpenAPIToMCPTransformer } from './transformer/index'; export type { MCPTool, MCPToolResponse, TransformerOptions, CustomHeaders, RequestContext } from './transformer/types'; // Export auth types export type { AuthConfig, AuthManager, BearerConfig, ApiKeyConfig, BasicConfig, OAuth2Config, CustomConfig } from './auth/types'; export { BearerAuthManager } from './auth/bearer-auth'; // Export custom headers export { CustomHeadersManager, predefinedGenerators } from './headers/index'; /** * 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 }); * ``` */ export async function parseAndTransform( source: string, options: { isString?: boolean; isUrl?: boolean; parserConfig?: ParserConfig; transformerOptions?: TransformerOptions; } = {} ) { const { isString = false, isUrl = false, parserConfig, transformerOptions } = options; let parseResult; if (isString) { parseResult = await parseFromString(source, parserConfig); } else if (isUrl || source.startsWith('http://') || source.startsWith('https://')) { parseResult = await parseFromUrl(source, parserConfig); } else { parseResult = await parseFromFile(source, parserConfig); } return transformToMCPTools(parseResult.spec, transformerOptions); } /** * Package metadata */ export const VERSION = '1.0.0'; export const PACKAGE_NAME = 'mcp-swagger-parser'; /** * Default configurations */ export const DEFAULT_PARSER_CONFIG: ParserConfig = { validateSchema: true, resolveReferences: true, allowEmptyPaths: false, strictMode: false, customValidators: [], autoConvert: true, autoFix: true, swagger2Options: { patch: true, warnOnly: false, resolveInternal: true, // 启用内部引用解析 targetVersion: '3.0.0', preserveRefs: true, warnProperty: 'x-s2o-warning', debug: false } }; export const DEFAULT_TRANSFORMER_OPTIONS: TransformerOptions = { includeDeprecated: false, includeTags: [], excludeTags: [], requestTimeout: 30000, defaultHeaders: { 'Content-Type': 'application/json' }, debugHeaders: false, protectedHeaders: ['content-type', 'content-length', 'host', 'connection', 'transfer-encoding', 'upgrade'] };

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/zaizaizhao/mcp-swagger-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server