Skip to main content
Glama
Octo-o-o-o

pvl-gate-mcp

by Octo-o-o-o

@project-value-lab/gate-mcp

实验状态(experimental · 0.x):本包处于公开实验期。工具入参/出参契约在 0.x 内可能有向后不兼容调整(每次变更记入 changelog 并升 minor);决策卡字段以服务端 OpenAPI(docs/openapi/gate.yaml)为准。生产流水线钉住精确版本使用;1.0.0 前不承诺长期稳定接口。

ProjectValueLab 依赖门禁的 MCP server(N3)。把 POST /v1/gate/assessGET /v1/gate/decisions/:id 包装为两个 MCP 工具,供 Claude Code / Cursor 等 MCP 客户端在编码现场做"引入这个依赖前先过门禁"。

工具

工具

入参

出参

assess_dependency

ecosystem(npm/pypi/go/maven/cargo/nuget/rubygems)、packageversionusageContext?

完整决策卡对象:recommendation(GO/VALIDATE/DROP)、hardGates[]evidence[]explanationscorecardRefdecisionUrlcachedevaluatedAtpolicyVersionsignalGaps[]

get_decision

decisionId(= assess 返回的 scorecardRef,64 位 hex)

同上(读回已存在决策,只能读本工作区的)

输出即 HTTP API 的决策对象本体(structuredContent + JSON 文本双形态),含可引用、可审计的 decisionUrl(读回需同工作区的 Bearer key,不是公开链接——不要为分享它而外发 key)。

Related MCP server: Security-Use MCP Server

安装与配置

# 仓库根目录:打包(prepack 自动先 build)+ 全局安装
npm pack ./packages/gate-mcp   # 注意 ./ 前缀——裸路径会被 npm 当成 GitHub shorthand
npm install -g ./project-value-lab-gate-mcp-<version>.tgz

环境变量(key 既不进命令行参数、也不明文写进任何可能提交/同步的配置文件):

  • PVL_GATE_URL:ProjectValueLab 后端 base URL(如 https://pvl.example.com)。

  • PVL_GATE_API_KEY:工作区 API key(pvl_live_…)。在 PVL 账户页创建,明文只显示一次。可省略——省略时进入匿名 hosted 模式(见下)。

匿名(hosted)模式

不设 PVL_GATE_API_KEY 时,assess_dependency 走公开端点 POST /v1/public/gate/assess(服务端需开启 PVL_PUBLIC_GATE_ENABLED=1;有 IP 限速与全局日预算,忙时返回"稍后再试")。能力边界:响应不含 decisionUrl、无 get_decision 读回(tools/list 只暴露 assess)、无工作区缓存/审计/outcome 回填。适合"先试后注册"的现场评估;要完整能力请创建工作区 key。

先把 key 放进启动环境(如 ~/.zshenvexport PVL_GATE_API_KEY=...,或 secret manager 注入),再让 MCP 配置按名引用——两家客户端都支持配置内环境变量展开,明文不落配置文件、不进 argv:

安全边界:这是 ProjectValueLab 的入站机器凭据(N1,工作区级、可吊销、有限速与审计),不是 InfiniSynapse 上游 key——上游 key 永远只在 PVL 服务端。本 MCP server 不落盘、不回显 key(输出边界另有强制脱敏兜底)。

Claude Code

项目级或用户级 .mcp.json${VAR} 展开语法,来自启动 Claude Code 的 shell 环境):

{
  "mcpServers": {
    "pvl-gate": {
      "command": "pvl-gate-mcp",
      "env": {
        "PVL_GATE_URL": "${PVL_GATE_URL:-https://pvl.example.com}",
        "PVL_GATE_API_KEY": "${PVL_GATE_API_KEY}"
      }
    }
  }
}

claude mcp add--env KEY=value 会把明文放进 argv/shell history,不要用它传 key。)

Cursor

~/.cursor/mcp.json(或项目 .cursor/mcp.json;Cursor 的展开语法是 ${env:NAME}):

{
  "mcpServers": {
    "pvl-gate": {
      "command": "pvl-gate-mcp",
      "env": {
        "PVL_GATE_URL": "${env:PVL_GATE_URL}",
        "PVL_GATE_API_KEY": "${env:PVL_GATE_API_KEY}"
      }
    }
  }
}

注意:GUI 启动的桌面应用不一定继承 .zshrc 里的变量;变量放 ~/.zshenv 或系统级环境,或从已 export 的终端启动客户端。

与 Endor 类扫描 MCP 的差异(定位声明)

Endor Labs / SCA 类 MCP 的核心是仓库清点扫描:遍历依赖清单,报告漏洞/许可清单,输出面向修复。本 MCP 是决策服务,差异在四点:

  1. 对象不同:单个"待引入"的依赖坐标(引入前拦截点),不是已有仓库的全量清单。

  2. 输出不同:三态裁决(GO/VALIDATE/DROP)+ hardGates + 证据 + 模板化解释 + 可分享/可审计的 decisionUrl,不是漏洞列表。决策带 policyVersion,同一坐标在策略变更后会产生新决策。

  3. 机制不同:确定性规则(OSV + deps.dev SPDX 许可表达式 + registry 采用度),无 LLM 参与裁决;同输入同输出、可缓存(命中 <1s)、OSV 新事件主动失效。

  4. 闭环不同:决策进组织记忆——6.7 GateCallRecord 回填 outcome(听劝/后悔率),进 B3 校准面板;扫描器没有"决策后来对不对"的追踪。

两者互补:清点存量用扫描器,引入增量用本门禁。

版本与发布

  • 版本号策略(0.x)0.MINOR.PATCH——工具契约/行为变更升 minor,修 bug 升 patch;0.x 期间 minor 可含不兼容变更(发布说明中明示)。服务端决策规则有独立的 policyVersion/ruleVersion,不随本包版本走。

  • 版本号随 package.json(当前 0.1.0),pvl-gate-mcp --version 可查。

  • 本地验证:bash scripts/gate-mcp-verify.sh(构建 → pack → 临时目录安装 → --version + stdio 会话冒烟)。

  • 对外发布到 MCP 注册生态(npm 公网 / MCP registry)是 outward-facing 动作,材料就绪后须经人工确认再执行。 为防误发布,package.json"private": true(不影响 pack/本地安装,只拦 npm publish);经人工确认对外发布时才有意移除。发布材料清单见 docs/product/gate-release/2026-07-22-gate-release-checklist.md

A
license - permissive license
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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/Octo-o-o-o/pvl-gate-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server