mcpField
L
licensefile

licensefile

Local
github.com/CloudCorpRecordsDeveloper Tools0Updated 1w ago

About licensefile

licensefile builds a local dependency license and attribution catalog for repository maintainers. It classifies SPDX licenses, flags conflicts, and reports whether the catalog is blocked.

Key features

  1. 01Dependency license inventory
  2. 02License counts and attribution lines
  3. 03Copyleft and unknown-license flags
  4. 04Blocked or ok verdict
  5. 05Local JSON CLI and validation

Use cases

  1. 01Reviewing dependencies before a repository release
  2. 02Finding unknown or conflicting dependency licenses
  3. 03Preparing dependency attribution records

MCP support

The MCP server exposes a `catalog_licenses` tool that accepts a repository license and dependency list, then returns the inventory, flags, attribution lines, and verdict.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"cloudcorprecords-licensefile": {
"command": "npx",
"args": [
"-y",
"@reneturcios/licensefile"
]
}
}
}
Run commandnpx -y @reneturcios/licensefile

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npm@reneturcios/licensefile0.1.0
ocighcr.io/cloudcorprecords/licensefile:0.1.0

Tools

1

Saved tool list · updated 1w ago

ParameterTypeRequiredDescription
dependenciesarrayYesDependencies to catalog (at least one)
repo_licensestringYesSPDX id of the repository's own license, e.g. MIT

Details

From the project README

licensefile

A repository can only ship what its dependencies' licenses allow. licensefile takes the repository's own license and a list of its dependencies, and turns that into a single catalog you can act on:

  • Inventory — one entry per dependency, sorted by name, with the license normalized (trimmed; a missing or empty license becomes unknown) and absent version, author, or homepage carried as null
  • Counts by license — how many dependencies carry each normalized license, sorted by count descending with ties broken by license name
  • Attribution lines — one line per dependency in name order, shaped name@version — license — author, where a missing version reads unknown and the author segment is left off entirely when no author was supplied
  • Flags — at most one per dependency, from the first matching rule: an unknown license warns; a strong-copyleft license whose family (GPL vs AGPL) differs from the repository license's family is an error; a weak-copyleft license in a permissive-licensed repository draws a notice; and a license belonging to none of the known classes, when it is not the repository's own license, is reported as unclassified
  • Verdict — blocked when any flag is an error, otherwise ok

License classes are the exact, case-sensitive SPDX ids in the spec: a permissive set (MIT, ISC, the BSD clauses, Apache-2.0, and friends), a strong-copyleft set (the GPL and AGPL variants), and a weak-copyleft set (the LGPL variants, MPL-2.0, EPL, EUPL-1.2). Everything is computed locally from the inputs: no network, no configuration, and no license database is consulted. Invalid input — a missing repository license, an empty dependency list, a dependency without a name, a duplicate name, or a wrongly typed field — is rejected with an error naming the offending path, and no partial catalog is produced.

CLI

npx @reneturcios/licensefile catalog --input args.json
npx @reneturcios/licensefile --version

args.json contains the full arguments object:

{
  "repo_license": "MIT",
  "dependencies": [
    { "name": "alpha", "version": "1.0.0", "license": "MIT", "author": "Ann Example" },
    { "name": "beta", "version": "0.2", "license": "LGPL-2.1-only" },
    { "name": "gamma", "license": "GPL-3.0-only" }
  ]
}

version, license, author, and homepage are optional per dependency. The catalog is printed as JSON.

Exit codes: 0 on success, 1 on a runtime error (including an unreadable or invalid input file, or invalid input), 2 on a usage error.

MCP server

npx -y @reneturcios/licensefile mcp

MCP client config:

{
  "mcpServers": {
    "licensefile": {
      "command": "npx",
      "args": ["-y", "@reneturcios/licensefile", "mcp"]
    }
  }
}
Tools
  • catalog_licenses — Build a dependency license and attribution inventory for a repository.

    • repo_license (string, required) — SPDX id of the repository's own license, e.g. MIT
    • dependencies (array, required, at least one) — dependencies as {name, version?, license?, author?, homepage?} objects; name is required and must be unique

    Returns {repo_license, dependency_count, inventory, by_license, flags, attribution_lines, verdict}.

Docker

docker run -i ghcr.io/cloudcorprecords/licensefile
docker run --rm -v "$PWD:/w" ghcr.io/cloudcorprecords/licensefile catalog --input /w/args.json

Development

npm install
npm run build   # tsc -> dist/
npm test        # tsx --test test/*.test.ts (pure local, no network)
npm run dev     # run the CLI from source

License

MIT — Copyright (c) 2026 Rene Turcios

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.