knip-mcp-server
Version:
MCP server for knip.dev integration to help AI agents identify and clean up unused code
89 lines • 3.12 kB
JavaScript
import { z } from 'zod';
// MCP tool input/output schemas
export const KnipScanInputSchema = z.object({
projectPath: z.string().optional(),
configPath: z.string().optional(),
includePaths: z.array(z.string()).optional(),
excludePaths: z.array(z.string()).optional(),
dryRun: z.boolean().default(true),
workspace: z.string().optional(),
});
export const KnipScanOutputSchema = z.object({
success: z.boolean(),
result: z.object({
unusedFiles: z.array(z.string()),
unusedExports: z.record(z.array(z.string())),
unusedImports: z.record(z.array(z.string())),
unusedDependencies: z.array(z.string()),
unusedDevDependencies: z.array(z.string()),
issues: z.array(z.object({
type: z.enum(['file', 'export', 'import', 'dependency', 'devDependency']),
filePath: z.string(),
name: z.string().optional(),
line: z.number().optional(),
column: z.number().optional(),
severity: z.enum(['error', 'warning', 'info']),
message: z.string(),
})),
}).optional(),
error: z.string().optional(),
});
export const KnipRemoveUnusedFilesInputSchema = z.object({
files: z.array(z.string()),
dryRun: z.boolean().default(true),
createBackup: z.boolean().default(true),
backupDir: z.string().optional(),
});
export const KnipRemoveUnusedImportsInputSchema = z.object({
filePath: z.string(),
imports: z.array(z.string()).optional(),
dryRun: z.boolean().default(true),
createBackup: z.boolean().default(true),
});
export const KnipFixIssuesInputSchema = z.object({
projectPath: z.string().optional(),
issueTypes: z.array(z.enum(['files', 'imports', 'exports', 'dependencies'])).optional(),
dryRun: z.boolean().default(true),
createBackup: z.boolean().default(true),
interactive: z.boolean().default(false),
maxFiles: z.number().optional(),
});
export const KnipGetConfigInputSchema = z.object({
projectPath: z.string().optional(),
configPath: z.string().optional(),
});
export const KnipValidateConfigInputSchema = z.object({
projectPath: z.string().optional(),
configPath: z.string().optional(),
config: z.object({}).optional(),
});
// Error types
export class KnipMcpError extends Error {
code;
details;
constructor(message, code, details) {
super(message);
this.code = code;
this.details = details;
this.name = 'KnipMcpError';
}
}
export class KnipAnalysisError extends KnipMcpError {
constructor(message, details) {
super(message, 'KNIP_ANALYSIS_ERROR', details);
this.name = 'KnipAnalysisError';
}
}
export class KnipConfigError extends KnipMcpError {
constructor(message, details) {
super(message, 'KNIP_CONFIG_ERROR', details);
this.name = 'KnipConfigError';
}
}
export class KnipFileSystemError extends KnipMcpError {
constructor(message, details) {
super(message, 'KNIP_FILESYSTEM_ERROR', details);
this.name = 'KnipFileSystemError';
}
}
//# sourceMappingURL=index.js.map