Skip to main content
Glama

License Scanner MCP Server

by RyanCadby
README.md4.17 kB
# License Scanner MCP Server A Model Context Protocol (MCP) server built with FastMCP that scans project dependencies and generates license reports in markdown format. ## Features - **Multi-package manager support**: npm, pip, cargo, and more - **Automatic license detection**: Fetches license information from package registries - **Markdown report generation**: Creates comprehensive license reports - **Caching**: Avoids repeated API calls for better performance - **Error handling**: Robust error handling and informative error messages ## Supported Package Managers - **npm/yarn/pnpm**: `package.json`, `yarn.lock`, `pnpm-lock.yaml` - **Python**: `requirements.txt`, `pyproject.toml`, `Pipfile` - **Rust**: `Cargo.toml`, `Cargo.lock` - **PHP**: `composer.json`, `composer.lock` - **Ruby**: `Gemfile`, `Gemfile.lock` - **Go**: `go.mod`, `go.sum` - **Java**: `pom.xml`, `build.gradle` ## Installation 1. Install dependencies: ```bash pip install -r requirements.txt ``` 2. Run the MCP server: ```bash python license_scanner.py ``` ## Available Tools ### 1. `scan_dependencies(project_path: str)` Scans a project for dependencies and returns detailed license information. **Parameters:** - `project_path`: Path to the project directory to scan **Returns:** JSON string containing dependency and license information ### 2. `generate_license_report(project_path: str, output_file: str = None)` Generates a markdown license report for a project. **Parameters:** - `project_path`: Path to the project directory to scan - `output_file`: Optional path to save the markdown report **Returns:** Markdown content of the license report ### 3. `list_package_managers(project_path: str)` Lists all package manager files found in a project. **Parameters:** - `project_path`: Path to the project directory to scan **Returns:** JSON string containing list of package manager files ## Example Usage ### Using the MCP server with Claude Desktop 1. Add the server to your Claude Desktop configuration: ```json { "mcpServers": { "license-scanner": { "command": "python", "args": ["/path/to/license_scanner.py"], "cwd": "/path/to/project" } } } ``` 2. Use the tools in Claude Desktop: - "Scan the dependencies in my project" - "Generate a license report for this project" - "List the package managers used in this project" ### Example Project The `example_project/` directory contains sample files for different package managers: - `package.json` - npm dependencies - `requirements.txt` - Python dependencies - `Cargo.toml` - Rust dependencies ## License Information Sources - **npm packages**: npm registry API - **Python packages**: PyPI JSON API - **Rust crates**: crates.io API ## Output Format The license report includes: 1. **Project information**: Path, total dependencies, package files found 2. **Dependencies by manager**: Organized by package manager with license details 3. **License summary**: Count of dependencies by license type ### Sample Markdown Output ```markdown # License Report **Project:** /path/to/project **Total Dependencies:** 8 **Package Files Found:** package.json, requirements.txt ## NPM Dependencies Found 5 dependencies | Package | Version | License | Author | Homepage | |---------|---------|---------|--------|----------| | express | ^4.18.2 | MIT | TJ Holowaychuk | https://expressjs.com/ | | lodash | ^4.17.21 | MIT | John-David Dalton | https://lodash.com/ | ## License Summary | License | Count | |---------|-------| | MIT | 6 | | Apache-2.0 | 2 | ``` ## Error Handling The server includes comprehensive error handling: - Invalid project paths - Missing package files - Network errors when fetching license information - Malformed package files ## Performance - **Caching**: License information is cached to avoid repeated API calls - **Parallel processing**: Multiple package files are processed efficiently - **Timeout handling**: API requests have timeout protection ## Contributing 1. Fork the repository 2. Create a feature branch 3. Add tests for new functionality 4. Submit a pull request ## License This project is licensed under the MIT License.

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/RyanCadby/mcp-license-scanner'

If you have feedback or need assistance with the MCP directory API, please join our Discord server