PARANOID について
PARANOIDは、Claude Code、CursorなどのMCPクライアント向けのプライベートなモデル接続ツールで、質問ごとにローカルで新しいゼロ知識証明を生成します。ゲートウェイは質問者を特定したり質問同士を関連付けたりせずに利用資格を検証し、MCPツールとOpenAI互換インターフェースも提供します。
主な機能
- 01質問ごとに新しいゼロ知識証明を生成
- 02モデルと質問料金の一覧表示
- 03残りの質問数と有効期限の確認
- 04Solanaウォレットとx402による質問購入
- 05OpenAI互換インターフェースの提供
活用シーン
- 01MCPクライアントからモデルへプライベートに質問
- 02エージェントによるx402での質問購入
- 03OpenAI API互換アプリからのモデル利用
- 04ターミナルからの質問や差分レビュー
MCP 対応
MCPサーバーとしてask、models、balance、buyツールを公開し、クライアントからのモデル利用、モデルと残高の確認、質問の購入に対応します。コネクターはリクエストごとにローカルでゼロ知識証明を生成します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
PARANOID MCP
Claude Code、Cursor、または任意の MCP クライアントから、AI モデルにプライベートに質問できます。質問ごとに、お使いのコンピューター上で新しいゼロ知識証明が生成されるため、PARANOID ゲートウェイは、どのメンバーが質問したのかを知ったり、ほかの質問と関連付けたりすることなく、支払い済みであることを確認できます。ネットワークアドレスも秘匿する方法については、表示される情報をご覧ください。
PARANOIDは、検閲されていないモデルも含め、DeepSeek、Kimi、Qwen、GLMなどのオープンモデルを実行します。質問はSolana上でUSDCを使って一度だけ購入でき、エージェントはx402を使って自分で購入することもできます。Solanaプログラムと、すべての証明の基盤となる回路はparanoiddotred/paranoidで公開されており、そのソースからメインネットにデプロイされたものと完全に同じバイト列が生成されます。
公式MCPレジストリでは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が必要です。すでに購入済みの質問を使う場合は、ターミナルで一度実行し、プロンプトが表示されたらコネクターコードを貼り付けてください。これにより、コードがシェルの履歴に残りません。起動するとローカルエンドポイントを提供し、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/と、公開されている証明生成器および回路ファイルから自分でビルドすることもできます(npmのsnarkjs 0.7.6、回路はparanoiddotred/paranoid)。CIはプッシュごとに同じビルドを行い、1バイトでも異なれば失敗します。
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には、USDCを保有するウォレットのSolanaキーペアファイル(Solana CLIが書き出すJSON)を指定します。これは質問を購入する場合にのみ必要です。paranoid.redですでに質問を購入している場合は、node connect.mjsを一度実行し、代わりにKeysタブのコネクターコードを貼り付けてください。
ツール
| ツール | 機能 |
|---|---|
ask | 新しいキーを使ってモデルに質問し、回答を返します。questionを指定し、必要に応じてmodelとsystemも指定します。 |
models | モデルの一覧と、各モデルに1メッセージを送る場合の質問数を表示します。 |
balance | 残りの質問数と、利用できる最終日を表示します。 |
buy | PARANOID_PAYERのウォレットからx402で新しいメンバーシップを購入します。 |
質問は1回あたり0.002 USDCで、最低250回分の購入が必要です。また、エージェントがx402で購入する場合は、0.30 USDCのセットアップ料金がかかります。ゲートウェイがSolanaネットワークの手数料を負担します。
プライバシーを守る仕組み
質問を購入すると、コンピューター上で秘密情報が生成され、そのコミットメントだけがSolana上のメンバーリストに登録されます。質問のたびに、コネクターは、質問が残っているいずれかのメンバーの秘密情報を保持していることをゼロ知識証明で示し、メンバーを特定しないヌリファイアーを使って、番号付きの質問を1つ消費済みとして記録します。ゲートウェイは証明を検証して質問をモデルに転送しますが、どのメンバーが質問したかを知ることはありません。また、証明を通じて2つの質問を関連付けることはできず、各リクエストは個別の接続で送信されます。
ゲートウェイはIntel TDXチップ内で実行されます。最初の質問の前と、その後10分ごとに、コネクターはチップに対するIntelの署名、コネクター自身が生成したノンス、チップのビルドが、PARANOIDの2-of-3マルチシグによってSolana上で管理されている承認済みビルドの一覧に含まれていることを確認します(p2UnUp...Sfw8)。この一覧は、PARANOIDが運用していない公開Solana RPCから取得します。その後、Oblivious HTTPを使ってすべてのリクエストをそのチップ向けに暗号化し、独立したリレーを経由して送信します。paranoid.redを含め、経路上の誰も質問や回答を読むことはできず、ゲートウェイに見えるのはあなたのアドレスではなくリレーのアドレスです。検証に失敗した場合は、何も送信されません。node connect.mjs checkを実行すると、検証と、質問を消費しない暗号化リクエストを1回実行できます。
同じ番号の質問を2回消費すると、秘密情報が明らかになります。その後、誰でもメンバーシップをスラッシュし、これまでにそのメンバーシップで行われたすべての質問を再計算できるため、各メンバーシップは1か所だけに保管してください。コネクターは各番号を使用前にディスクへ書き込み、キーを発行する前に毎回、消費済み質問の公開リストを読み込むため、誤ってこの事態が起こることはありません。
この設計は、Ethereum FoundationとOpen Anonymity ProjectのVitalik ButerinおよびDavide CrapisによるzkAPIに基づいています。PARANOIDはこれをSolanaに導入しています。
どのOpenAIアプリでもPARANOIDキーを使う
paranoid.redの「Keys」タブで、sk-paranoid-から始まるキーを取得できます。これはOpenAI APIキーと同じように使えるため、OpenAIのベースURLを設定できるアプリやSDKなら、2つの設定だけで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を呼び出すと、モデルの一覧と、各モデルに1メッセージを送る場合の料金が表示されます。ゲートウェイが認識していないモデル名はデフォルトモデルに転送されるため、独自のモデル名を要求するアプリも引き続き動作します。
このキーはデバイス上で生成された証明のセットで、日付が変わると使えなくなります。常時稼働するアプリやエージェントでは、代わりにコネクターを実行してください。リクエストごとに新しいキーが生成されるため、期限切れになることはありません。
その他の実行方法
同じファイルを使って、OpenAI APIをコンピューター上で提供できるため、OpenAI 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>
回答は標準出力に、それ以外は標準エラー出力に出力されるため、パイプでつなぐことができます。
ダウンロードするファイル
最初の質問時に、コネクターは paranoid.red から証明器と回路をダウンロードし、~/.paranoid/zk に保存します。これらには、npm で公開されているものとまったく同じ Intel のクオート検証ツール、@phala/dcap-qvl-web 0.3.3 が含まれています。証明器は npm で公開されているものとまったく同じ snarkjs 0.7.6 であり、回路ファイルは paranoiddotred/paranoid で公開されているものなので、誰でも比較できます。SHA-256 ハッシュは connect.mjs 内に記載されており、一致しないものは実行されません。また、証明器はネットワーク、ファイル、プロセスにアクセスできない別の JavaScript 実行環境で動作するため、そこから外部に出るのは証明だけです。詳細は SECURITY.md をご覧ください。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。