# 📚 npm-helper-mcp Usage Examples

This document provides practical examples for using the npm-helper-mcp tools to manage npm dependencies and search for packages.

## 🔍 NPM Search Examples

### Basic Package Search

To search for React-related packages:

```json
{
  "name": "search_npm",
  "arguments": {
    "query": "react",
    "maxResults": 5
  }
}
```

### Fetch Detailed Package Content

To fetch and parse detailed content from a package page:

```json
{
  "name": "fetch_package_content",
  "arguments": {
    "url": "https://www.npmjs.com/package/react-query"
  }
}
```

### Search for Specific Features

To find packages related to state management:

```json
{
  "name": "search_npm",
  "arguments": {
    "query": "state management react",
    "maxResults": 10
  }
}
```

### Get Package Version History

To see all available versions of a package:

```json
{
  "name": "get_package_versions",
  "arguments": {
    "packageName": "express"
  }
}
```

### Get Detailed Package Information

To retrieve complete metadata for a package:

```json
{
  "name": "get_package_details",
  "arguments": {
    "packageName": "lodash"
  }
}
```

## 🔄 Dependency Management Examples

### Check for Outdated Dependencies

To scan your project for outdated dependencies:

```json
{
  "name": "check_updates",
  "arguments": {
    "packagePath": "./package.json"
  }
}
```

### Check Only Specific Packages

To check if only certain packages need updates:

```json
{
  "name": "check_updates",
  "arguments": {
    "packagePath": "./package.json",
    "filter": ["react", "react-dom", "@types/react"]
  }
}
```

### Check for Updates While Respecting Semver Ranges

To check for updates but don't suggest versions already satisfied by the version range:

```json
{
  "name": "check_updates",
  "arguments": {
    "packagePath": "./package.json",
    "minimal": true
  }
}
```

### Exclude Certain Packages from Updates

To check for updates but exclude specific packages:

```json
{
  "name": "check_updates",
  "arguments": {
    "packagePath": "./package.json",
    "reject": ["typescript", "eslint"]
  }
}
```

### Check for Minor Version Updates Only

To scan for minor version updates only:

```json
{
  "name": "check_updates",
  "arguments": {
    "packagePath": "./package.json",
    "target": "minor"
  }
}
```

### Upgrade All Dependencies

To upgrade all dependencies to their latest versions:

```json
{
  "name": "upgrade_packages",
  "arguments": {
    "packagePath": "./package.json",
    "upgradeType": "latest"
  }
}
```

### Upgrade to Minor Versions Only

To upgrade dependencies but limit to minor version changes:

```json
{
  "name": "upgrade_packages",
  "arguments": {
    "packagePath": "./package.json",
    "upgradeType": "minor"
  }
}
```

### Upgrade with Peer Dependency Handling

To upgrade dependencies and automatically handle peer dependencies:

```json
{
  "name": "upgrade_packages",
  "arguments": {
    "packagePath": "./package.json",
    "upgradeType": "latest",
    "peer": true
  }
}
```

### Use a Specific Package Manager

To upgrade dependencies using a specific package manager:

```json
{
  "name": "upgrade_packages",
  "arguments": {
    "packagePath": "./package.json",
    "upgradeType": "latest",
    "packageManager": "yarn"
  }
}
```

### Filter and Upgrade Specific Packages

To upgrade only React-related packages:

```json
{
  "name": "filter_updates",
  "arguments": {
    "packagePath": "./package.json",
    "filter": ["react", "react-dom", "react-router", "@types/react"],
    "upgrade": true
  }
}
```

### Resolve Dependency Conflicts

To resolve dependency conflicts using peer dependencies:

```json
{
  "name": "resolve_conflicts",
  "arguments": {
    "packagePath": "./package.json",
    "upgrade": true
  }
}
```

### Set Version Constraints

To set a version constraint strategy for your dependencies:

```json
{
  "name": "set_version_constraints",
  "arguments": {
    "packagePath": "./package.json",
    "target": "minor",
    "upgrade": true
  }
}
```

### Remove Version Ranges

To remove version ranges from your dependencies:

```json
{
  "name": "set_version_constraints",
  "arguments": {
    "packagePath": "./package.json",
    "target": "latest",
    "removeRange": true,
    "upgrade": true
  }
}
```

### Run Doctor to Safely Upgrade Dependencies

To safely upgrade dependencies by testing each upgrade:

```json
{
  "name": "run_doctor",
  "arguments": {
    "packagePath": "./package.json"
  }
}
```

### Run Doctor with Custom Test Script

To use a custom test script when checking for breaking upgrades:

```json
{
  "name": "run_doctor",
  "arguments": {
    "packagePath": "./package.json",
    "doctorTest": "npm run test:ci",
    "doctorInstall": "npm ci"
  }
}
```

### Run Doctor with Specific Package Manager

To run the doctor tool with a specific package manager:

```json
{
  "name": "run_doctor",
  "arguments": {
    "packagePath": "./package.json",
    "packageManager": "pnpm"
  }
}
```

## 🌟 Common Workflows

### Monthly Dependency Update

A common workflow for monthly maintenance:

1. Check which packages have updates:
   ```json
   {
     "name": "check_updates",
     "arguments": {
       "packagePath": "./package.json"
     }
   }
   ```

2. Upgrade non-breaking changes:
   ```json
   {
     "name": "upgrade_packages",
     "arguments": {
       "packagePath": "./package.json",
       "upgradeType": "minor",
       "peer": true
     }
   }
   ```

3. Test your application to ensure it works with the updated dependencies.

### Safe Dependency Update with Doctor

A workflow for safely updating dependencies:

1. Check for available updates:
   ```json
   {
     "name": "check_updates",
     "arguments": {
       "packagePath": "./package.json"
     }
   }
   ```

2. Run the doctor to automatically test and apply working upgrades:
   ```json
   {
     "name": "run_doctor",
     "arguments": {
       "packagePath": "./package.json",
       "doctorTest": "npm test"
     }
   }
   ```

3. Review the results to see which upgrades worked and which ones were reverted.

### Finding and Upgrading Specific Types of Packages

1. Search for packages related to your needs:
   ```json
   {
     "name": "search_npm",
     "arguments": {
       "query": "react testing library",
       "maxResults": 10
     }
   }
   ```

2. Get details for a specific package:
   ```json
   {
     "name": "get_package_details",
     "arguments": {
       "packageName": "@testing-library/react"
     }
   }
   ```

3. Check and upgrade only testing-related packages:
   ```json
   {
     "name": "filter_updates",
     "arguments": {
       "packagePath": "./package.json",
       "filter": ["jest", "@testing-library/react", "@testing-library/user-event"],
       "upgrade": true
     }
   }
   ``` 