UNPKG

knip-mcp-server

Version:

MCP server for knip.dev integration to help AI agents identify and clean up unused code

342 lines (246 loc) 9.62 kB
# @genar/knip-mcp-server A Model Control Protocol (MCP) server that integrates with [knip.dev](https://knip.dev) to help AI agents identify and clean up unused files, imports, exports, and dependencies in JavaScript/TypeScript projects. ## Overview This MCP server provides AI agents with powerful code cleanup capabilities through knip.dev integration. It's designed to work seamlessly with Cursor AI and other MCP-compatible tools to maintain clean, efficient codebases. ## Features - **Code Analysis**: Run comprehensive knip analysis to find unused code - **Unused File Detection**: Identify files that are no longer referenced - **Import/Export Cleanup**: Find and remove unused imports and exports - **Dependency Management**: Detect unused npm dependencies and devDependencies - **Safe Operations**: Built-in safety checks and backup mechanisms - **Workspace Support**: Full support for monorepo and workspace setups - **Dry Run Mode**: Preview changes before applying them ## Installation ```bash npm install -g @genar/knip-mcp-server ``` Or in your project: ```bash npm install @genar/knip-mcp-server ``` ## Usage ### As an MCP Server Run the server directly: ```bash knip-mcp-server ``` Or use npx: ```bash npx @genar/knip-mcp-server ``` ### Configuration Configure via environment variables: ```bash export KNIP_PROJECT_ROOT="/path/to/your/project" export KNIP_CONFIG_PATH="/path/to/knip.json" export KNIP_BACKUP_DIR="/path/to/backups" export KNIP_LOG_LEVEL="info" export KNIP_SAFE_MODE="true" ``` ### Integration with Cursor AI #### Option 1: MCP Server Configuration 1. In Cursor AI settings, navigate to MCP configuration 2. Add a new MCP server: - Name: "Knip Code Cleanup" - Command: `npx @genar/knip-mcp-server` 3. Save and restart Cursor AI #### Option 2: Cursor Rules Configuration You can also integrate this MCP server through Cursor's rules system by creating a `.cursor/rules` directory in your project root and adding the following configuration: 1. Create the rules directory structure: ```bash mkdir -p .cursor/rules ``` 2. Create a knip rule file (`.cursor/rules/knip-mcp.md`): ```markdown # Knip Code Cleanup Rules You have access to the Knip MCP server for code cleanup tasks. Use these tools proactively to maintain clean code: ## Available Tools - `knip_scan` - Run comprehensive code analysis - `knip_get_unused_files` - Find unused files - `knip_get_unused_exports` - Find unused exports - `knip_get_unused_imports` - Find unused imports - `knip_get_unused_dependencies` - Find unused dependencies - `knip_remove_unused_files` - Safely remove unused files - `knip_remove_unused_imports` - Clean up unused imports - `knip_fix_issues` - Auto-fix common issues - `knip_get_config` - View knip configuration - `knip_validate_config` - Validate knip config ## Usage Guidelines 1. **After implementing features**: Always run `knip_scan` to identify cleanup opportunities 2. **Before commits**: Use `knip_fix_issues` with `dryRun: true` to preview cleanup 3. **Regular maintenance**: Run `knip_get_unused_dependencies` to audit packages 4. **Safety first**: Always use dry-run mode first, create backups for destructive operations ## Workflow Integration When asked to implement features: 1. Complete the implementation 2. Run `knip_scan` to analyze unused code 3. Use `knip_remove_unused_imports` to clean imports 4. Check `knip_get_unused_files` for orphaned files 5. Apply fixes with appropriate safety measures ## Safety Measures - All destructive operations default to dry-run mode - Backups are created automatically before modifications - File limits prevent accidental bulk deletions - Safe mode protects critical files (package.json, etc.) Remember: Always review suggestions before applying changes to ensure they don't break functionality. ``` 3. Create a main rules file (`.cursor/rules/main.md`) that includes knip rules: ```markdown # Project Development Rules Include code cleanup and maintenance guidelines. @knip-mcp.md ## Code Quality Standards - Use the Knip MCP server for regular code cleanup - Maintain clean imports and remove unused dependencies - Follow the knip workflow after feature implementation ``` 4. Optional: Add to your `.gitignore` if you want to keep rules private: ```bash echo ".cursor/" >> .gitignore ``` #### Option 3: Per-Project MCP Configuration Create a local MCP configuration file in your project root (`.mcp-config.json`): ```json { "servers": { "knip": { "command": "npx", "args": ["@genar/knip-mcp-server"], "env": { "KNIP_PROJECT_ROOT": ".", "KNIP_LOG_LEVEL": "info", "KNIP_SAFE_MODE": "true" } } } } ``` Then reference this configuration in Cursor's MCP settings. ## Available Tools ### `knip_scan` Run comprehensive knip analysis on your project. **Parameters:** - `projectPath` (optional): Project path to analyze - `workspace` (optional): Specific workspace for monorepos - `includePaths` (optional): Array of paths to include - `excludePaths` (optional): Array of paths to exclude - `dryRun` (default: true): Run without making changes ### `knip_get_unused_files` Get a list of unused files in the project. **Parameters:** - `workspace` (optional): Specific workspace to analyze ### `knip_get_unused_exports` Get unused exports organized by file. **Parameters:** - `workspace` (optional): Specific workspace to analyze - `filePath` (optional): Get exports for specific file only ### `knip_get_unused_imports` Get unused imports organized by file. **Parameters:** - `workspace` (optional): Specific workspace to analyze - `filePath` (optional): Get imports for specific file only ### `knip_get_unused_dependencies` Get unused npm dependencies and devDependencies. **Parameters:** - `workspace` (optional): Specific workspace to analyze - `type` (optional): 'dependencies', 'devDependencies', or 'all' ### `knip_remove_unused_files` Safely remove unused files with backup options. **Parameters:** - `files` (optional): Specific files to remove, or all if empty - `dryRun` (default: true): Preview mode - `createBackup` (default: true): Create backups before removal - `backupDir` (optional): Custom backup directory - `maxFiles` (default: 50): Safety limit ### `knip_remove_unused_imports` Remove unused imports from a specific file. **Parameters:** - `filePath` (required): File to clean up - `imports` (optional): Specific imports to remove - `dryRun` (default: true): Preview mode - `createBackup` (default: true): Create backup before changes ### `knip_fix_issues` Automatically fix common knip issues. **Parameters:** - `issueTypes` (default: ['imports']): Types of issues to fix - `dryRun` (default: true): Preview mode - `createBackup` (default: true): Create backups - `maxFiles` (default: 25): Safety limit ### `knip_get_config` Get the current knip configuration. **Parameters:** - `projectPath` (optional): Project path - `configPath` (optional): Specific config file path ### `knip_validate_config` Validate knip configuration for correctness. **Parameters:** - `projectPath` (optional): Project path - `configPath` (optional): Specific config file path - `config` (optional): Configuration object to validate ## Example AI Agent Workflows ### 1. Code Cleanup After Feature Implementation ``` AI Agent: I just implemented a new authentication feature. Let me clean up any unused code. 1. Run knip_scan to get overview of unused code 2. Use knip_get_unused_imports to find unused imports 3. Apply knip_remove_unused_imports to clean up imports 4. Check knip_get_unused_files for any orphaned files 5. Safely remove files using knip_remove_unused_files ``` ### 2. Dependency Audit ``` AI Agent: Let me audit our dependencies for unused packages. 1. Run knip_get_unused_dependencies 2. Review the list of unused dependencies 3. Generate recommendation report for package.json cleanup ``` ### 3. Project Health Check ``` AI Agent: Let me analyze the overall health of this codebase. 1. Run knip_scan for comprehensive analysis 2. Use knip_validate_config to check configuration 3. Generate health report with recommendations ``` ## Safety Features - **Dry Run Mode**: All destructive operations default to dry-run mode - **Backup Creation**: Automatic backups before file modifications - **Safe Mode**: Prevents removal of critical files (package.json, etc.) - **File Limits**: Configurable limits on batch operations - **Error Handling**: Comprehensive error reporting and recovery ## Configuration The server supports knip configuration files: - `knip.json` - `knip.jsonc` - `.knip.json` - `.knip.jsonc` - `knip.config.js` - `knip.config.ts` ## Development ```bash # Clone the repository git clone https://github.com/genar/galleries.git cd galleries/packages/knip-mcp-server # Install dependencies npm install # Build the project npm run build # Run in development mode npm run dev # Run tests npm test ``` ## Contributing 1. Fork the repository 2. Create a feature branch 3. Make your changes 4. Add tests 5. Submit a pull request ## License MIT License - see LICENSE file for details. ## Support - GitHub Issues: [Report bugs or request features](https://github.com/genar/galleries/issues) - Documentation: [Full documentation](https://github.com/genar/galleries/tree/main/packages/knip-mcp-server) ## Related Projects - [knip.dev](https://knip.dev) - The underlying code analysis tool - [MCP SDK](https://github.com/modelcontextprotocol/typescript-sdk) - Model Context Protocol implementation - [Cursor AI](https://cursor.ai) - AI-powered code editor with MCP support