license-compliance-mcp
# license-compliance-mcp
MCP server that scans npm project dependencies for license compliance issues. Catch GPL contamination before code ships.
## Tools
### `check-licenses`
Scan a project's npm dependencies against a license policy and get a detailed compliance report.
**Parameters:**
- `path` (required) — Absolute path to the project root
- `policy` (optional, default: `"permissive"`) — Policy preset or custom SPDX expression
- `"permissive"` — Only MIT, ISC, BSD, Apache-2.0, etc.
- `"weak-copyleft"` — Adds LGPL, MPL-2.0, EPL-2.0
- `"copyleft"` — Adds GPL, AGPL
- Custom: `"(MIT OR Apache-2.0)"` — Any valid SPDX expression
### `explain-license`
Get a plain-language explanation of any SPDX license — permissions, conditions, limitations, compatibility, and gotchas.
**Parameters:**
- `license` (required) — SPDX identifier (e.g., `"MIT"`, `"GPL-3.0-only"`, `"Apache-2.0"`)
## Install
### Claude Code
```bash
claude mcp add license-compliance -- npx -y license-compliance-mcp
```
### Claude Desktop / Cursor
Add to your config (`claude_desktop_config.json` or `.cursor/mcp.json`):
```json
{
"mcpServers": {
"license-compliance": {
"command": "npx",
"args": ["-y", "license-compliance-mcp"]
}
}
}
```
## How It Works
1. Scans `node_modules` using `license-checker-rseidelsohn`
2. Normalizes license strings to valid SPDX using `spdx-correct`
3. Evaluates each package against the policy using `spdx-satisfies`
4. Traces dependency chains to show how problematic packages entered the project
5. Generates a markdown report grouped by severity (critical > warning > info)
## Requirements
- Node.js >= 18
- Project must have `node_modules` installed (`npm install`)
TDQS
Scored across 2 tools
The two tools are completely distinct: one scans npm dependencies for compliance, the other explains SPDX licenses. There is no overlap or ambiguity between them.
Both tools follow a verb_noun pattern with hyphenation, but 'check-licenses' uses plural while 'explain-license' uses singular. This minor inconsistency is slightly noticeable but does not hinder readability.
With only 2 tools, the server feels thin for its apparent scope. The tools are focused and useful, but the count is on the borderline of what is considered reasonable for a utility server.
The server covers scanning and explaining, but lacks tools for managing the compliance policy (e.g., setting or updating policy). This is a notable operational gap for a license compliance workflow.