extract.ts•9.61 kB
import { Tool } from '@modelcontextprotocol/sdk/types.js';
export const extractTools: Tool[] = [
{
name: 'extract_components',
description: 'Extract UI components from a codebase for reuse',
inputSchema: {
type: 'object',
properties: {
url: {
type: 'string',
description: 'GitHub repository URL',
},
componentPaths: {
type: 'array',
items: { type: 'string' },
description: 'Specific component paths to extract (optional)',
},
framework: {
type: 'string',
description: 'UI framework (e.g., "react", "vue", "angular")',
},
extractionOptions: {
type: 'object',
properties: {
includeStyles: {
type: 'boolean',
description: 'Include component styles',
default: true,
},
includeTests: {
type: 'boolean',
description: 'Include component tests',
default: true,
},
includeDocs: {
type: 'boolean',
description: 'Include component documentation',
default: true,
},
minComplexity: {
type: 'number',
description: 'Minimum complexity score for extraction',
default: 3,
},
maxDependencies: {
type: 'number',
description: 'Maximum number of dependencies',
default: 5,
},
},
},
},
required: ['url', 'framework'],
},
},
{
name: 'extract_utilities',
description: 'Extract utility functions and helpers from a codebase',
inputSchema: {
type: 'object',
properties: {
url: {
type: 'string',
description: 'GitHub repository URL',
},
utilityTypes: {
type: 'array',
items: {
type: 'string',
enum: ['validation', 'formatting', 'data-processing', 'math', 'date', 'string', 'array', 'object'],
},
description: 'Types of utilities to extract',
},
extractionCriteria: {
type: 'object',
properties: {
minReusability: {
type: 'number',
description: 'Minimum reusability score (0-100)',
default: 70,
},
maxComplexity: {
type: 'number',
description: 'Maximum complexity score',
default: 10,
},
requireTests: {
type: 'boolean',
description: 'Only extract utilities with tests',
default: false,
},
requireDocumentation: {
type: 'boolean',
description: 'Only extract utilities with documentation',
default: false,
},
},
},
},
required: ['url'],
},
},
{
name: 'extract_hooks',
description: 'Extract React hooks or similar patterns from a codebase',
inputSchema: {
type: 'object',
properties: {
url: {
type: 'string',
description: 'GitHub repository URL',
},
hookTypes: {
type: 'array',
items: {
type: 'string',
enum: ['state', 'effect', 'context', 'custom', 'data-fetching', 'form'],
},
description: 'Types of hooks to extract',
},
framework: {
type: 'string',
description: 'Framework (e.g., "react", "vue-composition")',
},
extractionOptions: {
type: 'object',
properties: {
includeTypes: {
type: 'boolean',
description: 'Include TypeScript types',
default: true,
},
includeExamples: {
type: 'boolean',
description: 'Include usage examples',
default: true,
},
removeDependencies: {
type: 'boolean',
description: 'Remove external dependencies',
default: true,
},
},
},
},
required: ['url', 'framework'],
},
},
{
name: 'extract_types',
description: 'Extract TypeScript types and interfaces from a codebase',
inputSchema: {
type: 'object',
properties: {
url: {
type: 'string',
description: 'GitHub repository URL',
},
typeCategories: {
type: 'array',
items: {
type: 'string',
enum: ['api', 'domain', 'ui', 'utility', 'config', 'generic'],
},
description: 'Categories of types to extract',
},
extractionOptions: {
type: 'object',
properties: {
includeGenerics: {
type: 'boolean',
description: 'Include generic types',
default: true,
},
includeUnions: {
type: 'boolean',
description: 'Include union types',
default: true,
},
includeComments: {
type: 'boolean',
description: 'Include type comments/documentation',
default: true,
},
resolveImports: {
type: 'boolean',
description: 'Resolve imported types',
default: true,
},
},
},
},
required: ['url'],
},
},
{
name: 'extract_api_definitions',
description: 'Extract API definitions and schemas from a codebase',
inputSchema: {
type: 'object',
properties: {
url: {
type: 'string',
description: 'GitHub repository URL',
},
apiType: {
type: 'string',
enum: ['rest', 'graphql', 'rpc', 'websocket'],
description: 'Type of API',
},
extractionOptions: {
type: 'object',
properties: {
includeSchemas: {
type: 'boolean',
description: 'Include request/response schemas',
default: true,
},
includeValidation: {
type: 'boolean',
description: 'Include validation rules',
default: true,
},
includeDocumentation: {
type: 'boolean',
description: 'Include API documentation',
default: true,
},
generateOpenAPI: {
type: 'boolean',
description: 'Generate OpenAPI specification',
default: false,
},
},
},
},
required: ['url', 'apiType'],
},
},
{
name: 'extract_configuration',
description: 'Extract configuration patterns and settings from a codebase',
inputSchema: {
type: 'object',
properties: {
url: {
type: 'string',
description: 'GitHub repository URL',
},
configTypes: {
type: 'array',
items: {
type: 'string',
enum: ['env', 'build', 'runtime', 'database', 'api', 'feature-flags'],
},
description: 'Types of configuration to extract',
},
extractionOptions: {
type: 'object',
properties: {
includeDefaults: {
type: 'boolean',
description: 'Include default values',
default: true,
},
includeValidation: {
type: 'boolean',
description: 'Include configuration validation',
default: true,
},
includeDocumentation: {
type: 'boolean',
description: 'Include configuration documentation',
default: true,
},
createSchema: {
type: 'boolean',
description: 'Create configuration schema',
default: true,
},
},
},
},
required: ['url'],
},
},
{
name: 'extract_patterns',
description: 'Extract design patterns and architectural patterns from a codebase',
inputSchema: {
type: 'object',
properties: {
url: {
type: 'string',
description: 'GitHub repository URL',
},
patternTypes: {
type: 'array',
items: {
type: 'string',
enum: ['mvc', 'mvvm', 'observer', 'factory', 'singleton', 'strategy', 'decorator', 'adapter'],
},
description: 'Types of patterns to extract',
},
extractionOptions: {
type: 'object',
properties: {
includeExamples: {
type: 'boolean',
description: 'Include usage examples',
default: true,
},
includeTests: {
type: 'boolean',
description: 'Include pattern tests',
default: true,
},
includeDocumentation: {
type: 'boolean',
description: 'Include pattern documentation',
default: true,
},
createGeneric: {
type: 'boolean',
description: 'Create generic implementation',
default: true,
},
},
},
},
required: ['url'],
},
},
];