Labs64/NetLicensing-MCP
The Labs64/NetLicensing-MCP server provides a natural language interface for AI agents to manage software licensing, customers, and entitlements through the Labs64 NetLicensing platform.
Product Management β Create, list, update, and delete products with settings like auto-creation, VAT modes, and secret modes.
Module Management β Manage product modules with various licensing models (TryAndBuy, Subscription, Rental, Floating, MultiFeature, PayPerUse, PricingTable, Quota, NodeLocked).
License Template Management β Create and configure license templates with types (FEATURE, TIMEVOLUME, FLOATING, QUANTITY), pricing, duration, and visibility options.
Customer (Licensee) Management β Create, update, and delete customers; validate their licenses; transfer licenses between customers.
License Management β Assign, update (activate/deactivate), and delete individual licenses for customers.
Bundle Management β Create and manage bundles of license templates; obtain bundles to automatically issue multiple licenses to customers.
Token Management β Generate NetLicensing Shop URLs for customer self-service, create scoped API tokens, and revoke tokens.
Transaction Management β Create, list, update, and track transactions (CANCELLED, CLOSED, PENDING).
Payment Method Management β List, retrieve, and update payment method configurations (e.g., PayPal).
Audit & Monitoring β Built-in prompts for account audits, expiry sweeps, anomaly detection, and cleanup workflows.
Utility Functions β List supported licensing models, license types, and countries for VAT/localization.
Safe Operations β All delete operations include an optional force_cascade flag to prevent accidental cascaded data loss.
Flexible Deployment β Supports stdio mode (Claude Desktop, VS Code) and HTTP mode for remote/shared deployments, with a demo mode available using NetLicensing's sandbox (no API key required).
NetLicensing MCP Server
The official Labs64 NetLicensing MCP Server β a natural language interface that lets AI agents manage software licenses, customers, and entitlements through conversational commands.
Works with Claude Desktop, GitHub Copilot (Agent mode), VS Code, JetBrains / IntelliJ IDEA, and any other MCP-compatible client.
Why use this?
Natural Language Licensing β Ask your AI assistant to create products, issue licenses, validate entitlements, and generate shop URLs without touching the NetLicensing UI or writing API calls.
Full API coverage β Various tools spanning the entire NetLicensing REST API: products, modules, templates, licensees, licenses, bundles, tokens, transactions, and payment methods.
Built-in audit prompts β Five ready-to-run prompt templates for account audits, expiry sweeps, anomaly detection, and cleanup workflows.
Safe by default β All delete operations expose a
force_cascadeoption; nothing is silently cascaded.Zero-dependency quick start β Run with
uvxor Docker without a local Python install.
What can you ask?
Once connected, you can talk to NetLicensing in plain language:
"List all products in my NetLicensing account."
"Create a new licensee for
customer@example.comunder product PTEST.""Validate the license for licensee L001 β does it pass?"
"Generate a shop URL for licensee L001 so they can self-serve their renewal."
"Which licenses are expiring in the next 30 days?"
"Find any licensees with no active licenses β flag them for cleanup."
"Transfer all licenses from licensee L001 to L002."
"Create an API key token scoped to read-only access."
"Show me all transactions from the last month."
Features
Area | Tools |
Products | list, get, create, update, delete |
Product Modules | list, get, create, update, delete |
License Templates | list, get, create, update, delete |
Licensees | list, get, create, update, delete, validate, transfer |
Licenses | list, get, create, update (activate/deactivate), delete |
Bundles | list, get, create, update, delete, obtain |
Tokens | list, get, create shop URL, create API token, revoke |
Transactions | list, get, create, update |
Payment Methods | list, get, update |
Utilities | list licensing models, list license types |
Audit Prompts | full account, single customer, expiry sweep, cleanup, anomaly detection |
Delete Safety |
|
Quick Start
Option A β uvx (no install required)
NETLICENSING_API_KEY=your_key uvx netlicensing-mcpOption B β pip
pip install netlicensing-mcp
NETLICENSING_API_KEY=your_key netlicensing-mcpOption C β Docker
stdio (default) β for Claude Desktop / VS Code
docker run -i --rm \
-e NETLICENSING_API_KEY=your_key \
ghcr.io/labs64/netlicensing-mcp:latestHTTP mode β for remote/shared deployments
docker run -d -p 8000:8000 \
-e NETLICENSING_API_KEY=your_key \
ghcr.io/labs64/netlicensing-mcp:latest httpVerbose logging (any mode)
# CLI flag
docker run -i --rm \
-e NETLICENSING_API_KEY=your_key \
ghcr.io/labs64/netlicensing-mcp:latest -v
# Or via env var
docker run -i --rm \
-e NETLICENSING_API_KEY=your_key \
-e MCP_VERBOSE=true \
ghcr.io/labs64/netlicensing-mcp:latestNo API key? Leave
NETLICENSING_API_KEYempty to run against NetLicensing's built-in sandbox with demo credentials β no account required.
Configuration
Environment Variables
Variable | Required | Default | Description |
| No | (demo mode) | NetLicensing API key. Leave empty to use sandbox demo credentials. |
| No |
| Override the NetLicensing REST API base URL (e.g. for on-prem deployments). |
| No |
| Transport mode: |
| No |
| Host address to bind the HTTP server (HTTP mode only). |
| No |
| Port to bind the HTTP server (HTTP mode only). |
| No |
| Enable verbose debug logging ( |
Note on HTTP deployments (e.g. AWS): When running in HTTP mode over a network, you can skip setting
NETLICENSING_API_KEYon the server. The MCP server will automatically extract the key per-request if the connecting client provides it via theX-NetLicensing-API-KeyHTTP header,Authorization: Bearer <key>header, or?apikey=<key>query parameter.
Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)
or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"netlicensing": {
"command": "uvx",
"args": ["netlicensing-mcp"],
"env": {
"NETLICENSING_API_KEY": "your_key_here"
}
}
}
}Or use the official Docker image:
stdio (default) β for Claude Desktop / VS Code
{
"mcpServers": {
"netlicensing": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "NETLICENSING_API_KEY=your_key_here",
"ghcr.io/labs64/netlicensing-mcp:latest"
]
}
}
}HTTP mode β for remote/shared deployments
{
"mcpServers": {
"netlicensing": {
"command": "docker",
"args": [
"run", "-d",
"-p", "8000:8000",
"-e", "NETLICENSING_API_KEY=your_key_here",
"ghcr.io/labs64/netlicensing-mcp:latest",
"http"
]
}
}
}VS Code / GitHub Copilot
The repo ships a .vscode/mcp.json that auto-configures Copilot Agent mode.
Set NETLICENSING_API_KEY in your shell environment or a .env file, then click
Start in the editor banner that appears above mcp.json.
JetBrains / IntelliJ IDEA
In Copilot Chat β Agent mode β Tools icon β Add More Toolsβ¦ β paste the same JSON block shown in the Claude Desktop section above.
Audit Prompt Templates
Five built-in prompts accessible in Copilot Agent and Claude Desktop:
Prompt | Purpose |
| End-to-end account audit for a product |
| Deep-dive on a single licensee |
| Find licenses expiring within N days and generate renewal URLs |
| Identify inactive / orphaned licenses for cleanup |
| Detect unusual usage patterns across all customers |
Troubleshooting
Check MCP server logs
# macOS / Claude Desktop
tail -f ~/Library/Logs/Claude/mcp-server-netlicensing.log
# Windows
Get-Content "$env:APPDATA\Claude\Logs\mcp-server-netlicensing.log" -WaitRun the MCP Inspector (browser UI at http://localhost:5173)
mcp dev src/netlicensing_mcp/server.pyCommon issues
Symptom | Likely cause | Fix |
| Invalid or expired API key | Regenerate your key at ui.netlicensing.io |
Server not listed in Claude | Config file JSON syntax error | Validate with |
|
|
|
Demo data instead of live data |
| Ensure the env var is exported in the shell that starts the client |
Development
git clone https://github.com/Labs64/NetLicensing-MCP
cd NetLicensing-MCP
# Create a virtual environment
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# ... and install dependencies
pip install -e ".[dev]"
pip install hatch hatch-vcs
# Add your API key to a .env file (or export it in your shell)
cp .env.example .env
# Run the MCP Inspector
mcp dev src/netlicensing_mcp/server.py
# Run tests
pytest tests/ -v
# Clean previous builds
rm -rf dist/
# Build a wheel for local testing
hatch build --target wheel
# Build the Docker image locally
docker build -t ghcr.io/labs64/netlicensing-mcp:latest .HTTP mode (for remote / shared deployments)
python -m netlicensing_mcp.server http
# Server listens on MCP_HOST:MCP_PORT (default: 127.0.0.1:8000)Use ngrok or a reverse proxy to expose the HTTP endpoint to remote MCP clients:
ngrok http 8000
# Then point your client at the generated HTTPS URLCloud Deployment (AWS)
Deploy the MCP server to AWS for a public HTTPS endpoint that remote AI agents can connect to:
Option | Best for | Scale-to-zero | Setup |
ECS Fargate | Production, consistent traffic | No | ALB + Fargate |
App Runner | Low-traffic, development | β Yes | Auto-provisioned HTTPS |
Quick deploy with the helper script
cd deploy/aws
# Option A β ECS Fargate
# Deploy (with optional HTTPS via ACM certificate)
./deploy.sh fargate \
--certificate-arn arn:aws:acm:us-east-1:123456789:certificate/your-cert-id
# Option B β App Runner (mirror image to ECR first)
./deploy.sh mirror --ecr-repo 123456789.dkr.ecr.us-east-1.amazonaws.com/netlicensing-mcp
./deploy.sh apprunner \
--ecr-image 123456789.dkr.ecr.us-east-1.amazonaws.com/netlicensing-mcp:latestConnect MCP clients to the public URL
To use a shared, remote deployment, do not bake the NETLICENSING_API_KEY into the remote server settings. Instead, pass the API key from the client side using query parameters or HTTP headers.
For example, using the URL configuration in your MCP client with a query parameter:
{
"mcpServers": {
"netlicensing": {
"url": "https://your-endpoint.us-east-1.elb.amazonaws.com/mcp?apikey=YOUR_API_KEY"
}
}
}If you use a client or tool that supports passing HTTP headers directly, you can alternatively provide the key via X-NetLicensing-API-Key: YOUR_API_KEY or Authorization: Bearer YOUR_API_KEY.
π Full instructions, architecture diagrams, and cost estimates: deploy/aws/README.md
Contributing
Contributions are welcome! Please open an issue or pull request on GitHub.
For significant changes, open an issue first to discuss the approach.
License
Apache 2.0 β see LICENSE
Latest Blog Posts
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/Labs64/NetLicensing-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server