honesty-mcp について
honesty-mcpは、11個のTypeScript製honesty SDKをMCPツールとして公開し、コーディングエージェントによる製品の主張、証拠、判断の監査に利用できます。各キットの実装をそのまま呼び出し、構造化された結果を返します。
主な機能
- 01引用と証拠の裏付けを確認
- 02信頼性・真正性・来歴の主張を評価
- 03公開主張を登録・検証
- 04改ざん検知型監査チェーンを追記・検証
- 05判断とエンジン・人間間の乖離を評価
- 06エージェントレシートとコスト管理のひな型
活用シーン
- 01AI生成テキストの引用構造を確認
- 02複数ソースの証拠による支持を比較
- 03ランキングや判断の変数依存を監査
- 04監査イベントを記録しチェーンを検証
MCP 対応
honesty SDKのチェック、スコアリング、監査、ひな型作成ツールをMCPクライアントに公開します。既定で13個のツールが利用でき、呼び出し側のコードを実行するツールは無効です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y honesty-mcpHONESTY_MCP_ENABLE_CODE_EXECSet to exactly 1 to turn on the tools and inputs that run JavaScript sent by the calling agent (check_payout_invariance runtime mode, check_mutation_invariance, compute_divergence's groupBySource). Off by default; any other value leaves them off. Turning it on is not a sandbox: the code runs with this server's filesystem, network and environment access.HONESTY_MCP_WORKER_TIMEOUT_MSTimeout in milliseconds for the worker thread (a time limit, not a sandbox) that runs caller-supplied JS source (check_payout_invariance runtime mode, check_mutation_invariance, compute_divergence's groupBySource). Defaults to 10000.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
14掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| text | string | はい | チェックする AI 生成テキスト(最大 2,000,000 文字)。引用マーカーにはツールキットのデフォルト規約 `[[cite:id]]` を使用します(例:"The bridge opened in 1932 [[cite:source-a]].")。このツールはデフォルトのマーカー/プレースホルダーパターンを使用します。生成器が異なる引用構文(例:"[1]")を出力する場合は、呼び出す前にマーカーを `[[cite:1]]` に書き換えるか、カスタム markerPattern を指定して grounding-kit を直接使用してください。 |
| evidence | object | はい | 引用マーカー ID -> それが裏付けるとされる証拠テキスト/範囲のマップです。これは閉世界です。`text` で引用されたマーカーの ID がここにキーとして存在しない場合は invalid と判定され、証拠テキストが文を妥当に裏付けない場合も invalid と判定されます。証拠がまったくない場合は {} を渡してください(この場合、すべての引用が invalid となり、引用のない主張は 'ungrounded' となります)。 |
詳細
honesty-mcp
ブラウザーでキットを試す → · honesty kitsの一部です。AI 製品が行う主張を検証する、小規模なチェックのコレクションです。
MCP(Model Context Protocol)サーバーです。すでに構築済みで、実行時の依存関係がない「honesty SDK」TypeScript ライブラリ 11 個をツールとして公開します。MCP 対応のコーディングエージェント(Claude Code、Claude Desktop、その他の MCP クライアント)が、製品の構築や監査の際に呼び出せます。根拠付き引用のチェック、証拠の裏付け評価、ペイアウト/変更不変性のチェック(あらゆる入力に対する形式的証明ではなく、シナリオテスト済み)、信頼性/真正性のスコアリング、来歴に関する主張の検証、主張レジストリ、改ざんを検知できる監査チェーン、推奨/判断の評価とエンジン対人間の差異分析に加え、「このコンテンツをチェックする」という形に当てはまらない、実行時ライブラリ用キット 2 個のスキャフォールディングを提供します。
このサーバーは意図的に薄い実装です。各ツールは、Zod 入力スキーマと、ラップ対象のキットから実際の変更されていないエクスポートをインポートして呼び出すハンドラーだけで構成されています。基盤となるロジックを再実装することはありません。
クイックスタート
claude mcp add honesty-mcp -- npx -y honesty-mcp
続いて、コーディングエージェントに、草案の回答とその出典に対して check_grounding を実行するよう依頼してください。各文は、根拠あり、プレースホルダー、根拠なし、または無効(引用先の出典が証拠に存在しない状態)のいずれかとして返されます。チェックするのは構造のみであり、出典が真実かどうかは判断しません。
デフォルトでは 13 個のツールが表示されます。エージェントが送信する JavaScript を実行する 3 つのツールは、HONESTY_MCP_ENABLE_CODE_EXEC=1 を設定しない限り無効です。まずコード実行ツールに関する注意をお読みください。
インストール
honesty-mcp は npm で公開されており、兄弟関係にある 11 個の「honesty SDK」キットを通常のレジストリ依存関係(ローカルの file: パスではなく、semver 範囲)としてラップしています。npm install(または通常の npx)で、事前にほかのものをチェックアウトすることなく、公開レジストリからすべてを解決できます。
インストール手順なしで実行する最速の方法:
npx honesty-mcp
または、プロジェクトに追加します。
npm install honesty-mcp
MCP クライアントへの追加
Claude Code:
claude mcp add honesty-mcp -- npx -y honesty-mcp
mcpServers 設定を読み込むその他の MCP クライアント(Claude Desktop の claude_desktop_config.json も同じ形式を使用します):
{
"mcpServers": {
"honesty-mcp": {
"command": "npx",
"args": ["-y", "honesty-mcp"]
}
}
}
3 つのツールは、呼び出し元のエージェントが送信する JavaScript を実行するため、デフォルトでは無効です。使用するには、サーバーの環境変数に HONESTY_MCP_ENABLE_CODE_EXEC=1 を追加してください(まずコード実行ツールに関する注意をお読みください)。
claude mcp add -e HONESTY_MCP_ENABLE_CODE_EXEC=1 honesty-mcp -- npx -y honesty-mcp
{
"mcpServers": {
"honesty-mcp": {
"command": "npx",
"args": ["-y", "honesty-mcp"],
"env": { "HONESTY_MCP_ENABLE_CODE_EXEC": "1" }
}
}
}
このサーバーは stdio トランスポートで動作します。stdin から JSON-RPC リクエストを読み取り、stdout にレスポンスを書き込みます。stdout をクリーンな JSON-RPC チャネルに保つため、stderr へのログ出力は起動時の 1 行のバナーのみです。これは、Claude Code、Claude Desktop、およびほとんどのローカル/CLI MCP クライアント連携がローカル実行のサーバーに想定するトランスポートです。HTTP サーバーではなく、アクセス用のポートもありません。
MCP レジストリへの掲載
honesty-mcp には、公式 MCP レジストリに io.github.lkopietz3-byte/honesty-mcp という名前で掲載できるよう、公式スキーマに準拠した server.json も含まれています。掲載は、このパッケージが npm に公開された後にメンテナーが手動で一度だけ行う作業です。このリポジトリの CI や npm publish の一部として実行されるものではありません。レジストリの公式ドキュメントに記載された正確なコマンドは次のとおりです
(公開ガイド、
CLI リファレンス)。
# 1. Install the publisher CLI (macOS/Linux)
curl -L "https://github.com/modelcontextprotocol/registry/releases/latest/download/mcp-publisher_$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/').tar.gz" | tar xz mcp-publisher
sudo mv mcp-publisher /usr/local/bin/
# 2. Log in with GitHub (proves ownership of the io.github.lkopietz3-byte namespace)
mcp-publisher login github
# 3. Publish (validates server.json against the schema, then submits it)
mcp-publisher publish
package.json の mcpName フィールド(io.github.lkopietz3-byte/honesty-mcp)は、server.json の name フィールドと完全に一致している必要があります。これにより、レジストリは npm パッケージとレジストリの掲載情報が同じ公開者のものだと検証します
(package-types.mdx、「所有権の検証」を参照)。
ツール
9 種類のコンテンツチェックキット、12 個のツール(キット 1〜9:実際のコンテンツやデータを渡すと、構造化された判定結果が返されます):
| ツール | ラップするもの | 目的の概要 |
|---|---|---|
check_grounding | grounding-kit | AI 生成テキストの引用構造を文ごとに確認します。引用のない主張、誠実なプレースホルダー、マーカーが欠けている引用、または根拠と語彙的に一致しない引用を検出します。構造のみを対象としており、根拠が真実かどうかは検証しません。単語の重なりを使う照合器は、忠実な言い換えを不正と判定する一方で、単語の大半が重なっていると誤った数値や否定された主張を受け入れることがあります。そのため、invalid は「人に確認してもらう」と解釈してください。 |
corroborate_evidence | corroboration-kit | 独立した情報源の票数ではなく、証拠の方向性(支持/矛盾/混在/なし)と段階的な判定を報告します。corroboration-kit 0.3 以降では、情報源は独立した出所ごとに数えます(origin を宣言しない限り、同一サイトのページはまとめて 1 件として数えます)。独立性は検証されず、confirmed は「矛盾が確認された」という意味の場合もあるため、まず方向性を確認してください。 |
check_payout_invariance | payout-invariance-kit | 指定したシナリオについて、ランキングエンジンの出力が支払い額の大小によって変わるか(runtime モード。HONESTY_MCP_ENABLE_CODE_EXEC=1 の場合を除き無効)、または送信したソーステキストに支払い識別子が含まれるか(static-imports モード。常に利用可能で、ディスク上のファイルを読み取ることはありません)を確認します。静的照合では単語全体を対象とするため、commission は commissionRate と一致しません。完全な名前を列挙するか、payout-invariance-kit 0.3 以降では matchIdentifierParts: true を渡してください。考えられるあらゆる支払い設定を対象とする正式な証明ではありません。 |
check_mutation_invariance | mutation-invariance-kit | HONESTY_MCP_ENABLE_CODE_EXEC=1 の場合を除き無効です(それ以外の場合、一覧には表示されません)。指定したシナリオについて、意思決定/スコア/ランキング関数の出力が、依存しないとされる変数(保護対象属性、地域、価格、または指定した任意の変数)に依存するかどうかを確認します。考えられるあらゆる入力を対象とする正式な証明ではありません。 |
score_trust_identified | trust-core(identified) | 身元が確認された既知の評価者(レビュアーアカウント、評価者、検査員)からなるエンティティの信頼度をスコア化し、証拠が乏しい場合は事前分布に近づけます。重み付けされた証拠がない場合、測定されたスコアではなく、信頼度 insufficient とともに事前分布を返します。 |
assess_anonymous_authenticity | trust-core(anonymous) | 帰属先のない/スクレイピングされたセンチメントについて、自然に見える度合いをスコア化します。特定の 2 パターン(情報源の集中、センチメントの異常な均一性)には、ヒューリスティックな割引を適用します。捏造は検出せず、独立性も検証しません。また、センチメントの順位付けではないため、強く否定的なコーパスは肯定的なコーパスより低くスコア化されます。重みを持つシグナルがない場合、スコアは報告されず(trustScore: null)、スコアなしとなります。 |
check_provenance_claims | provenance-kit | 適切な出所レベルに裏付けられていない、確実性を示唆する表現(「(verified)」、「guaranteed」)を検出します。デフォルトのフレーズ一覧は短く(11 個のフレーズ)、フレーズは単語の接頭辞として照合されます。 |
check_claims_registry | claims-registry-kit | 公開向けの主張を、関連付けられた証拠と最終検証日をもとに、最新/古い/未検証に分類します。claims-registry-kit 0.4 以降では、TODO などのプレースホルダー参照は未検証として扱われ、経過時間の上限はミリ秒単位で厳密に適用されます。 |
append_audit_entry | audit-chain-kit | ハッシュチェーンによる改ざん検知機能を備えた監査ログに、エントリを 1 件追加します。 |
verify_audit_chain | audit-chain-kit | ジェネシスからハッシュチェーンを独立して再検証します(空のチェーンは、検証対象がなくても有効です)。変更とリンクの切断は常に検出します。末尾の単純な削除は expectedMinLength がある場合に検出し、切り詰めて再追加した場合(または全体を書き換えた場合)は anchor がある場合にのみ検出します。expectedMinLength だけでは、切り詰めて再追加したことは検出できません。 |
grade_decision | advice-ledger-kit | 推奨と意思決定の組み合わせ 1 件を、曝露状況に合わせた前後の観測ログに基づいて評価します。ウィンドウごとに個別の基準値を設け、機械可読な拒否コードを返します。holding となるには、曝露された不良件数が refuteThreshold 未満であり、かつ不良率がベースラインの不良率を下回る必要があります(丸められた badRate ではなく、厳密に比較します。advice-ledger-kit 0.2 では、率が同じ場合も維持と判定されます)。どちらか一方でも満たさない場合は not-holding となります。反証の基準は率ではなく固定件数です(ツールの説明を参照してください)。 |
compute_divergence | advice-ledger-kit | エンジンと人間が意見を異にした頻度を測定し、その後の結果がある場合は、エンジンが正しかった件数と人間が正しかった件数を、混ぜずに別々に報告します。省略可能なカスタム入力 groupBySource は、HONESTY_MCP_ENABLE_CODE_EXEC=1 の場合を除き無効です。 |
2 つのスキャフォールディングツール(agent-receipt-kit、cost-governor-kit。これらは、プロジェクトが実行中のコードにインストールしてインポートするランタイムライブラリであり、同じ方法でオンデマンドにチェックするものではありません。その理由については、src/tools/agentReceiptScaffold.ts / costGovernorScaffold.ts のコードコメントを参照してください。「この内容をチェックする」という形式では、実態を正しく表現できません): |
| ツール | 使用するもの | 目的(1 行) |
|---|---|---|
scaffold_agent_receipts | agent-receipt-kit | AI エージェント向けの、パケットを発行してクレームを検証する認可パターンを、インストール手順、スタータースニペット、そして(任意で)実際のキットを使った承認/却下の実行例とともに説明します。 |
scaffold_cost_governor | cost-governor-kit | 推定コストの呼び出し前チェックと、キャッシュを考慮した料金計算(デフォルトのキャッシュ読み取りレートは 0.1x で、モデルごとに cacheReadPerMillion でオーバーライド可能)、さらにアドバイザリー方式(並行処理に対する安全性はありません)のチェック後コミットによる使用回数カウントパターンを、インストール手順、スタータースニペット、そして(任意で)実行例とともに説明します。呼び出しが成功した後にコミットが失敗した場合、結果を破棄するのではなく、commitError を返します。 |
これで 9 個のキット、12 個のコンテンツチェック用ツールスロット(payout-invariance-kit、audit-chain-kit、advice-ledger-kit は、それぞれ 1 つではなく 2 つのツールを備えています。各キットには、実行時チェックと静的 grep、追記と検証、1 つの判断の評価と母集団全体にわたる乖離の測定という、真に異なる 2 つの操作が含まれており、モード切り替えのある 1 つのツールよりも、単一目的の別々の MCP ツールとして扱うほうが適切です)、さらに 2 つのスキャフォールディングツール、合計 14 個のツールです。
コード実行が有効な場合、ツールは 14 個です。デフォルトでは無効であり、その場合 check_mutation_invariance は一覧に表示されないため、クライアントからは 13 個見えます。
コード実行ツールについて
これらのツールはデフォルトで無効です。 check_payout_invariance(ランタイムモード)と
check_mutation_invariance は、実際のシグネチャで JavaScript の関数(ランキング関数、ミューテーションクロージャー)を受け取るキット関数をラップしています。関数を MCP の JSON 引数で表現する方法はありません。これらのツールは、その関数をソースコード文字列として受け取り、src/lib/runFunctionJob.ts がコード実行スイッチの確認後に起動するワーカー内で Function コンストラクターを使って実際の関数を構築し、その関数を変更されていないキットのエクスポートに渡します。(src/lib/buildFunction.ts は、独立してテストされる参照用コピーとして保持されている同じビルダーです。ランタイムでは何もこれを呼び出しません。)compute_divergence の任意設定 config.groupBySource も、advice-ledger-kit の groupBy 設定関数に対して同じ仕組みを使いますが、呼び出し元が実際に指定した場合に限られます。省略する場合(一般的なケース)は、ライブラリ独自のデフォルト設定で各ペアの group フィールドごとにグループ化されるため、コード実行は一切必要ありません。これは、その文字列だけに対する eval と同等です。
悪意のあるテキストを与えられたエージェントが、コードを送信するように誘導される可能性があるため、オペレーターがサーバーの環境で HONESTY_MCP_ENABLE_CODE_EXEC=1 を設定して有効にしない限り、サーバーはこれらの機能を提供しません。有効になるのは値が正確に 1 の場合のみです。それ以外の値(true、yes、0、空文字列)では無効のままです。
無効の場合:
check_mutation_invarianceは登録されないため、ツール一覧に表示されません。check_payout_invarianceはstatic-importsモードのみで一覧に表示されます。compute_divergenceはgroupBySource入力なしで一覧に表示され、その値を送信すると拒否されます。- サーバーの初期化結果には、変数名を示す短い注記が含まれます。
- 呼び出し元の JavaScript が実行される唯一の場所である
runFunctionJob(src/lib/runFunctionJob.ts)は、ワーカーの起動を拒否します。エラーにはHONESTY_MCP_ENABLE_CODE_EXECが記載されます。
それ以外のツールに変更はありません。デフォルト値は、src/lib/codeExec.ts にある CODE_EXEC_ENABLED_BY_DEFAULT という名前の定数で指定されています。
有効にしても、何も隔離されません。 コードは引き続き、このプロセスが持つファイルシステム、ネットワーク、環境へのすべてのアクセス権を使って実行されます。これは、エージェント自身が node -e や vitest run を実行する場合と同じ信頼モデルであり、信頼できない入力、リモート入力、敵対的な入力に公開することを想定して設計されていません。信頼できるローカルエージェントが操作するサーバーでのみ有効にし、自分で作成したコード、または信頼しているコードのみを渡してください。
static-imports モードはディスク上のファイルを読み取りません
check_payout_invariance の static-imports モードでは、呼び出し元が送信するパスとファイル内容のマップとして files を受け取ります。パスのリストはエラーとして拒否されます。ラップされたキットは、渡された読み取り可能なパスを読み取って一致する行を返すため、エージェントがマシン上の任意のファイルを1行ずつ読み取れることになります。そのため、このサーバーではパスをそのまま渡しません。ファイルをスキャンするには、エージェントにファイルを読み取らせ、そのテキストを送信してください。
この3つはいずれも、サーバー自体のメインスレッドではなく、タイムアウトが設定された worker_threads Worker 内で実行されます(src/lib/runFunctionJob.ts)。以前のバージョンでは、ビルド済みの関数を同一プロセス内で同期的に呼び出していたため、while (true) {} というソース文字列によって stdio サーバー全体が永久にブロックされ、実行中のほかのツール呼び出しも、以降のツール呼び出しもすべて止まっていました。現在は、タイムアウト(デフォルトは 10 seconds。環境変数 HONESTY_MCP_WORKER_TIMEOUT_MS でミリ秒単位で上書きでき、指定できる範囲は 1~2147483647)以内に Worker が完了しない場合、強制的に terminate() され、ツール呼び出しはハングする代わりに明確なタイムアウトエラーを返します。渡されたコードのコンソール出力(console.log、console.error)は捕捉され、1回の呼び出しにつき最大 16 KiB まで、[honesty-mcp worker] のプレフィックスを付けてサーバーの stderr に書き込まれるため、MCP プロトコルを伝送する stdout には届きません。ファイル記述子 1 に直接書き込むコード(たとえば fs.writeSync(1, ...) を使うコード)は捕捉されず、プロトコルストリームを破損させる可能性があります。これも、これがサンドボックスではない理由のひとつです。これはサンドボックスではありません。Worker には、このプロセスと同じ OS レベルの全権限(ファイルシステム、ネットワーク、環境変数)があります。制限されるのは実行時間だけです。呼び出し元のコードがファイルシステムを読み取ったり、ネットワークリクエストを送ったり、この Node プロセス自体に可能なその他の操作を行ったりすることは防げません。上記の信頼モデルはすべてそのまま適用されます。自分で書いたコード、または信頼できるコードだけを渡し、このサーバーを信頼できない入力、リモートの入力、または敵対的な入力にさらさないでください。
キットのバージョン
このサーバーは、ラップする各キットの新しいリリース系列(package.json の範囲)に依存しています。以下の表では、この系列で honesty-mcp 0.2.x が使用していた 0.2 系列と比べて変更された点を示します。起動時に各ツールはインストール済みキットのバージョンを読み取り、そのバージョンに合わせて説明を作成します。また、入力をインストール済みキットが暗黙に無視する場合(たとえば、オーバーライドによって payout-invariance-kit 0.2 がインストールされているときの matchIdentifierParts)は、機能したかのように装わず、その入力を拒否します。
| キット | バージョン | このサーバーを通じて変更される内容 |
|---|---|---|
| grounding-kit | 0.3.0 | 各単位に reasons が含まれ、結果に nonClaims が追加されます。判定結果は両方向に変わります(略語の後、閉じ引用符やダッシュの後で文が区切られるようになり、ルールや表の区切りは単位ではなくなります)。 |
| corroboration-kit | 0.3.0 | ソースは独立した出所ごとにカウントされます。入力に origin、derivedFrom、inferOrigins が追加され、結果に groups が加わります。判定結果が厳しくなることはあっても、緩くなることはありません。 |
| payout-invariance-kit | 0.3.0 | 入力に matchIdentifierParts が追加され、識別子はトリミングされ、あらゆる文字体系で照合されます。実行時にランキング関数が何も返さない場合はエラーになります。 |
| mutation-invariance-kit | 0.3.0 | 変更された入力をその場で編集するとエラーになります。同じ名前のシナリオは name (2) のように改名されます。 |
| trust-core | 0.3.0 | 匿名スコアが変更されます(少量のコーパスや単一ソースのコーパスは低いスコアになります)。新しい config.fullCountWeight が追加され、未来の日付の証拠は日付なしとしてスコア付けされます。 |
| provenance-kit | 0.3.0 | 判定結果は両方向に変わります(否定の手がかりや断定的な慣用表現が増え、類似文字も考慮されます)。カスタムフレーズ末尾の空白によって、接頭辞の照合が妨げられることはなくなります。 |
| claims-registry-kit | 0.4.0 | maxAgeDays × 24 時間を超えて古い主張は、正確なミリ秒に基づいて古いものと判定されます。プレースホルダーの evidenceRef は未検証として扱われます。 |
| audit-chain-kit | 0.3.0 | 検証結果に entriesChecked が追加されます。 |
| advice-ledger-kit | 0.3.0 | 不利な割合が完全に同率の場合、holding ではなく not-holding になります。 |
| agent-receipt-kit | 0.3.0 | 足場のみです。動作例の結果に snapshot と uncoveredFactKeys が追加されます。 |
| cost-governor-kit | 0.3.0 | 足場のみです。ガイダンスで新しいアドミッション制御 API に言及します。 |
test/kitCompat.test.ts は、インストールされている系列に対応する分岐を実行します。現在の範囲では常に新しい系列が使用されるため、今後のリリースで古い系列のチェックを削除できます。
正直な制限事項
- このサーバーは、ラップするキットがすでに文書化している以上の保証を追加しません。 各ツールの説明は、このブランチが基盤とした兄弟キットのコミット時点で、各キットの README の「正直な制限事項」/「制限事項」セクションと照合済みです。ここにあるツールの説明や表の各行の詳細については、該当するキットの README をお読みください。後にキット自体の制限事項が変更された場合、このサーバーの表現が再び一致しなくなることがあります。自動で再確認する仕組みはありません。
check_payout_invariance、check_mutation_invariance、およびcompute_divergenceのワーカースレッドのタイムアウトが制限するのは時間だけであり、動作ではありません — 上記の「コード実行ツールに関する注記」を参照してください。これはサンドボックスではなく、HONESTY_MCP_ENABLE_CODE_EXEC=1が設定されていない限り、これらの処理は無効です。SERVER_VERSION(src/server.ts)とpackage.jsonのversionは、引き続き手動で更新します。test/drift.test.tsにより、それらとserver.json内の 2 つのバージョンが一致しない場合はエラーになりますが、自動で更新するものはありません。
開発
このサーバー自体の開発に取り組む場合(単に使用するのではなく)、リポジトリをクローンし、ソースからビルドします。
git clone https://github.com/lkopietz3-byte/honesty-mcp.git
cd honesty-mcp
npm install # resolves the 11 wrapped kits from the npm registry
npm run build # compiles src/ -> dist/
npm start # runs dist/index.js on stdio
npm run lint # eslint . --max-warnings=0
npm run typecheck # tsc --noEmit over src/ + test/
npm test # vitest (code execution is switched on for the suite in
# vitest.config.mjs), spins up a real MCP Client/Server pair
# over the SDK's InMemoryTransport and calls tools
# end-to-end (see test/*.test.ts)
npm run build # tsc -p tsconfig.build.json -- compiles src/ -> dist/
npm run smoke # npm run build first, then node dist/smoke.js --
# a standalone script that does the same real
# client/server handshake, lists all tools, and
# calls one end-to-end
npm run verify # lint + typecheck + test + build + smoke, in order
npm run audit:dependencies # npm audit --package-lock-only --include=dev
# --ignore-scripts --audit-level=low
プロジェクト構成
src/
index.ts entrypoint: connects the server to stdio
server.ts createServer() -- builds the McpServer and registers every tool
smoke.ts standalone smoke-test script (see npm run smoke)
lib/
result.ts CallToolResult helpers (jsonResult / errorResult)
codeExec.ts the HONESTY_MCP_ENABLE_CODE_EXEC switch and its default constant
buildFunction.ts reference copy of the source-to-function builder (tested; not called at runtime)
runFunctionJob.ts runs that function (or the divergence groupBySource case)
inside a worker_threads Worker with a bounded timeout
tools/
grounding.ts
corroboration.ts
payoutInvariance.ts
mutationInvariance.ts
trustIdentified.ts
trustAnonymous.ts
provenance.ts
claimsRegistry.ts
auditChain.ts (append_audit_entry + verify_audit_chain)
adviceLedger.ts (grade_decision + compute_divergence)
agentReceiptScaffold.ts
costGovernorScaffold.ts
test/
server.test.ts end-to-end tests over a real in-memory MCP client/server pair,
covering every tool's known-good and known-bad input
buildFunction.test.ts unit tests for the source-string -> function builder
runFunctionJob.test.ts unit tests for the worker-thread job runner (normal jobs,
error propagation, timeout enforcement, env var parsing)
workerTimeout.test.ts end-to-end proof that the three code-execution tools stay
bounded by the worker-thread timeout instead of hanging
codeExec.test.ts the code-execution switch: unset, set, garbage values, other tools
fileRead.test.ts static-imports mode never reads a path the caller names
drift.test.ts versions and README tool list match the code
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。