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
- Install dependencies:
pip install -r requirements.txt
- Run the MCP server:
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 scanoutput_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
- Add the server to your Claude Desktop configuration:
{
"mcpServers": {
"license-scanner": {
"command": "python",
"args": ["/path/to/license_scanner.py"],
"cwd": "/path/to/project"
}
}
}
- 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 dependenciesrequirements.txt- Python dependenciesCargo.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:
- Project information: Path, total dependencies, package files found
- Dependencies by manager: Organized by package manager with license details
- License summary: Count of dependencies by license type
Sample Markdown Output
# 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
- Fork the repository
- Create a feature branch
- Add tests for new functionality
- Submit a pull request
License
This project is licensed under the MIT License.
