原型 · 预览版:收录官方注册中心里的全部服务器,每 30 分钟同步一次。评价和账户功能将在后续阶段推出。
PopNx MCP为使用 AI 的人准备的 MCP 服务器 · 用大白话讲清楚

agentgate

作者:ciceroyang版本 0.5.0i★ –i在你的电脑上运行
注册名称io.github.ciceroyang/agentgate

安装

概览

作者提供的说明(英文原文)

Read-only evidence for the tools agents run: MCP server records, coverage and policy.

PopNx MCP 的三大支柱

这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。

它能帮你做什么

我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。

  • 连接方式: 在你的电脑上运行
  • 传输方式: stdio
  • 分类: 其他

安装

选择你使用的 AI 应用,然后复制设置。

安装之前

  • 基础检查:1 项中通过 1 项
  • 在你的电脑上运行,拥有你的用户账户的权限(文件、网络、应用)。
  • 注册中心没有列出需要填写的密钥。

你需要

  • npm已安装 Node.js(用于 npx 命令)

你用的是哪个应用?

在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。

打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json

{
  "mcpServers": {
    "agentgate": {
      "command": "npx",
      "args": [
        "-y",
        "@zhiliangtech/agentgate",
        "mcp"
      ]
    }
  }
}

在终端中运行这条命令

claude mcp add agentgate -- npx -y @zhiliangtech/agentgate mcp

在 Cursor 中打开

或者自己复制设置

粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json

{
  "mcpServers": {
    "agentgate": {
      "command": "npx",
      "args": [
        "-y",
        "@zhiliangtech/agentgate",
        "mcp"
      ]
    }
  }
}

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

在 VS Code 中打开

或者自己复制设置

粘贴到项目中的 .vscode/mcp.json

{
  "servers": {
    "agentgate": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@zhiliangtech/agentgate",
        "mcp"
      ]
    }
  }
}

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。

你的选择通过 Cookie 保存在这台设备上,无需账户。

这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。

它能做什么

它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。

基础检查i

我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月7日

  • ✓ 通过

    作者与仓库一致

    注册名称已通过 GitHub 账户 ciceroyang 验证,该账户拥有此仓库

  • … 尚未检查

    仍在维护

    我们还没有从 GitHub 读取这个仓库

  • … 尚未检查

    有许可证

    我们还没有从 GitHub 读取这个仓库

  • – 不适用

    端点有响应

    它在你的电脑上运行,没有互联网端点

  • – 不适用

    使用 OAuth 登录

    在你的电脑上运行,改用本地设置

  • … 尚未检查

    工具描述中没有隐藏指令

    它在你的电脑上运行;我们只能读取互联网端点的工具列表

与“其他”中的其他服务器比较i

  • 星标数多于此分类中其他 32742 个服务器的 0%
  • 发布到注册中心的时间比此分类中其他 32742 个服务器的 46% 更新
  • 基础检查结果等于或优于此分类中其他 32742 个服务器的 100%

与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。

常见问题

agentgate 安全吗?

它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。

它需要哪些密钥或代码?

注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。

它在我的电脑上运行还是在云端?

它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。

它还在维护吗?

GitHub 仓库最后更新于–,最新版本(0.5.0)于2个月前进入注册中心。

哪些应用可以使用它?

支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Node.js。

有什么可以替代它?

同一分类中有:Spec Driven Development, Remote Desktop Commander, Asset Notation

替代选择

同一分类中其他作者的服务器,按星标数排序。

如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i

Spec Driven Development

作者:formulahendry

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

在你的电脑上运行★ 440MIT14个月前更新
安装

Remote Desktop Commander

作者:desktop-commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

在云端运行★ 211前天更新
安装

Asset Notation

作者:assetnotation

Read and maintain an Asset Notation file on disk: net worth, holdings, valuations, CSV import.

在你的电脑上运行今天更新
安装

作者的 README

打开 README

按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。

English · 中文

agentgate

A control plane for the tools agents run. It inventories what is in use, records the evidence behind every claim, states what a company refuses, and enforces that decision in CI and at runtime.

The whole project follows one rule:

clean is emitted only when every check ran. Anything that could not be measured is

unmeasured, and an artefact with an unmeasured part is incomplete — never clean.

That rule is there because the usual failure of a security scanner is a green build for work nobody did. Here a check that crashes makes the result incomplete, so it cannot happen quietly.

The four parts

partwhat it doespackage
inventoryenumerate the registry, resolve packages, fetch repositoriespackages/collect
evidencejoin it into one record per server, with the bytes behind every claimpackages/collect
policyscan configs, hooks, manifests and source for what a company would refusepackages/guard
verificationcheck a claim against something outside the claimpackages/verify

Running it

Server setup is in docs/operations/deployment-runbook.md. The first deployment, on 2026-09-16, is written up in docs/verification.md together with what was checked and what still is not.

docs/capabilities.md lists what this project can and cannot claim, one line each, every line carrying a command you can run. It exists because a consultant once wrote our capabilities down for us and included four we do not have.

Try it without installing

The service runs at https://xn--5kvo87g.com/: landing page, pricing, the evidence index (rebuilt daily) and the API on the same host.

https://ciceroyang.github.io/agentgate/ is the landing page on GitHub Pages. The index is a single browsable page at https://ciceroyang.github.io/agentgate/evidence.html, rebuilt daily from the live registry — records are embedded, filtering happens locally, and there is nothing to sign up for. Pricing and a ten-minute walkthrough.

Quickstart

Upgrading to 0.6.0: read the upgrade guide before replacing an existing admission gate or watch installation. The 0.5.0 package can incorrectly pass a required-evidence gate when evidence is absent; do not use it for a new gate. Confirm the version you installed, and see the release record for public-package verification. A source checkout and the hosted service may run different versions.

Node 20 or newer, no dependencies. A clone already carries a sample index, so the service answers immediately; refresh replaces it with a current one.

node bin/agentgate.mjs serve

agentgate serving http://127.0.0.1:8080

curl -s localhost:8080/health curl -s localhost:8080/v1/index/summary curl -s localhost:8080/v1/servers/ curl -s localhost:8080/badge/ .svg

The package is on npm as @zhiliangtech/agentgate. Push a v* tag and CI publishes it with provenance; publish-checklist.md has the setup and the record of what was verified.

npx --yes --ignore-scripts @zhiliangtech/agentgate@0.6.0 check --root .

npx --yes --ignore-scripts @zhiliangtech/agentgate@0.6.0 serve

An unversioned npx command follows the latest dist-tag, not this checkout. Pin the accepted version; editing a local version number does not change the public package.

With no policy file, check uses a built-in default that refuses nothing extra, and serve answers from the snapshot the package shipped with. refresh writes to ./data next to you, never into the installed package.

Docker works too, and runs the same command:

docker compose up                            # the service on :8080

docker compose --profile collect run --rm refresh # rebuild data/index.json and seed the first snapshot

Tool inventory

Run node bin/agentgate.mjs serve and open /inventory.html at the address it prints. Paste a list of tool names or pick a text/JSON file, resolve ambiguous matches, fill in the version you actually use, and download a standalone HTML report. The comparison happens in browser memory against the embedded index snapshot: the list is not uploaded or stored, your machine is not scanned, and no tool is executed. When a record carries a coverage block, the report also lists which scanners ran and which did not, and why; a record whose own coverage block says a required scanner did not finish will not be shown as matched, however complete the rest of its evidence looks.

The same thing without a browser:

node bin/agentgate.mjs inventory --input examples/inventory/tools.json --out my-tools.html

node bin/agentgate.mjs inventory --input tools.json --index data/index.json --format json

An input is one name per line, a JSON array, or { "tools": [...] }. Each object may carry name, server, package, registry and version — nothing else. Full client configurations and credentials are rejected on purpose. The inventory guide has the details.

Unmatched, ambiguous, missing-version, mismatched-version and incomplete-evidence items stay in the report. A version match is not proof of what is installed. The committed sample is historical and cannot produce a confirmed match; neither can old evidence without an exact content binding. Even a confirmed match is not a safety certification and not a new scan. Look at the scopes, the findings, the snapshot date and the gaps before you rely on it.

Exit code 0 means a report was produced, not that every tool passed. Malformed input or unreadable data exits 2, and --out will not overwrite an existing file. When you want CI to refuse something, use check, not inventory.

Getting the list in the first place

Nobody has this list by hand. discover reads the MCP configuration files already on the machine and produces input that inventory --input accepts. It prints package coordinates as lines when all exported identities are known; if any entry is alias-only, it uses JSON so an alias such as tool@1.2.3 cannot be mistaken for a verified package and version:

node bin/agentgate.mjs discover --out tools.txt          # home directory + current directory

node bin/agentgate.mjs discover --roots ~/code/a,~/code/b --format json

It never prints an env value, a header or an argument, and a remote address is cut down to its host, because paths and query strings carry tokens. It reads Codex's .codex/config.toml MCP tables without starting the configured servers. Explicitly disabled entries remain visible in --format json but are omitted from text and inventory exports. Unsupported MCP TOML shapes, malformed files and unreadable files are listed with a reason and make the command exit 2. Package names and versions are taken only from recognizable declared runner arguments; a custom command or remote host is not treated as a verified package or runtime version.

Several repositories
node bin/agentgate.mjs audit --roots ~/code/a,~/code/b,~/code/c --index data/index.json

One scan per directory, one verdict for the set. Any incomplete directory makes the audit incomplete, and a directory that does not exist counts as unmeasured rather than skipped.

Changes since last time
node bin/agentgate.mjs watch --input tools.txt --index data/index.json --archive ./archive

node bin/agentgate.mjs watch --verify --archive ./archive node bin/agentgate.mjs watch --input tools.txt --index data/index.json --archive ./archive \ --webhook https://example.invalid/hook --webhook-format wecom

Every run appends one line to a chained archive (prev is the previous line's hash) and stores what it saw under snapshots/ .json. --verify recomputes the chain and every retained snapshot, and exits 1 if anything does not match. Nothing is sent anywhere unless --webhook names an address, and the archive is written before the push, so a chat service being down cannot lose a capture.

Questionnaire mapping
node bin/agentgate.mjs framework                       # who answers which AI-CAIQ item

node bin/agentgate.mjs inventory --input tools.json --framework aicaiq --out report.html

For each AI-CAIQ item the mapping says what we can provide, where our coverage stops, and whether the answer is ours, the customer's, or an independent assessor's. It describes evidence. It is not a compliance conclusion and it does not reproduce the official text. All 58 items of the four domains a reviewer asks a vendor about are classified: 13 answers are ours, 41 are the customer's and 4 need an independent assessor.

Evidence pack

The mapping says what we can provide. pack produces the thing itself: one directory a vendor hands to the person reviewing them, where every answer we claim points at evidence in the same directory and everything we could not measure is counted at the top.

node bin/agentgate.mjs pack --input tools.json --archive ./agentgate-archive --out agentgate-pack

node bin/agentgate.mjs pack --verify agentgate-pack # recompute every hash and the seal

It writes pack.json (machine readable), pack.html (for the reviewer), answers.aicaiq.md (all 58 items, each classified), manifest.txt (one sha256 per file) and manifest.sha256 (the seal on the manifest). An answer whose evidence is missing reads unmeasured and the command exits 2, not

  1. Example built from the live index:

docs/samples/evidence-pack-example — verifiable with pack --verify. Contract: docs/spec/evidence-pack-v1.md.

MCP server

Anything that speaks MCP can ask the index directly. Add this to claude_desktop_config.json, a repo's .mcp.json, or whatever your client reads:

{

"mcpServers": { "agentgate": { "command": "npx", "args": ["--yes", "@zhiliangtech/agentgate@next", "mcp"] } } }

Four read-only tools: lookup_server (one record, with its coverage block), inventory_tools (match the tools you actually use), coverage_report (how much of the index was measured) and check_project (scan a local directory). It reads the local index, never writes, never uploads, and never runs a scanned tool. An incomplete record is reported as incomplete, and a record that the index does not have is reported as missing rather than safe. Details: docs/spec/mcp-server-v1.md.

Policy

A policy states what a company refuses. It is data rather than code, and it has a spec: docs/spec/policy-v1.md.

{

"version": "agentgate.policy/v1", "threshold": "high", "required": { "pinnedPackages": true, "measuredEvidence": ["packageManifest"] }, "forbidden": { "rules": ["AG-INSTALL-001"], "servers": ["internal/*"] } }

node bin/agentgate.mjs check --policy agentgate.policy.json --root . --index data/index.json

The policy above requires indexed evidence. Supply a real index matching the local npm package's exact name and version: missing evidence exits 2; an explicit missing, malformed or sample index exits 3. A local source scan does not substitute for the required package evidence.

With no policy file and no --policy, the check still runs. It reports what the checks found and says it used the built-in default, which refuses nothing extra; inventing obligations on your behalf would make the result mean less, not more. A policy you name explicitly and that cannot be read is an error, because that is a typo.

The same evaluation can go to a person instead of a terminal:

node bin/agentgate.mjs check --

只显示了开头部分;其余内容请在仓库中阅读

问 PopNx