Skip to main content
Glama
shacharsol

npmplus-mcp

by shacharsol
README.md
# NPM Plus - JavaScript Package Manager for AI

[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Version](https://img.shields.io/badge/Version-v12.0.16-brightgreen.svg)](https://github.com/shacharsol/js-package-manager-mcp/releases)
[![Deploy to Netlify](https://www.netlify.com/img/deploy/button.svg)](https://app.netlify.com/start/deploy?repository=https://github.com/shacharsol/js-package-manager-mcp)
[![Status](https://img.shields.io/badge/Status-Production%20Ready-success.svg)](https://api.npmplus.dev/mcp)

> ๐Ÿš€ **Production-ready MCP server for intelligent JavaScript package management**  
> Works seamlessly with Claude, Windsurf, Cursor, VS Code, and any MCP-compatible AI editor.

## ๐ŸŽ‰ **Latest Updates (v12.0.16)**

โœ… **ALL TOOLS NOW FULLY OPERATIONAL**
- **Enhanced Install Tools**: Robust package installation with intelligent retry logic
- **Fixed Directory Resolution**: No more "Invalid project directory: /" errors
- **Enhanced Vulnerability Checking**: Now works reliably with graceful error handling  
- **Improved Package Installation**: Better npm idealTree error handling with automatic retries
- **Debug Tools**: New debug_version tool for troubleshooting
- **100% Compatibility**: All operations now work with both relative (`.`) and absolute paths

๐Ÿ“Š **Current Status**: **16/16 tools fully functional** with comprehensive error handling

## ๐Ÿ› ๏ธ **Available Tools** (16/16 Fully Functional)

| Tool | Status | Description | Works with `.` |
|------|--------|-------------|----------------|
| **search_packages** | โœ… | Search npm registry with intelligent scoring | N/A |
| **package_info** | โœ… | Get detailed package metadata and info | N/A |
| **check_bundle_size** | โœ… | Analyze bundle size before installation | N/A |
| **download_stats** | โœ… | View download statistics and trends | N/A |
| **check_license** | โœ… | Check package license information | N/A |
| **dependency_tree** | โœ… | Visualize dependency relationships | โœ… |
| **list_licenses** | โœ… | List all project licenses | โœ… |
| **audit_dependencies** | โœ… | Security vulnerability scanning | โœ… |
| **analyze_dependencies** | โœ… | Detect circular deps & issues | โœ… |
| **check_outdated** | โœ… | Find outdated packages | โœ… |
| **clean_cache** | โœ… | Clean package manager cache | โœ… |
| **check_vulnerability** | โœ… | Check specific package vulnerabilities | N/A |
| **install_packages** | โœ… | Install packages with intelligent retry logic | โœ… |
| **update_packages** | โœ… | Update packages to latest versions | โœ… |
| **remove_packages** | โœ… | Remove packages from project | โœ… |
| **debug_version** | โœ… | Debug server version and status | N/A |

### ๐ŸŽฏ **Key Improvements in v12.0.16**

โœ… **All 16 Tools Fully Operational**: Complete functionality across all package management operations  
โœ… **Robust Installation**: Intelligent retry logic with automatic recovery from npm errors  
โœ… **Fixed Directory Resolution**: All tools now properly handle relative paths (`.`)  
โœ… **Enhanced Error Handling**: Clear, actionable error messages with recovery suggestions  
โœ… **Automatic Retries**: Intelligent retry logic for npm idealTree and other transient errors  
โœ… **Graceful Degradation**: Tools continue to work even when external APIs are unavailable  

## โœจ Features

### ๐Ÿ” **Smart Package Discovery**
- Search npm registry with intelligent relevance scoring
- View detailed package metadata, keywords, and maintainers
- Pagination support for comprehensive results

### ๐Ÿ“ฆ **Intelligent Package Management**
- Install, update, and remove packages across NPM, Yarn, and pnpm
- Support for dev dependencies, global packages, and version constraints
- Automatic package manager detection with retry logic

### ๐Ÿ”’ **Security & Compliance**
- Real-time vulnerability scanning with fallback mechanisms
- Automated security fix suggestions and implementation
- License compliance tracking and analysis

### ๐Ÿ“Š **Advanced Analytics**
- Bundle size analysis before installation
- Dependency tree visualization with circular dependency detection
- Download statistics and popularity metrics
- Orphaned file detection

## ๐Ÿš€ Quick Start

### Using Hosted Service (Recommended)

**The easiest way to get started:**

```json
{
  "mcpServers": {
    "npmplus-mcp": {
      "transport": "http",
      "url": "https://api.npmplus.dev/mcp"
    }
  }
}
```

### Self-Hosting (Advanced)

**For customization or private deployment:**

```bash
git clone https://github.com/shacharsol/js-package-manager-mcp.git
cd js-package-manager-mcp
npm install
npm run build
npm start
```

**For web deployment (Netlify, Vercel, etc.):**

```bash
# Run the automated setup script
./deployment/setup-deployment.sh

# Customize the deployment URLs
nano scripts/test-deployment.sh

# Deploy to your own infrastructure
npm run deploy:netlify
```

> **๐Ÿ”’ Security Note**: The production service at `api.npmplus.dev` has automatic deployments disabled. Only the maintainer can deploy to production using `npm run deploy:production`.

See [deployment/README.md](deployment/README.md) for detailed deployment instructions.

## ๐Ÿ› ๏ธ Editor Setup

<details>
<summary><strong>๐Ÿค– Claude Desktop</strong></summary>

**Configuration File Location:**
- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`

**Add this configuration:**
```json
{
  "mcpServers": {
    "npmplus-mcp": {
      "transport": "http",
      "url": "https://api.npmplus.dev/mcp"
    }
  }
}
```

**How to use:**
- Just ask naturally: *"Search for React testing libraries"*
- Claude automatically detects and uses MCP tools
- Look for tool use blocks in responses

**Test:** *"What's the current version of React?"*
</details>

<details>
<summary><strong>๐ŸŒŠ Windsurf</strong></summary>

**For hosted version, create `mcp_config.json` in your project root:**
```json
{
  "mcpServers": {
    "npmplus-mcp": {
      "serverUrl": "https://api.npmplus.dev/mcp"
    }
  }
}
```

**For npx installation (Recommended for local):**
```json
{
  "mcp": {
    "servers": {
      "npmplus-mcp": {
        "command": "npx",
        "args": [
          "-y",
          "npmplus-mcp-server"
        ],
        "disabled": false
      }
    }
  }
}
```

**For local development:**
```json
{
  "mcp": {
    "servers": {
      "npmplus-mcp": {
        "command": "node",
        "args": [
          "./dist/index.js"
        ],
        "cwd": "./",
        "disabled": false
      }
    }
  }
}
```

**How to use:**
- Natural language: *"Install express and cors packages"*
- Cascade mode: *"Update all packages and fix breaking changes"*
- Look for "๐Ÿ”ง Using npmplus-mcp" in activity bar

**Test:** *"Show me popular authentication libraries"*

See [Windsurf Usage Guide](docs/CURSOR_WINDSURF_USAGE.md#-windsurf-usage)
</details>

<details>
<summary><strong>๐ŸŽฏ Cursor</strong></summary>

**NPX Installation (Recommended for Cursor)**
Add to your Cursor MCP configuration:
```json
{
  "mcpServers": {
    "npmplus-mcp": {
      "command": "npx",
      "args": ["-y", "npmplus-mcp-server"]
    }
  }
}
```

**โš ๏ธ Cursor-Specific Notes:**
- **Use NPX installation only** - HTTP transport not supported reliably
- **Requires explicit prompts** in non-agent mode: "Use npmplus-mcp to..."
- **Agent mode** increases auto-detection of MCP usage
- **HTTP transport**: Currently experimental and may cause "Loading tools" issues

**Method 3: .cursorrules File**
```
# NPM Plus MCP Integration
This project uses NPM Plus (https://api.npmplus.dev/mcp) for AI-powered package management.

Available features:
- Package search and installation
- Security vulnerability scanning  
- Bundle size analysis
- Dependency management
```

**How to use:**
- Chat: *"Search for testing frameworks"*
- Composer (Cmd+K): *"Find React animation libraries"*
- Explicit: *"Use npmplus-mcp to check bundle sizes"*
- Look for tool usage in sidebar

**Test:** *"What's the bundle size of lodash?"*

See [Cursor Usage Guide](docs/CURSOR_WINDSURF_USAGE.md#-cursor-usage)
</details>

<details>
<summary><strong>๐Ÿ“ VS Code + ๐Ÿงฌ Cline</strong></summary>

**Prerequisites:**
- VS Code (version 1.102 or later for full MCP support)
- Node.js installed
- Cline extension by saoudrizwan

**Setup Steps:**

1. **Install Cline Extension**
   - Open VS Code Extensions (Ctrl+Shift+X)
   - Search for "Cline" by saoudrizwan
   - Install and reload VS Code

2. **Configure AI Model**
   - Click Cline icon in Activity Bar
   - Sign in at app.cline.bot
   - Configure your AI model (Anthropic, OpenAI, etc.)

3. **Add NPM Plus MCP Server**

**Method 1: Automatic Setup (Recommended)**
```
In Cline chat: "add a tool for JavaScript package management using npmplus-mcp-server"
```
Cline will automatically configure the MCP server for you.

**Method 2: Manual Cline Configuration**
Click "MCP Servers" โ†’ "Configure MCP Servers" โ†’ Add to `cline_mcp_settings.json`:
```json
{
  "mcpServers": {
    "npmplus-mcp": {
      "command": "npx",
      "args": ["-y", "npmplus-mcp-server"]
    }
  }
}
```

**Method 3: VS Code Native MCP**
Create `.vscode/mcp.json` or use Command Palette: "MCP: Add Server":
```json
{
  "mcpServers": {
    "npmplus-mcp": {
      "command": "npx",
      "args": ["-y", "npmplus-mcp-server"]
    }
  }
}
```

**Usage:**
- Tools appear automatically in Cline's agent mode
- Use explicit prompts: "Use npmplus-mcp to search for react packages"
- Example: "Use the package manager tool to find Express middleware"

**Troubleshooting:**
- Check server status in Cline's "Installed" servers tab
- Use restart button next to MCP server if needed
- Click "Show Output" to view server logs
- Adjust timeout settings (30 seconds to 1 hour) if connection issues occur

**Security Notes:**
- MCP servers run with your local permissions
- Only install servers from trusted sources
- Review configuration before enabling servers
</details>

## ๐Ÿ”ง Available Tools

| Tool | Description | Use Case |
|------|-------------|----------|
| `search_packages` | Search npm registry with advanced filtering | Find packages by functionality |
| `package_info` | Get comprehensive package metadata | Research before installation |
| `install_packages` | Install with dev/global options | Add dependencies |
| `update_packages` | Update to latest versions | Maintenance |
| `remove_packages` | Clean removal of packages | Cleanup |
| `audit_dependencies` | Security vulnerability scanning | Security |
| `check_bundle_size` | Analyze package size impact | Performance |
| `dependency_tree` | Visualize dependency relationships | Architecture |
| `list_licenses` | License compliance analysis | Legal |
| `analyze_dependencies` | Detect circular deps and orphans | Code quality |

## ๐Ÿ’ก Usage Examples

**Security-focused:**
```
"Check if lodash has any security vulnerabilities"
"Audit all dependencies and suggest fixes"
"Find packages with MIT licenses only"
```

**Performance-focused:**
```  
"What's the bundle size impact of adding moment.js?"
"Show me lightweight alternatives to lodash"
"Find circular dependencies in my project"
```

**Development workflow:**
```
"Install typescript as a dev dependency"
"Update all outdated packages"
"Search for React form validation libraries"
```

## ๐Ÿ—๏ธ Self-Hosting (Advanced)

For enterprise or custom deployments:

```bash
git clone https://github.com/shacharsol/js-package-manager-mcp.git
cd js-package-manager-mcp
npm install
npm run build
npm start
```

**Via npx (Recommended):**
```json
{
  "mcpServers": {
    "npmplus-mcp": {
      "command": "npx",
      "args": ["-y", "npmplus-mcp-server"]
    }
  }
}
```

**Local development:**
```json
{
  "mcpServers": {
    "npmplus-mcp": {
      "command": "node",
      "args": ["./dist/index.js"],
      "cwd": "/path/to/js-package-manager-mcp"
    }
  }
}
```

## ๐Ÿงช Testing & Validation

```bash
# Test deployment health
npm run test:deployment

# Run unit tests  
npm test

# Development mode
npm run dev
```

## ๐Ÿš€ Version Management & Publishing

```bash
# Bump version only (patch/minor/major)
npm run bump

# Full production deployment (maintainer only)
# - Interactive version bumping
# - Automated npm publishing  
# - Git tagging and pushing
# - Netlify deployment
# - Endpoint testing
npm run deploy:production
```

**Production deployment includes:**
- โœ… Prerequisites check (npm login, netlify login, clean git)
- ๐Ÿ“ฆ Interactive version bumping (patch/minor/major)
- ๐Ÿงช Automated testing
- ๐Ÿ“ค NPM package publishing
- ๐Ÿท๏ธ Git tagging and pushing
- ๐ŸŒ Netlify deployment
- ๐Ÿ” Endpoint health checks

## ๐Ÿ—๏ธ Architecture

**Built with modern tools:**
- **TypeScript** - Type safety and developer experience
- **MCP SDK** - Official Model Context Protocol implementation
- **Zod** - Runtime type validation and parsing
- **Execa** - Secure subprocess execution
- **Pacote** - Official npm registry client
- **Node-cache** - Intelligent response caching

**Performance optimizations:**
- โšก Intelligent caching with configurable TTLs
- ๐ŸŽฏ Rate limiting to prevent API throttling  
- ๐Ÿ“ฆ Parallel operations for batch processing
- ๐Ÿชถ Optimized responses for AI context windows

## ๐Ÿ” Security

- โœ… Isolated subprocess execution
- โœ… Input validation prevents injection attacks
- โœ… Official vulnerability databases only
- โœ… No credential storage or sensitive data handling
- โœ… CORS-enabled for secure web integration

## ๐Ÿค Contributing

We welcome contributions! Please see our [Contributing Guidelines](CONTRIBUTING.md).

1. **Fork** the repository
2. **Create** a feature branch (`git checkout -b feature/amazing-feature`)
3. **Add** tests for new functionality
4. **Commit** changes (`git commit -m 'Add amazing feature'`)
5. **Push** to branch (`git push origin feature/amazing-feature`)
6. **Open** a Pull Request

## ๐Ÿ“Š Analytics & Monitoring

NPM Plus includes optional analytics for self-hosted deployments:

### Analytics Features:
- ๐Ÿ“Š **Basic tracking** - Console logging for debugging and monitoring
- ๐Ÿ”ง **Tool usage** - Track which MCP tools are being used
- ๐Ÿš€ **Performance metrics** - Response times and success rates
- ๐Ÿ”’ **Privacy-first** - Minimal data collection, IP hashing
- โš™๏ธ **Configurable** - Enable via environment variables

### Enable Analytics (Optional)
For self-hosted deployments, you can enable analytics logging:

```bash
# Enable analytics logging
ENABLE_ANALYTICS=true
ANALYTICS_SALT=your-random-salt
```

Analytics data will be logged to console output for monitoring and debugging.

## ๐Ÿ”ง **Troubleshooting & Known Issues**

### โœ… **All Issues Resolved** (v12.0.16)

All major issues have been resolved in the latest version:

| Issue | Status | Solution |
|-------|--------|----------|
| Directory resolution errors | โœ… **FIXED** | Proper handling of relative paths (`.`) |
| Vulnerability check failures | โœ… **FIXED** | Enhanced error handling with fallbacks |
| npm idealTree errors | โœ… **FIXED** | Automatic retry logic with cleanup |
| Package installation failures | โœ… **FIXED** | Robust retry mechanism with recovery |
| All tools operational | โœ… **COMPLETE** | 16/16 tools fully functional |

### ๐Ÿ› ๏ธ **Common Solutions**

**1. npm idealTree Error**
```bash
# If you see: "Tracker 'idealTree' already exists"
# Solution 1: Use the clean cache tool
"Clean the npm cache first"

# Solution 2: Manual cleanup (if needed)
npm cache clean --force

# Solution 3: Restart Claude Desktop to reset MCP connection
```

**2. Directory Resolution Issues**  
```bash
# Problem: "Invalid project directory: /"  
# โœ… SOLVED - all tools now work with relative paths
"Install lodash in the current directory"  # Works correctly now
```

**3. Vulnerability Check Not Working**
```bash
# โœ… SOLVED - now provides graceful fallback
"Check vulnerabilities for express@4.17.0"  # Works with helpful information
```

### ๐Ÿ” **Debug Tools**

Use the debug tool to check server status:
```
"Run debug_version tool"
```

This will show:
- Current version running
- Server uptime and status  
- Working directory
- Environment details

### ๐Ÿ“‹ **Testing Commands**

Verify everything is working:
```bash
# Quick production test
npm run test:production

# Comprehensive feature test  
npm run test:comprehensive

# Test specific issues that were fixed
npm run test:issues
```

### ๐Ÿ†˜ **Getting Help**

If you encounter issues:

1. **Check Version**: Use `debug_version` tool to confirm you're running v12.0.16+
2. **Restart**: Restart Claude Desktop to pick up latest version
3. **Clear Cache**: Try `clean_cache` tool first
4. **Check Logs**: Look for `[npmplus-mcp]` messages in console
5. **Report**: Open issue at [GitHub Issues](https://github.com/shacharsol/js-package-manager-mcp/issues)

**Include in bug reports:**
- Version from `debug_version` output
- Exact error message
- Steps to reproduce
- Operating system

### ๐Ÿ”„ **Version Update Process**

To ensure you're running the latest version:

**For Hosted Service Users:**
- Updates are automatic
- Restart Claude Desktop to refresh connection

**For Self-Hosted Users:**
```bash
# Update to latest version
npm update npmplus-mcp-server

# Or reinstall
npm uninstall -g npmplus-mcp-server
npm install -g npmplus-mcp-server@latest
```

## ๐Ÿ“„ License

MIT License - see [LICENSE](LICENSE) for details.

## ๐Ÿ™‹โ€โ™‚๏ธ About

Created with โค๏ธ by [Shachar Solomon](https://github.com/shacharsol) in 2025.

**Star this repo** if NPM Plus helps your AI development workflow!

---

**Built with โค๏ธ for the open source community**

Maintenance

ActivityInactive
ResponsivenessUnresponsive