许可证管理服务器

NetLicensing MCP Server是一个通过自然语言接口让AI代理管理软件许可证、客户和权限的服务,适用于开发者和企业许可证管理场景。

  • by Labs64
  • HTML
  • 本地部署
  • 5 星标
  • 更新于
在 GitHub 查看 Labs64/NetLicensing-MCP

使用说明

网络许可MCP服务器

官方的 Labs64 网络许可 MCP服务器 --一个自然语言界面,让人工智能代理通过对话命令管理软件许可证、客户和权限。

适用于Claude Desktop、GitHub Copilot(代理模式)、VS Code、JetBrains/IntelliJ IDEA和任何其他MCP兼容客户端。


为什么要用这个?

  • 自然语言许可 -请您的人工智能助手在不接触NetLicensing UI或编写API调用的情况下创建产品、颁发许可证、验证授权和生成商店URL。
  • API全面覆盖 --涵盖整个NetLicensing的各种工具 REST API:产品、模块、模板、被许可人、许可证、捆绑包、代币、交易和支付方式。
  • 内置审计提示 --五个即用型提示模板,用于帐户审核、到期扫描、异常检测和清理工作流。
  • 默认安全 --所有删除操作都会暴露一个 force_cascade 期权;没有什么是悄无声息地倾泻而下的。
  • 零依赖快速启动 --跑步 uvx 或者没有本地Python安装的Docker。

你能问什么?

连接后,您可以用简单的语言与NetLicensing交谈:

  • “列出我的NetLicensing帐户中的所有产品。”
  • “为创建新的许可证持有人 customer@example.com 产品PTEST。"
  • “验证许可证持有人L001的许可证--是否通过?”
  • “为许可证持有人L001生成一个店铺URL,以便他们可以自助续订。”
  • “哪些许可证将在未来30天内到期?”
  • “查找任何没有活动许可证的被许可人——标记他们进行清理。”
  • “将所有许可证从许可证持有人L001转移到L002。”
  • “创建作用域为只读访问的API密钥令牌。”
  • “显示上个月的所有交易。”

特性

区域 工具
产品 列表、获取、创建、更新、删除
产品模块 列表、获取、创建、更新、删除
许可证模板 列表、获取、创建、更新、删除
被许可人 列表、获取、创建、更新、删除、验证、传输
许可证 列表、获取、创建、更新(激活/停用)、删除
捆绑包 列表、获取、创建、更新、删除、获取
代币 列出,获取,创建商店URL,创建API令牌,撤销
交易 列表、获取、创建、更新
支付方式 列表、获取、更新
公用事业 列出许可模式,列出许可类型
审计提示 全账户、单客户、到期扫描、清理、异常检测
删除安全 force_cascade 所有删除工具上的选项
编辑 秘密(apiKey, licenseeSecret, nodeSecret,…)在所有响应和日志中隐藏

安全默认值

默认情况下,服务器被设计为安全的:

  • 无静默凭据回退 --如果 NETLICENSING_API_KEY 未设置和 NETLICENSING_ALLOW_DEMO 未明确启用,服务器拒绝启动(stdio)或返回 503 (HTTP),而不是默默地使用演示凭据。
  • 红层 --每个工具响应都会经过编校过滤器。敏感领域(apiKey, licenseeSecret, nodeSecret, password, secret)被部分形式掩盖(例如。 s3c****ecret).该套件可通过以下方式扩展 MCP_REDACT_FIELDS.
  • 一次性凭证 — create_api_token 和 create_shop_token 用标签标记他们的回复 "shown_once": true 因此客户端知道凭证将不再完整可见。随后的 get_token / list_tokens 调用返回掩码值。
  • 删除确认 --所有破坏性操作都需要两步确认令牌流;没有什么是悄无声息地倾泻而下的。

快速开始

选项A-uvx(无需安装)

NETLICENSING_API_KEY=your_key uvx netlicensing-mcp

选项B-pip

pip install netlicensing-mcp
NETLICENSING_API_KEY=your_key netlicensing-mcp

选项C——Docker

stdio(默认)--用于克劳德桌面/VS代码

docker run -i --rm \
  -e NETLICENSING_API_KEY=your_key \
  ghcr.io/labs64/netlicensing-mcp:latest

HTTP模式——用于远程/共享部署

docker run -d -p 8000:8000 \
  -e NETLICENSING_API_KEY=your_key \
  ghcr.io/labs64/netlicensing-mcp:latest http

详细日志记录(任何模式)

# 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:latest

演示/沙箱模式(无API密钥)

docker run -i --rm \
  -e NETLICENSING_ALLOW_DEMO=true \
  ghcr.io/labs64/netlicensing-mcp:latest

没有API密钥? 集 NETLICENSING_ALLOW_DEMO=true 运行NetLicensing的内置 带有演示凭据的沙盒——无需帐户。 服务器将用以下内容标记每个响应 "demo_mode": true 并定期发出警告 所以很明显,你没有使用真实账户。


配置

环境变量

变量 必填 默认 描述
NETLICENSING_API_KEY 是* - NetLicensing API密钥。除非满足以下条件,否则必须 NETLICENSING_ALLOW_DEMO=true 已设置。
NETLICENSING_ALLOW_DEMO 没有 false 设置为 true 当没有配置API密钥时,显式地选择进入沙箱演示模式。每个工具响应都标记有 "demo_mode": true 并且每60秒记录一次警告。 永远不要在生产中设置它。
NETLICENSING_BASE_URL 没有 https://go.netlicensing.io/core/v2/rest 覆盖NetLicensing REST API基本URL(例如,用于预部署)。
MCP_TRANSPORT 没有 stdio 运输方式: stdio (默认)或 http。也可以作为CLI参数传递。
MCP_HOST 没有 127.0.0.1 绑定HTTP服务器的主机地址(仅限HTTP模式)。
MCP_PORT 没有 8000 绑定HTTP服务器的端口(仅限HTTP模式)。
MCP_VERBOSE 没有 false 启用详细调试日志记录(true, 1,或 yes).记录原始API请求/响应 敏感字段会自动编辑。也可以通过以下方式设置 -v CLI标志。
MCP_REDACT_FIELDS 否 -- 逗号分隔的其他字段名列表,用于从所有工具响应和日志输出中编辑(例如。 MCP_REDACT_FIELDS=ssn,phone).扩展内置默认设置: apiKey, licenseeSecret, nodeSecret, password, secret.

* NETLICENSING_API_KEY 演示模式: 如果两者都没有 NETLICENSING_API_KEY 也不 NETLICENSING_ALLOW_DEMO=true 设置后,服务器将 拒绝开始 (stdio模式)或返回 503 Service Unavailable 用于所有工具调用(HTTP模式)。这可以防止在生产中意外使用演示凭据。

关于HTTP部署的说明(例如AWS): 在网络上以HTTP模式运行时,可以跳过设置 NETLICENSING_API_KEY 在服务器上。如果连接客户端通过以下方式提供密钥,MCP服务器将自动提取每个请求的密钥 X-NetLicensing-API-Key HTTP报头, Authorization: Bearer <key> 标题,或 ?apikey=<key> 查询参数。


克劳德桌面版

编辑 ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) 或 %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "netlicensing": {
      "command": "uvx",
      "args": ["netlicensing-mcp"],
      "env": {
        "NETLICENSING_API_KEY": "your_key_here"
      }
    }
  }
}

或者使用官方Docker镜像:

stdio(默认)--用于克劳德桌面/VS代码

{
  "mcpServers": {
    "netlicensing": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "NETLICENSING_API_KEY=your_key_here",
        "ghcr.io/labs64/netlicensing-mcp:latest"
      ]
    }
  }
}

HTTP模式——用于远程/共享部署

{
  "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代码/GitHub副本

该回购交易 .vscode/mcp.json 自动配置Copilot代理模式。 集 NETLICENSING_API_KEY 在您的shell环境中或 .env 文件,然后单击 开始 在上面显示的编辑器横幅中 mcp.json.

JetBrains/IntelliJ IDEA

在Copilot聊天→ 代理模式→ 工具图标→ 添加更多工具… --粘贴 与上述Claude Desktop部分所示的JSON块相同。


审核提示模板

Copilot Agent和Claude Desktop中可访问的五个内置提示:

提示 目的
audit_full 产品的端到端账户审计
audit_customer 深入了解单一持牌人
audit_expiry 查找N天内到期的许可证并生成续订URL
audit_cleanup 识别非活动/孤立许可证以进行清理
audit_anomaly 检测所有客户的异常使用模式

故障排除

检查MCP服务器日志

# macOS / Claude Desktop
tail -f ~/Library/Logs/Claude/mcp-server-netlicensing.log
 
# Windows
Get-Content "$env:APPDATA\Claude\Logs\mcp-server-netlicensing.log" -Wait

运行MCP检查器 (浏览器用户界面位于 http://localhost:5173)

mcp dev src/netlicensing_mcp/server.py

常见问题

症状 可能原因 修复
401 Unauthorized responses API密钥无效或过期 在重新生成密钥 ui.netlicensing.io
服务器未在Claude中列出 配置文件JSON语法错误 使用验证 python -m json.tool claude_desktop_config.json
uvx: command not found uv 未安装 pip install uv 或查看 docs.astral.sh/uv
服务器立即退出/ 503 在所有通话中 NETLICENSING_API_KEY 未设置且演示模式未启用 设置 NETLICENSING_API_KEY,或设置 NETLICENSING_ALLOW_DEMO=true 用于沙盒测试
演示数据而非实时数据 NETLICENSING_API_KEY 未设置; NETLICENSING_ALLOW_DEMO=true 活动 确保 NETLICENSING_API_KEY 在启动客户端的shell中导出并取消设置 NETLICENSING_ALLOW_DEMO

发展

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模式(用于远程/共享部署)

python -m netlicensing_mcp.server http
# Server listens on MCP_HOST:MCP_PORT (default: 127.0.0.1:8000)

使用 ngrok 或反向代理,将HTTP端点暴露给远程MCP客户端:

ngrok http 8000
# Then point your client at the generated HTTPS URL

云部署(AWS)

将MCP服务器部署到AWS 公共HTTPS端点 远程AI代理可以连接到:

选项 最适合 缩放到零 设置
ECS Fargate 生产,流量一致 否 ALB+Fargate
应用程序运行程序 低流量,发展 ✅ 是 自动配置HTTPS

使用辅助脚本快速部署

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:latest

将MCP客户端连接到公共URL

要使用共享的远程部署,请不要烘焙 NETLICENSING_API_KEY 进入远程服务器设置。相反,使用查询参数或HTTP头从客户端传递API密钥。

例如,在MCP客户端中使用带有查询参数的URL配置:

{
  "mcpServers": {
    "netlicensing": {
      "url": "https://your-endpoint.us-east-1.elb.amazonaws.com/mcp?apikey=YOUR_API_KEY"
    }
  }
}

如果您使用支持直接传递HTTP标头的客户端或工具,您也可以通过以下方式提供密钥 X-NetLicensing-API-Key: YOUR_API_KEY 或 Authorization: Bearer YOUR_API_KEY.

📖 完整说明、架构图和成本估算: deploy/aws/README.md


贡献

欢迎投稿!请在上打开问题或拉取请求 GitHub.

对于重大更改,请先打开一个问题来讨论方法。


许可证

Apache 2.0——请参阅 许可证