swagger-tools/src/index.ts
rimskij cc789d3b32 feat: initial MCP server for OpenAPI/Swagger parsing
- Parse and validate OpenAPI 3.x / Swagger 2.0 specs
- Query endpoints by method, path pattern, tag, operationId
- Get component schema details
- Generate TypeScript interfaces from schemas
- Support local files and remote URLs

Tools: parse-spec, validate-spec, query-endpoints, get-schema, generate-types

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-12 14:33:10 +01:00

91 lines
1.7 KiB
JavaScript

#!/usr/bin/env node
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
import {
parseToolName,
parseToolDescription,
parseToolSchema,
parseToolHandler,
} from './tools/parse.js';
import {
validateToolName,
validateToolDescription,
validateToolSchema,
validateToolHandler,
} from './tools/validate.js';
import {
queryToolName,
queryToolDescription,
queryToolSchema,
queryToolHandler,
} from './tools/query.js';
import {
schemaToolName,
schemaToolDescription,
schemaToolSchema,
schemaToolHandler,
} from './tools/schema.js';
import {
generateToolName,
generateToolDescription,
generateToolSchema,
generateToolHandler,
} from './tools/generate.js';
const server = new McpServer({
name: 'swagger-tools',
version: '0.1.0',
});
// Register parse-spec tool
server.tool(
parseToolName,
parseToolDescription,
parseToolSchema,
parseToolHandler
);
// Register validate-spec tool
server.tool(
validateToolName,
validateToolDescription,
validateToolSchema,
validateToolHandler
);
// Register query-endpoints tool
server.tool(
queryToolName,
queryToolDescription,
queryToolSchema,
queryToolHandler
);
// Register get-schema tool
server.tool(
schemaToolName,
schemaToolDescription,
schemaToolSchema,
schemaToolHandler
);
// Register generate-types tool
server.tool(
generateToolName,
generateToolDescription,
generateToolSchema,
generateToolHandler
);
// Start the server with stdio transport
async function main() {
const transport = new StdioServerTransport();
await server.connect(transport);
}
main().catch(console.error);