Verax について
Veraxは、ポリシー制御や承認、操作記録を必要とするチーム向けのMCPサーバーです。エージェントのツール呼び出しを実行前に判定・署名し、実行後に効果を記録と照合します。
主な機能
- 01ツール呼び出し前のポリシー判定
- 02承認・拒否の署名付き記録
- 03効果と決定記録の照合
- 04保留中の呼び出しへの手動承認
- 05台帳のオフライン検証
活用シーン
- 01エージェントのツール呼び出しや送信の制限
- 02特定操作への承認必須化
- 03決定記録と実行効果の確認
- 04サーバーなしでの台帳署名検証
MCP 対応
Veraxはエージェントとツールの間で呼び出しを仲介するMCPサーバーです。MCPクライアントにポリシーで制御されたツールを公開し、決定と効果を記録して後から照合します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @verax-ai/bodyVERAX_ISSUERIssuer the agent's token must carry. The body refuses to start without one; `verax doctor` names what is missing.VERAX_JWKS_URLWhere the body fetches the keys that verify that token.VERAX_AUDIENCEAudience the token must name, so a token minted for something else is refused.VERAX_STATE_DIRDirectory the ledger, keys and approvals live in. It stays on this machine.VERAX_POLICY_FILEPolicy the gate applies. @verax-ai/proxy ships policy/default.json, which denies what it does not name.VERAX_BINDhost:port the body listens on. Anything but loopback needs VERAX_TLS_TERMINATED=1.VERAX_INVENTORY_FILERoster document the body serves; the format is @verax-ai/inventory.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Verax
エージェントが行動する前に尋ねる、身体。
掲載先: npm · Glama · MCP Registry · MCP Market · mcp.so · Docker Hub · Zenodo
Verax は、エージェントとそのツールの間に位置する MCP サーバーです。すべてのツール呼び出しはポリシーゲートを通過し、実行前に署名付きの判断記録が残されます。また、実行されたすべての呼び出しについて、効果を記録する行が残され、後からその記録と照合されます。拒否も承認と同じ方法で記録されます。ポリシーだけでは判断できない呼び出しは、オペレーターが承認するまで保留されます。オペレーター用の窓口を設定すれば、このマシン上からでも、パスキーを使って別のデバイスからでも承認できます。台帳は本体が動作するマシン上に保管され、本体は認証が設定されている場合にのみ起動します。デフォルトのトークンはありません。
破ってみてください。報奨金をお支払いします。 エージェントのアカウントで、拒否された呼び出しを許可させる方法、判断記録なしで呼び出しを実行する方法、またはサービスのコード、鍵、台帳を変更する方法について、有効な報告1件につき USD 100 をお支払いします。総予算は USD 500 です。条件: SECURITY.md。
VERAX Teknoloji によるプロジェクトです。姉妹プロジェクト: Conarium · Tugra · Cedulon。判断記録には Cedulon の記録形式を使用します。
2026年10月15日時点の Verax の比較:エージェントのツール呼び出しを制御、記録、承認する40のプロジェクトのうち、9つを4つの質問に基づいて比較しています。すべての項目に出典を記載し、Verax の不足点も示しています。 verax-ai.com/compare.html。
動作を見る
npx @verax-ai/body demo
この録画は、ターミナルで承認の質問に y と答え、金額を入力した1回の実行結果です。実行には約1秒かかりました。ここでは読みやすいよう、ゆっくり再生しています。
承認の質問に答えるターミナルがない場合の出力:
verax demo
memory.put / memory.get
allowed; two signed records
message.send -> [email protected]
refused egress-blocked (signed)
ref 6c6e4925-b769-4a8b-8fc4-e2443613a5b6
spend 100 minor USD sample-merchant
held
no terminal to ask, so it stays held (run this in a terminal to be asked)
audit.explain of the refuse
finding none
trust-root own-key
chain and signatures read back
records 5
effects 3
ledger removed on exit (run with --keep to keep it and check it with verax verify)
Not shown here: data masking arrives with a downstream server such as Conarium; statement reconciliation needs a real statement (verax reconcile).
Node 22.6 以降、@verax-ai/body 0.2.1 以降が必要です。このコマンドは、メモリへの書き込みと読み取りの許可、ポリシーリストにないホストへのメッセージ送信の署名付き拒否、そしてこのマシン上でオペレーターの承認を待つ支払いを記録します(ターミナルで y と答えてから金額 100 を入力すると承認されます。0.5.0 までは、デモで2つ目の質問は表示されませんでした)。
--keep を指定すると、一時的な台帳がディスクに残ります。verax verify <dir> は本体なしで台帳を読み取ります。台帳を本体なしで読み取るを参照してください。台帳を残して検証するには:
npx @verax-ai/body demo --keep
npx -y -p @verax-ai/body verax verify <the directory it printed>
同じルールをアニメーションで
4つの短いエピソードでは、端末の代わりに登場人物を使い、同じゲートを描きます。サンプルシナリオです。シーンは three.js で描画され、音声は ElevenLabs で生成されています。
エピソード1「$1,850」:支払いは、担当者がスマートフォンで承認するまで保留されます。また、記録の金額を1セント変更すると、署名が無効になります。
https://github.com/user-attachments/assets/772ae1c4-2697-47a0-a228-36f0508b0d93
エピソード2「ルールがなければ、先へは進めない」:ルールのない呼び出しは拒否され、同じ呼び出しを新しい名前で行っても再び拒否されます。どちらの拒否にも署名が付けられます。
https://github.com/user-attachments/assets/4fb86627-3310-4f10-b1a9-059d8fcffb28
エピソード3「赤いレバー」:オペレーターがボディを停止すると、それ以降の呼び出しはすべて拒否され、署名が付けられます。すでに実行中の呼び出しは中断されません。
https://github.com/user-attachments/assets/8d19eed9-3359-46b3-bd77-f2b1b1c4dd75
エピソード4「誰が承認した?」:保留中の支払いは、マシン上で verax approve が実行されるまで待機します。エージェントは承認できず、承認者のオペレーター ID が記録に残ります。
https://github.com/user-attachments/assets/0b8aade4-a970-4b63-835e-4837e2a39cc9
エージェントを接続する
昇格された状態で実行する verax install と verax approve は、管理者だけが変更できるこのプログラムのコピーを実行します。お使いのアカウントで変更できるコピーは拒否されます。Windows では、オペレーター用ドア(verax install --operator-door <origin>)を通じたパスキーで、昇格されたシェルを使わずに承認できます。オペレーター用ドアがない場合は、昇格された CLI の approve を使用します。現在のアカウントを昇格させるのではなく、別の管理者アカウントから実行する必要があります。同じユーザーの昇格されたシェルは、そのユーザーの環境変数と PowerShell プロファイルを引き継ぐため、エージェントがそれらを設定できるからです。そのシェルで NODE_OPTIONS をクリアします(Remove-Item Env:NODE_OPTIONS)。別のアカウントの PowerShell は -NoProfile で起動します(昇格されたシェルでは通常、お使いのアカウントが変更できる $PROFILE が実行されます)。
npm install -g --prefix "$env:ProgramFiles\verax-cli" @verax-ai/body
& "$env:ProgramFiles\verax-cli\verax.cmd" install
Linux と macOS では、root が所有する Node(ディストリビューションの /usr/bin/node、または /opt/verax-node/<dir>/bin/node)を使用します。起動元の Node をお使いのアカウントで変更できる場合、インストーラーはその手順を表示します。昇格されたコマンドを env node で起動しないでください。
sudo npm install -g --prefix /opt/verax-cli @verax-ai/body
sudo /usr/bin/node /opt/verax-cli/lib/node_modules/@verax-ai/body/dist/cli.js install
このコマンドは署名を確認したうえで、npm レジストリから @verax-ai/body を管理者が所有するディレクトリにインストールし、その Node を実行して、台帳をサービスアカウントのもとで保持します。Windows では、エージェントトークンは %ProgramData%\Verax\agent-token\<your SID>\agent.token にあります(Administrators と SYSTEM にはフルコントロール権限があり、お使いの SID にはファイルの読み取り権限とディレクトリの読み取り・実行権限があります)。Linux と macOS では、uid で実行される子プロセスが、標準入力から ~/.verax/agent.token に書き込みます。そのファイルを読み取る Claude Code の行が表示されます。8787 番ポートが使用中ですか? verax install --port 8797 を実行してください。Windows では、Node は nodejs.org の全ユーザー向けインストーラーでインストールする必要があります。お使いのアカウントで書き換えられる Node は拒否されます。macOS では、公式 tarball を root として /opt/verax-node に展開します(root:wheel で、グループやその他のユーザーは書き込み不可)。Linux でも同じ場所 /opt/verax-node(root:root)を使用します。SELinux はここに usr_t のラベルを付けます。SELinux システムでのインストールには、bin_t または usr_t のラベルが付いた Node が必要です(ディストリビューションの Node には付いていますが、/usr/local/lib 以下の tarball には付いていません)。必要な修正を行う 1 行のコマンドが表示されます。その後、サービスは unconfined_service_t で実行されます。境界となるのは、サービスアカウントとファイル権限です。
保留中の呼び出しは verax approve で承認します。また、インストール時に --operator-door でオリジンを指定した場合は、verax operator enroll のペアリングコードで登録したパスキーを使い、別のデバイスからオペレーター用ドアを通じて承認できます。パスキーパネル(verax desktop)はまだリリースされていません。Windows では、現在のアカウントを昇格させるのではなく、別の管理者アカウントから、Remove-Item Env:NODE_OPTIONS を実行した後の -NoProfile PowerShell で & "$env:ProgramFiles\verax-cli\verax.cmd" approve を実行します。Linux と macOS では、root が所有する Node を指定します:sudo /usr/bin/node /opt/verax-cli/lib/node_modules/@verax-ai/body/dist/cli.js approve または sudo /opt/verax-node/<dir>/bin/node /opt/verax-cli/lib/node_modules/@verax-ai/body/dist/cli.js approve。アンインストールも同じ方法で、approve を uninstall に置き換えてください。
境界としては機能しない、ご自身のユーザー環境で試すには:
verax init --local ~/.verax
verax serve --env-file ~/.verax/verax.env
claude mcp add --transport http verax http://127.0.0.1:8787/mcp --header "Authorization: Bearer $(cat ~/.verax/local-issuer/agent.token)"
トークンはゲートを通じてメモリの読み書きができますが、承認はできません。付属のポリシーでは、ルールを追加するまで spend は拒否されます。ポリシーによって保留された呼び出しは、このマシンでの verax approve、または設定済みの場合はオペレーター用ドアを通じた承認を待ちます。docs/THREAT_MODEL.md を参照してください。
Conarium との連携
@verax-ai/body 0.2.2 以降では --with-conarium を受け付けます。0.2.1 にはこのフラグはありません。このフラグを指定すると、npx が npm から @conarium-ai/core をダウンロードして子プロセスとして実行します。そのため、ネットワーク接続が必要です。
Conarium は行をマスクし、サンプルポリシーでは public.secrets テーブルへのアクセスを拒否します。Verax は各呼び出しを自らのツールと同じゲートに通し、署名付きの記録と回答のハッシュを保持します。また、ポリシーに記載されていない下流ツールへの呼び出しは、子プロセスに届く前に拒否します。Conarium がエラーを返した場合、body はエラーが返されたことを呼び出し元に伝えますが、エラーの内容は伝えません。
承認の質問に回答するターミナルがない場合に表示される内容:
verax demo
memory.put / memory.get
allowed; two signed records
message.send -> [email protected]
refused egress-blocked (signed)
ref 6c6e4925-b769-4a8b-8fc4-e2443613a5b6
spend 100 minor USD sample-merchant
held
no terminal to ask, so it stays held (run this in a terminal to be asked)
conarium.query customers
allowed; masked by Conarium before the rows left it
measured [MASKED_PII] on every email and card
conarium.query public.secrets
allowed by this gate; Conarium answered with an error and no rows
recorded as a failed call
conarium.list_tables
refused no-rule (signed)
refused by this gate; the downstream server never saw the call
audit.explain of the refuse
finding none
trust-root own-key
chain and signatures read back
records 8
effects 5
ledger removed on exit (run with --keep to keep it and check it with verax verify)
Not shown here: a real database (these are Conarium's sample rows); statement reconciliation needs a real statement (verax reconcile).
同梱内容
| パッケージ | 内容 |
|---|---|
@verax-ai/body | MCP サーバーと verax コマンドです。serve、install、uninstall、init、doctor、approve、operator、downstream、reconcile、witness、halt、resume、unlock を提供します(desktop はまだリリースされていません)。 |
@verax-ai/proxy | body の基盤となる判定プロキシです。ポリシー、署名付き記録、台帳、explain、reconcile を提供します。 |
@verax-ai/inventory | body が提供し、パネルに一覧表示される名簿ドキュメントと、その厳格なパーサーです。 |
3 つのパッケージは同時に公開され、同じバージョンが付与されます。現在のバージョンは docs/STATUS.md の機能マトリックスに記載されており、npm 上のバージョンと同じです。body は MCP レジストリにも io.github.verax-ai/verax として掲載されています。そのバージョンに含まれる機能、含まれない機能、および各項目を裏付けるテストは、docs/STATUS.md 冒頭の機能マトリックスに記載されています。
ベンダーなしで台帳を読み取る
ベンダーの稼働中のサービスだけが読み取れる台帳は、買い手が借りている証拠であって、所有している証拠ではありません。verax verify は、稼働中のプロセスもネットワーク接続も必要とせず、状態ディレクトリを単独で読み取り、チェックごとに別々の行に結果を表示します。各チェックは個別に失敗するためです。npx @verax-ai/body demo --keep が残した台帳のコピーに対して、0.6.0 は次のように表示します。
$ verax verify ./verax-state
ledger ./verax-state
decisions 5
effects 3 (3 bound to a decision, 0 with none)
signatures 5 verify, 0 do not
chain unbroken
verified with the key carried in these files
verified against the key carried in the records themselves: this shows the files are internally consistent, not that the key was ever trusted. Pin a key you hold to check that.
effects with the key carried in these files
verified against the key carried in the self effects themselves: this shows the files are internally consistent, not that the key was ever trusted. Pin a key you hold to check that.
same-org with no key
no same-org effects, so no witness key was used
checkpoints with no key
no checkpoints, so no checkpoint key was used
index: 5 ref(s), each still a decision
effect completeness checked
inputs: 5 record(s), each with its inputs row
tail: no checkpoint; removing the newest records with their effects is not detectable from these files
control: no control records
anchors: none (no checkpoint is registered with a transparency service)
approval signatures signed-verified 0 · signed-failed 0 · unsigned-http 0 · cli 0
no operator key was found in these files
control signatures signed-verified 0 · signed-failed 0 · unsigned-http 0 · cli 0 · file 0
starts 1; largest gap none; previous beat missing at 1792241614080; 1 of 1 signed verify under the in-ledger record key
VERIFIED
デモでは何も承認せず、何も停止しないため、署名数はどちらもゼロです。オペレーター用の窓口から行われた承認は、approval signatures 行にカウントされます(リモート承認)。tail と anchors は、後述するチェックポイントに関する項目です。starts はハートビートを要約します(無音状態を監視する)。
verified with the key carried in these files という2つの項目が要点です。台帳をその隣にある鍵で検証しても、ファイル同士の整合性が確認できるだけで、それ以上のことは証明されません。台帳を書き込める者なら、鍵も書き換えられるためです。--key <public.pem> を渡すと、手元に保持している鍵のコピーを使って判断レコードを検証でき、結果には代わりに a key you supplied と表示されます。エフェクトには別の鍵で署名します。self 行はエフェクト鍵で検証されます。鍵を固定する場合は --effect-key <public.pem> を指定し、そうでない場合は最初の self 行から鍵を1つ取得します。same-org 行は証人鍵で検証されます。鍵を固定する場合は --witness-key <public.pem> を指定し、そうでない場合は最初の same-org 行から鍵を1つ取得します。same-org 行があるときに --effect-key を固定するには、--witness-key も指定する必要があります。また、self 行があるときに --witness-key を固定するには、--effect-key も指定する必要があります。そうしない場合、結果は検証済みになりません。これらの行はいずれも同じことを示しています。ファイル同士は整合していますが、その鍵をかつて自分が所有していたことは示していません。チェックポイントには証人鍵で署名します。各チェックポイント行は1つの鍵で検証されます。鍵を固定する場合は --checkpoint-key <public.pem> を指定し、そうでない場合はチェックポイントファイルから鍵を1つ取得します。この場合も、整合性は信頼を意味しないという注記が付きます。tail には、署名が検証されたチェックポイントだけがカウントされます。ファイルを書き換えられる者は、そのファイルを古い有効なプレフィックスまで巻き戻し、その後のレコードも一緒に戻すことができます。これを検知できるのは、別の場所に保持されたチェックポイントだけです。--json はパイプライン用に同じ結果を出力します。検証に成功した場合の終了コードは0、成功しなかった場合は1です。また、台帳がないディレクトリで何も出力されずに成功することはありません。
レコードは、古い多態的な -8(EdDSA)ではなく、アルゴリズム -19(Ed25519、RFC 9864)を使用する COSE_Sign1 です。一部の COSE ライブラリは、まだ -19 に対応していません。go-cose 1.3.0 と pycose 1.1.0 は、いずれもこれを拒否します。対応状況は go-cose#224 と pycose#126 で追跡されています。verax verify は、どちらのライブラリにも依存しません。
私たち以外の検証ツール
test-vectors/ は、検証ツールが報告すべき判定と段階をそれぞれ記した、固定された台帳のセットです。2名が独自の検証ツールで vectors-v1 のセットを実行し、その結果を公開しています。
- Tymofii Pidlisnyi(Agent Passport System):APS 適合性テストスイートのランナーを使用。全16個のベクトルについて、台帳全体の判定ではなく、段階ごとの部分的な比較を実施 (実行結果)。
- Roberto Locatelli(cryptovalid-opencore):ドラフト、RFC、ベクトルの README から作成したクリーンルームのチェッカーを使用。チェックポイントを証人鍵で検証した場合、判定は16件中16件、最初に失敗する段階は16件中15件で一致しました。一致したもののうち1件は、ベクトルを読んだ後に追加されたルールによるもので、その点は実行結果にも記載されています (実行結果)。
実行結果が一致することは、別の検証ツールがこれらのエンコーディングを読み取り、同じ段階で同じ判定に達することを示しています。これは、ボディの独立監査ではありません。
インストール
npm install -g @verax-ai/body
verax --help
verax doctor
npm レジストリに接続できないホストでは、オフラインバンドルからインストールできます。手順はdocs/OFFLINE_INSTALL.mdに記載されています。
すべてのプロセスが昇格しているアカウント(組み込みの Administrator、または EnableLUA=0)では、ユーザーが書き込み可能な npm プレフィックスからのコマンドは拒否されます。管理者が所有する %ProgramFiles%\verax-cli のコピーを使用してください。
Node 22.6 以降が必要です。ボディは、VERAX_BIND(デフォルトは 127.0.0.1:8787)の /mcp で Streamable HTTP を介して MCP を通信します。リッスンを開始する前に、発行者、JWKS URL、オーディエンス、状態ディレクトリ、ポリシーファイルが必要です。不足しているものは verax doctor で確認できます。環境変数と実行手順はpackages/body/README.mdに記載されています。
ツール
ポリシーによって、トークンのスコープから呼び出せるツールが決まります。
packages/proxy/policy/default.json で指定されていないものは拒否されます。
| ツール | 説明 |
|---|---|
memory.get | ゲートの背後に保存され、テナントごとに管理されているメモリー項目を1つ読み取ります。 |
memory.put | ゲートの背後に保存され、テナントごとに管理されているメモリー項目を1つ書き込みます。 |
audit.explain | 署名付き台帳から、チェーン、署名、検出事項とともに、判定内容を読み取ります。 |
message.read | 受信トレイを読み取ります。 |
message.send | 送信トレイに書き込みます。ポリシーで許可リストに指定されたホストにのみ到達します。 |
spend | ポリシーで定められた上限、支払先リスト、1日の限度額に従って支払いを承認し、記録します。ポリシーで指定されている場合は、オペレーターの承認待ちになります。ボディが資金を移動することはありません。 |
ゲート以外でボディが行うこと
以下の各項目は、docs/STATUS.mdの機能マトリックスの各行に対応しています。そこでは、バージョン、行わないこと、およびその機能が失われた場合に失敗するテストとともに記載されています。
- 承認:保留中の呼び出しは、このマシン上で
verax approveを実行するか、別のデバイスからパスキーとそのリクエストに対するアサーションを使ってオペレーター用ドア経由で承認できます。オペレーター用ドアは、オリジンが指定されていない限り無効です。Windows では、CLI の承認は別の管理者アカウントから実行されます。verax desktopのパスキーパネルはまだリリースされていません。承認者のオペレーター ID は、ハッシュによって署名付きレコードに紐付けられます。 - 証人:
verax witnessは2つ目のプロセスから効果行に署名し、永続的なチェックポイントを書き込みます。これがない場合、証人クラスはselfのままです。 - 停止と取り消し:
verax haltを実行すると、それ以降のすべての呼び出しが署名付きの拒否になります。取り消されたトークン ID は、レコードが書き込まれる前に拒否されます。 - 照合:
verax reconcileは、記録された支出とカード明細のエクスポートを照合し、一致した行、架空の行、承認済みだが未払いの行を示します。 - テナントキー:メモリーと受信トレイは、トークンの発行者とサブジェクトから導出されたキーを使って保存されます。別のテナントの ID には、署名付きの拒否で応答します。
- 上限:レートと日次のカウンター、拒否を記録できない場合のディスク容量不足による拒否(HTTP 507)、および送信先の許可リストがあります。読み取れないカウンターはフェイルクローズします。
- Doctor とハートビート:最初の呼び出しで不足や古さが判明する前に、
verax doctorでそれらを確認できます。
無反応を監視する
実行中のボディは、アイドル状態でもパルスを発します(デフォルトは 10 秒ごとです。VERAX_HEARTBEAT_EVERY_MS で設定でき、最小値は 1,000 ms です)。starts.jsonl の開始行には前回のパルスからの間隔が記録され、verax verify <stateDir> でオフラインのまま集計できます。0.5.0 以降、開始行にはレコードキーで署名が付与されます。
verax watch ./verax-state --max-silence 30s
verax watch ./verax-state --once
verax watch --url https://host/healthz --token-file ./audit.token --once
verax watch ./verax-state --on-silence exec --exec "node isolate.mjs"
読み取れないパルス、古いパルス、または未来に大きくずれたパルスは無反応として扱われます。ローカルの監視はデフォルトで停止します。復旧しても再開されません。オペレーターは既存の再開手順を使用する必要があります。リモート監視は無反応を報告しますが、リモートから停止することはできません。トークンはファイルからのみ読み取られます。ループバック以外では HTTPS が必要です。無反応のエピソードごとに exec コマンドをシェルなしで 1 回実行し、その環境には VERAX_WATCH_REASON が設定されます。空白を含む実行ファイル名や引数は引用符で囲んでください。--once は、稼働中なら 0、無反応なら 3、使用方法に誤りがあれば 2 で終了します。継続監視では、無反応と復旧のエピソードごとに JSON の行を 1 行出力し、max-silence/3 の間隔でポーリングします。実行場所はオペレーターが選択できます。同じホスト上の監視はそのホストの信頼を共有するため、レジャーと監視プロセスの両方が消失した場合、独立した証拠にはなりません。
クライアントを接続する
ボディはデフォルトで http://127.0.0.1:8787/mcp をリッスンします。クライアント設定は次のようになります。トークンは発行元から取得します。
{
"mcpServers": {
"verax": {
"url": "http://127.0.0.1:8787/mcp",
"headers": { "Authorization": "Bearer <token from your issuer>" }
}
}
}
ステータス
ツリーに含まれるものと、未証明のままのものは、docs/STATUS.md に項目ごとに記載されています。このリポジトリ内の内容は、そのファイルに記載された範囲を超えて何かを主張するものではありません。また、そこにある段落はリリースではありません。脅威モデルについては docs/THREAT_MODEL.md を、脆弱性の報告方法については SECURITY.md を参照してください。
ツリー内のその他の内容
apps/panelは、アカウンタビリティを確認する画面です。署名済みレジャーから読み込んだ記録一覧、ブラックボックス、ステータス画面があります。非公開で、公開されていません。パネルのセッションではコードフローを使用します。アクセストークンはメモリ内に保持され、更新時に破棄されます。リクエストに Authorization ヘッダーがない場合、Vite が.env.localのVERAX_DEV_TOKENを/apiに付与することがあります(デスクトップ MCP ブレインおよびテスト用)。scripts/dev-issuer.mjsは開発専用であり、本番用の認可サーバーではありません。GET /authorize(PKCE S256)とPOST /tokenを提供し、トークンを--outに書き込み、表示することはありません。VERAX_DEV_ISSUER_PORT(デフォルトは 8790)でリッスンします。NODE_ENV=productionの場合は終了します。scripts/demo-box.mjsは開発専用です。開発用発行元とボディをループバック上で、一時的なレジャーとともに起動する単一のプロセスです。発行元のコードフローを通じて短命トークンを自ら発行し、ディレクトリのビルドチェックのように独自のトークンを保持できないサンドボックス向けに、標準入出力経由で MCP と通信します。ボディ自体は変更されません。すべての呼び出しは引き続きゲートを通過して記録され、spendは常に保留され、承認するオペレーターもいません。NODE_ENV=productionの場合は終了します。デプロイ用ではありません。
開発
npm ci
npm test # guards, build, typecheck, unit and cost suites, panel
npm run pack:smoke # pack the three packages and install them elsewhere
CI は Linux 上で root 以外のユーザーとしてテストスイートを実行し、さらに Windows 上でも実行するほか、プロキシのパフォーマンスチェックも行います。リリースは Actions タブから行います。release.yml は npm のトラステッドパブリッシングとプロビナンスアテステーションを使用して 3 つのパッケージを公開し、その後 mcp-registry.yml が npm で新しいバージョンを確認してからレジストリの記録を更新します。どちらも push では実行されません。
リリースのたびに、docs/PLATFORMS.md に記載されたプラットフォームでテストされ、各行には対応する CI 実行へのリンクがあります。
貢献する場合、または記載されていないプラットフォームでの実行結果を報告する場合は、CONTRIBUTING.md を参照してください。
ライセンス
Apache-2.0。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。