关于 PARANOID
PARANOID 是供 Claude Code、Cursor 和其他 MCP 客户端使用的私密模型连接器,每个问题都会由本机生成零知识证明。网关可验证请求资格而不知晓提问者身份或关联不同问题,并提供 MCP 工具及 OpenAI 兼容接口。
主要功能
- 01每次提问生成新的零知识证明
- 02列出模型及提问费用
- 03查询剩余问题数量和有效期限
- 04使用 x402 通过 Solana 钱包购买问题
- 05提供 OpenAI 兼容接口
适用场景
- 01通过 MCP 客户端私密询问模型
- 02让 Agent 使用 x402 自动购买问题
- 03在兼容 OpenAI API 的应用中调用模型
- 04从终端提问或审查代码差异
MCP 相关
PARANOID 作为 MCP 服务公开 ask、models、balance 和 buy 工具,供客户端连接模型、查看可用模型与余额,并购买问题。连接器为每次请求生成本机零知识证明。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
PARANOID MCP
通过 Claude Code、Cursor 或任何 MCP 客户端,私密地向 AI 模型提问。每个问题都会携带一份在你自己的电脑上生成的新零知识证明,因此 PARANOID 网关可以确认问题已付费,而无需知道是哪位成员提出的,也不会将其与任何其他问题关联起来。若还要隐藏你的网络地址,请参阅哪些信息仍然可见。
PARANOID 运行 DeepSeek、Kimi、Qwen 和 GLM 等开放模型,包括未经审查的模型。问题通过 Solana 上的 USDC 一次性购买,Agent 还可以通过 x402 自行购买。paranoiddotred/paranoid 开源了 Solana 程序和每份证明背后的电路,并且该源代码构建出的字节与部署在主网上的内容完全一致。
它已列入 官方 MCP Registry,
标识为 io.github.paranoiddotred/paranoid-mcp,由 CI 在每次发布时直接发布;也已列入
Glama。
安装
快速安装
Claude Desktop。 从最新版本
下载 paranoid.mcpb,然后双击它,或将其拖入 Claude 窗口。将 paranoid.red 上
Keys 标签页中的连接器代码粘贴到设置中,或者选择一个持有 USDC 的 Solana 钱包文件,以便购买
工具获取问题。Claude Desktop 自带 Node.js,因此无需安装其他内容。
Claude Code。
claude mcp add paranoid -- npx -y github:paranoiddotred/paranoid-mcp#v1.4.1 mcp
Cursor 和 Claude Code 会通过 npx 直接从此代码库运行,并固定到发布标签,因此你获得的版本与已公布哈希值对应;这需要 Node.js 和 git。若要使用已购买的问题,请先在终端中运行一次,并在提示时粘贴连接器代码,这样代码就不会留在 shell 历史记录中。随后它会持续提供本地端点,直到你按 Ctrl+C 停止。
npx -y github:paranoiddotred/paranoid-mcp#v1.4.1
你也可以像 Claude Desktop 扩展那样,将代码设为客户端设置中的 PARANOID_CODE。
手动安装
它是单个文件,无需安装任何软件包,并且需要 Node.js 20.18、22.8 或更高版本。一次性下载文件并与当前版本进行校验:
mkdir -p ~/paranoid && curl -o ~/paranoid/connect.mjs https://paranoid.red/connect.mjs \
&& echo "8f90ee28b74883a46dcf928efaecfcd452591753851283210edf2788cbdd73c1 $HOME/paranoid/connect.mjs" | shasum -a 256 -c
paranoid.red 提供的文件与此代码库中的 connect.mjs 逐字节完全一致;每个版本都会列出其 SHA-256,因此任何环节中被篡改的副本都会在运行前校验失败。
你也可以使用 src/、已发布的证明器和电路文件自行构建(snarkjs 0.7.6 发布于 npm,电路见 paranoiddotred/paranoid)。CI 会在每次推送时执行相同的构建,并在出现哪怕一个字节的差异时失败。
bash scripts/fetch-zk.sh && node build.mjs && git diff --exit-code connect.mjs
Claude Code
claude mcp add paranoid -e PARANOID_PAYER=$HOME/agent-wallet.json -- node $HOME/paranoid/connect.mjs mcp
Cursor(~/.cursor/mcp.json)
{
"mcpServers": {
"paranoid": {
"command": "node",
"args": ["/Users/you/paranoid/connect.mjs", "mcp"],
"env": { "PARANOID_PAYER": "/Users/you/agent-wallet.json" }
}
}
}
PARANOID_PAYER 指向一个 Solana 密钥对文件(由 Solana CLI 写入的 JSON 文件),其钱包中持有 USDC。它仅用于购买问题。如果你已在 paranoid.red 上购买了问题,请运行一次 node connect.mjs,然后粘贴 Keys 标签页中的连接器代码。
工具
| 工具 | 功能 |
|---|---|
ask | 使用新密钥向模型提问并返回答案。需要提供 question,也可以按需提供 model 和 system。 |
models | 列出模型,以及向每个模型发送一条消息的费用。 |
balance | 显示剩余问题数及其有效期截止日期。 |
buy | 使用 PARANOID_PAYER 中的钱包通过 x402 购买新的会员资格。 |
每个问题收费 0.002 USDC,至少购买 250 个;Agent 使用 x402 购买时,还需支付 0.30 USDC 的设置费。网关支付 Solana 网络费用。
如何保护隐私
购买问题时,您的计算机会生成一个秘密,并且只发送该秘密的承诺,该承诺会被加入 Solana 上的会员列表。每次提问时,连接器都会通过零知识证明,证明它持有某个仍有剩余问题的会员资格的秘密,并使用一个不指明会员身份的 nullifier 标记某个编号的问题已用。网关验证证明后,会将问题转发给模型,但它永远不会知道是哪个会员提出了问题;两次提问无法通过各自的证明关联起来,并且每个请求都通过独立连接传输。
网关运行在 Intel TDX 芯片中。在首次提问前,以及之后每隔十分钟,连接器都会检查 Intel 对该芯片的签名、它自行生成的 nonce,以及该芯片的构建版本是否在 PARANOID 的 2-of-3 多签保存在 Solana 上的批准构建版本列表中(p2UnUp...Sfw8);该列表通过 PARANOID 不运行的公共 Solana RPC 读取。随后,连接器会使用 Oblivious HTTP 将每个请求加密封装给该芯片,并通过独立中继发送。传输链路上的任何一方(包括 paranoid.red)都无法读取问题或答案,网关看到的也是中继的地址,而非您的地址。如果检查失败,则不会发送任何内容。node connect.mjs check 会运行检查并发送一个加密封装的请求,且不会消耗问题。
重复使用同一个编号的问题会泄露秘密。届时任何人都可以对该会员资格执行罚没,并重新计算其曾提出的所有问题,因此请将每个会员资格仅保存在一个位置。连接器会在使用前将每个编号写入磁盘,并在每次获取密钥前读取已用问题的公开列表,因此这种情况不会意外发生。
该设计沿用了以太坊基金会和 Open Anonymity Project 的 Vitalik Buterin 与 Davide Crapis 提出的 zkAPI。PARANOID 将其引入 Solana。
在任何 OpenAI 应用中使用 PARANOID 密钥
paranoid.red 上的 Keys 选项卡会提供一个以 sk-paranoid- 开头的密钥。它的使用方式与 OpenAI API 密钥相同,因此任何允许设置 OpenAI 基础 URL 的应用或 SDK,只需进行两项设置即可通过 PARANOID 运行。
Base URL https://paranoid.red/api/v1
API key sk-paranoid-...
使用 Node.js 的 OpenAI SDK:
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://paranoid.red/api/v1", apiKey: process.env.PARANOID_KEY });
const res = await client.chat.completions.create({
model: "default",
messages: [{ role: "user", content: "Explain zero-knowledge proofs in two lines." }],
});
console.log(res.choices[0].message.content);
使用 Python 的 OpenAI SDK:
import os
from openai import OpenAI
client = OpenAI(base_url="https://paranoid.red/api/v1", api_key=os.environ["PARANOID_KEY"])
res = client.chat.completions.create(model="default", messages=[{"role": "user", "content": "Hello"}])
print(res.choices[0].message.content)
使用 curl:
curl https://paranoid.red/api/v1/chat/completions \
-H "Authorization: Bearer $PARANOID_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"default","messages":[{"role":"user","content":"Hello"}]}'
GET https://paranoid.red/api/v1/models 会列出模型以及向每个模型发送一条消息的费用。网关不认识的模型名称会转发给默认模型,因此,坚持使用自定义名称的应用仍可正常运行。
该密钥是一组在您的设备上生成的证明,有效期至当天结束。对于需要持续运行的应用或 Agent,请改用连接器:它会为每个请求生成新密钥,因此密钥永远不会过期。
其他运行方式
同一个文件也可以在您的计算机上提供 OpenAI API,供任何支持该 API 的应用使用。
node connect.mjs # serves http://127.0.0.1:4141/v1, any API key works
PARANOID_PAYER=wallet.json node connect.mjs buy 500
完整文档请见 paranoid.red/docs/agents 和 paranoid.red/docs/connector。
从终端使用
node connect.mjs ask "What does RFC 9458 change for a relay?"
git diff | node connect.mjs ask "Review this change"
node connect.mjs chat -m <model id>
答案会输出到 stdout,其他内容会输出到 stderr,因此可以将其通过管道传递。
它下载的文件
连接器在首次提问时,会从 paranoid.red 下载证明器和电路,并将它们保存在 ~/.paranoid/zk。随附的还有 Intel 的 quote 验证器 @phala/dcap-qvl-web 0.3.3,与 npm 上发布的版本完全一致。证明器是 snarkjs 0.7.6,与 npm 上发布的版本完全一致;电路文件则是 paranoiddotred/paranoid 中发布的版本,任何人都可以对照检查。它们的 SHA-256 哈希值写在 connect.mjs 中;如果哈希不匹配,它就会拒绝运行任何内容。证明器在独立的 JavaScript Realm 中运行,无法访问网络、文件或进程,因此只有证明会离开该环境。SECURITY.md 中有详细说明。
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。