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

Qeaas MCP

作者:PeterJasSK版本 1.0.0i★ –i在云端运行
注册名称eu.qeaas/qeaas-mcp

安装

概览

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

QRNG-seeded random bytes, seeds, and ML-KEM-768 keys with signed provenance receipts.

PopNx MCP 的三大支柱

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

它能帮你做什么

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

安装

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

安装之前

你需要

你用的是哪个应用?

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

适用于网页版、桌面版和手机版 Claude:

  1. 打开 Settings → Connectors
  2. 点击 Add custom connector
  3. 粘贴下面的地址,然后点击 Add
  4. 如果要求登录,请登录作者的服务
SettingsConnectors1+ Add2https://…3
https://api.qeaas.eu/mcp

在终端中运行这条命令

claude mcp add --transport http qeaas https://api.qeaas.eu/mcp

在 Cursor 中打开

或者自己复制设置

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

{
  "mcpServers": {
    "qeaas": {
      "url": "https://api.qeaas.eu/mcp"
    }
  }
}

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

在 VS Code 中打开

或者自己复制设置

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

{
  "servers": {
    "qeaas": {
      "type": "http",
      "url": "https://api.qeaas.eu/mcp"
    }
  }
}

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

ChatGPT 只能连接互联网上的服务器:

  1. 打开网页版 ChatGPT → Settings → Connectors (Apps)
  2. 点击 Create 或 Add(部分套餐需要先在 Advanced 中开启 Developer mode)
  3. 粘贴下面的地址,起个名字,然后保存
  4. 如果要求登录,请登录作者的服务
SettingsConnectors1+ Create2https://…3
https://api.qeaas.eu/mcp

菜单名称可能因套餐和版本不同而略有差异。

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

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

它能做什么

我们还没有读取这个服务器的工具列表;我们会轮流检查各个端点。

基础检查i

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

  • ! 注意

    作者与仓库一致

    发布者(qeaas.eu)不是仓库所有者(PeterJasSK);可能是其他人代为上架的

  • … 尚未检查

    仍在维护

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

  • … 尚未检查

    有许可证

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

  • … 尚未检查

    端点有响应

    尚未检查;我们会轮流检查各个端点

  • … 尚未检查

    使用 OAuth 登录

    尚未检查;我们会轮流检查各个端点

  • … 尚未检查

    工具描述中没有隐藏指令

    尚未检查;我们会在检查端点时读取工具列表

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

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

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

常见问题

Qeaas MCP 安全吗?

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

它需要哪些密钥或代码?

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

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

它在作者的云端运行。通过互联网连接,无需安装,但你发送的内容会经过作者的服务器。

它还在维护吗?

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

哪些应用可以使用它?

支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。它通过 URL 连接,所以接受远程 MCP 服务器的应用也可以使用,例如开启开发者模式的 ChatGPT。

有什么可以替代它?

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

替代选择

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

如何看卡片:★ 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.

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

作者的 README

打开 README

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

Quantum Entropy-as-a-Service (Q-EaaS) — API Reference

Want an API key? Email peter.jas@cnl.sk.

FastAPI service that turns preloaded QRNG (quantum random number generator) bits into served randomness, dice rolls, cryptographic seeds, and post-quantum ML-KEM key material — each issue carrying a signed, offline-verifiable provenance receipt.

Monorepo layout: api/ (this document — FastAPI service), web/ (Next.js explainer + demo), shared/ (docs, spikes), claude/ (epic build plans). The web app is a thin client over the API; everything substantive happens here.

Honest framing, stated once and meant everywhere. QRNG does not "defeat quantum

attackers." Raw QRNG bits are *never served*. They are entropy that **seeds a standards

HMAC-DRBG** (NIST SP 800-90A). Every byte this API returns — /random, /dice, /v1/random/bytes,

ML-KEM seeds — is DRBG output. The quantum part is the *entropy source*; any quantum

*resistance* comes from ML-KEM-768 (FIPS 203), not from the randomness being "quantum."


1. Architecture at a glance

             ┌──────────── admin (X-Admin-Token) ────────────┐

│ │ QRNG .txt │ POST /admin/ingest │ POST /admin/keys (0/1 bits) ▼ ▼ POST /admin/keys/revoke ┌─────────────┐ AES-256-GCM ┌───────────────────────────────┐ │ pool.parse │ ───────────────▶ │ Postgres (Neon) │ │ + encrypt │ │ entropy_pool (ciphertext) │ └─────────────┘ │ drbg_root (ciphertext) │ │ api_keys / usage_log / │ │ issue_log │ └───────────────┬───────────────┘ │ decrypt slice on reseed ▼ client ┌───────────────────────────────────────┐ ─────────▶ entropy gate │ keyed_drbg.output(n) │ request (503 if low) │ root_key ← reseeded from pool │

  • rate limit ──▶│ counter ← Redis atomic INCR │──▶ HMAC-DRBG(SHA-256)
  • API key │ HMAC-DRBG(root_key, counter) → bytes │ = served bytes └───────────────────────────────────────┘ │ ┌───────────────────────────┴───────────┐ │ Redis (Upstash) │ │ drbg:counter (output uniqueness) │ │ rl:* / quota:* / anon:* (throttling) │ └────────────────────────────────────────┘
  • Stateless / serverless. Each request opens a Postgres connection and closes it (db.connect); there is no long-lived pool object. DRBG state is never read-modify-written per request — see §4.
  • Two datastores, two different jobs — see §3.
  • CORS is locked to the origins in WEB_ORIGIN (comma-separated).
  • Every response carries an `X-Quantum-Entropy: healthy|degraded` header (added by middleware in main.py).

Source map (api/qeaas/):

ModuleResponsibility
main.pyFastAPI app, all route handlers, CORS, entropy header middleware
generation.pyThe single served-randomness choke point + provenance metadata builder
keyed_drbg.pyServerless-safe DRBG wrapper: reseed schedule, Redis-counter mixing
drbg.pyPure NIST SP 800-90A HMAC-DRBG (SHA-256)
pool.pyEntropy pool: parse 0/1, AES-256-GCM encrypt/decrypt, HKDF sub-keys, burn()
db.pyParameterized psycopg helpers for all five tables
redis_client.pyLazy Upstash client: atomic counter + rate-limit ops
gate.pyLow-entropy gate (entropy_level, require_entropy dependency)
auth.pyAdmin-token guard, API-key hashing + validation
ratelimit.pyPer-IP / per-key rate limits, anon daily ceiling, per-key quota
dice.pyRejection-sampled dice (no modulo bias)
kem.pyQRNG-seeded ML-KEM-768 keygen + encapsulation
receipts.pyEd25519 receipt signing + verification
errors.pyFlat {"error": " "} envelope for every failure
schemas.pyPydantic request/response models

2. The randomness pipeline (what fires, in order)

Every served byte flows through one choke point, generation.random_bytes(n) → keyed_drbg.output(n). Nothing bypasses it.

A. Ingest (admin, offline of the request path). POST /admin/ingest → pool.ingest_bits_bytes() → pool.parse_bits_bytes() packs the 0/1 text MSB-first into bytes (discarding a trailing partial byte, rejecting any non-0/1 char) → pool.encrypt_chunk() AES-256-GCM-encrypts it → db.insert_pool_chunk() stores (ciphertext, nonce, tag, plaintext_len, source_label) in `entropy_pool`. Plaintext never touches disk; the upload buffer is burn()-ed.

B. Serve (per request). keyed_drbg.output(n):

  1. maybe_reseed() — loads the warm root-key cache (_load_cache), bootstrapping the root key from the pool on very first use (_bootstrap_root_key). If the reseed schedule is due (§4), pool.pull_reseed_material(32) decrypts the next unconsumed 32-byte slice from entropy_pool, encrypts it as the new drbg_root row, advances consumed_offset, and burn()s the plaintext.
  2. redis_client.incr_counter() — atomic INCR drbg:counter, returns a globally unique integer.
  3. A fresh HmacDrbg is instantiated with the decrypted root_key and generate(n, additional = counter.to_bytes(8) + additional) is called — the counter guarantees two concurrent requests can never produce identical output even with identical root key.
  4. db.bump_outputs_since_reseed() increments the reseed odometer.

C. Wrap (per endpoint). generation.new_issue_meta(size) mints a request_id (uuid4), reads entropy_epoch (= drbg_root.reseed_counter), timestamps, and calls receipts.sign(...) to produce the Ed25519 receipt. Keyed endpoints then write db.insert_usage_log() (abuse spotting) and db.insert_issue_log() (metadata-only provenance — no output bytes are ever stored).

See the deep-dive comment at the end of this file / in the chat analysis for the exact call graph.


3. Why two databases

They protect against completely different failure modes and have opposite consistency needs.

Postgres (Neon) — the durable secret store & audit ledger

Holds everything that must survive and must be transactional & durable. Five tables:

TableHoldsNotes
entropy_poolAES-256-GCM ciphertext of QRNG bits + nonce, tag, plaintext_len, consumed_offset, source_labelThe vault. No plaintext-bytes column exists. consumed_offset tracks how much of each chunk has been spent.
drbg_rootAES-256-GCM ciphertext of the current DRBG root seed + reseed_counter, outputs_since_reseed, rotated_atThe live DRBG key, rotated ("reseeded") from the pool on schedule. reseed_counter == entropy_epoch in receipts and drbg_reseeds in /health.
api_keyskey_hash (HMAC-SHA256, peppered), owner, tier, daily_quota_bytes, revoked, created_atPlaintext keys never stored. Read fresh every request so revocation is instant.
usage_log(ts, principal, endpoint, nbytes)Abuse-spotting ledger for keyed issues. Anon /random//dice are not logged here.
issue_log(request_id, principal, endpoint, size, epoch_id, ts)Metadata-only provenance. No output-bytes column exists, ever — verify provenance, not the secret.

Durability matters: lose the pool ciphertext or the root key and the service can no longer prove provenance or reseed. Postgres is ACID; this is where correctness lives.

Redis (Upstash) — the ephemeral atomic counter & throttle

Holds only fast, disposable, atomically-mutated counters that would be a correctness hazard in Postgres under serverless concurrency:

KeyPurposeOp
drbg:counterOutput uniqueness. Monotonic integer mixed into every DRBG call so two concurrent serverless invocations can't emit the same bytes.INCR
rl:ip:{ip}:{minute}Per-IP rate limit (anon routes)INCR + EXPIRE 60
rl:key:{hash}:{minute}Per-key rate limitINCR + EXPIRE 60
anon:daily:{day}Global anon output ceiling (5 MB/day)INCRBY + EXPIRE, DECRBY on refund
quota:key:{hash}:{day}Per-key daily byte quotaINCRBY + EXPIRE, DECRBY on refund

Why not put these in Postgres? On stateless serverless you cannot safely read-modify-write shared state per request — two concurrent requests would race. Redis INCR/INCRBY are atomic, so there is no read-modify-write. These values are *meant* to expire (per-minute, per-day) and losing them is harmless — throttling fails open on a Redis outage (logs a warning, allows the request), because the reseed-frequency floor (§4) still guarantees the pool can't be drained.

One-line summary: Postgres = durable secrets + audit that must be correct forever; Redis = ephemeral atomic counters that must be fast and race-free but are disposable.


4. The DRBG & bit-drain protection

  • HMAC-DRBG (SHA-256), NIST SP 800-90A §10.1.2 (drbg.py). Not thread-safe — each request gets its own instance.
  • Serverless-safe wrapper (keyed_drbg.py): output(n) = HMAC-DRBG(root_key, INCR(drbg:counter), n).
  • Reseed schedule. root_key rotates from the pool on whichever fires first:
  • a fixed 15-minute interval (RESEED_INTERVAL_SECONDS), or
  • an output count ≥ RESEED_OUTPUT_LIMIT (100 000) but only if ≥ RESEED_MIN_INTERVAL_SECONDS (5 minutes) has elapsed. Each reseed pulls RESEED_PULL_BYTES (32) from the pool.
  • Bit-drain is impossible via traffic. Served bytes are always DRBG output, never raw pool bits, and the 5-minute floor means no request volume can rotate the key faster than wall-clock time. Pool drain is a function of *time*, never *traffic*.
  • Low-entropy gate. Below THRESHOLD (64 KiB) of unconsumed pool bytes, /health reports degraded and all gated routes 503 low_quantum_entropy (gate.require_entropy).

5. Cryptographic key hierarchy

One env-held MASTER_KEY (256-bit hex). pool.derive_subkey(name) (HKDF-SHA256, RFC 5869 one-block Expand) derives exactly four named sub-keys — there are no other secrets:

MASTER_KEY  (env / KMS only — never written to Postgres)

└── HKDF-SHA256 ├── "pool-encryption-key" → entropy_pool AES-256-GCM ├── "drbg-root-encryption-key" → drbg_root.root_key AES-256-GCM ├── "api-key-pepper" → API-key hashing (HMAC-SHA256) └── "receipt-signing-key" → Ed25519 receipt signing seed

AES-256-GCM is authenticated: a flipped ciphertext byte fails the tag check and decryption raises — the service fails closed on tampered storage. Sensitive plaintext (decrypted slices, the warm root-key cache, upload buffers) is held in bytearray and best-effort burn()-ed after use (CPython cannot *guarantee* zeroization; serverless teardown keeps in-process secrets short-lived by design).


6. Authentication

MechanismHeaderApplies to
None (anonymous)—/health, /random, /dice, /v1/verify, /v1/pubkey
API keyX-API-Key: /v1/random/bytes, /v1/kem/*
Admin tokenX-Admin-Token: /admin/*
  • API keys: hash_api_key(key) = HMAC-SHA256(pepper, key); only the hash is stored. require_api_key reads the row fresh every request, so revoked = true

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

问 PopNx