lens-mcp について
lens-mcp は、Claude Code や Cursor などの MCP クライアントに、別モデルで検証する Soulfield Lens のゲートを組み込みます。文章を生成せず検証のみを行い、不確かな結果は fail-closed で扱います。任意のローカル検証ツールではファイルや複数ファイル間の確認もできます。
主な機能
- 01別モデルによる生成テキストの検証
- 02不確かな場合は UNKNOWN を返却
- 03パターンベースの PII・秘密情報スキャン
- 04ローカルファイルと整合性の確認
- 05長文検証ジョブの非同期処理
- 06欠陥の記録と再発回数の集計
活用シーン
- 01公開前の AI 生成顧客向け文章の確認
- 02出力に含まれる構造化 PII と秘密情報の検出
- 03要約の数値と証拠マーカーの照合
- 04ローカル証拠を使ったコンテンツ検証の補助
MCP 対応
MCP サーバーは、テキスト検証、PII スキャン、ヘルスチェックのツールを提供します。lens-kit を導入するとローカル検証ツールも利用でき、長文は非同期の送信・レシートツールで検証できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @soulfield/lens-mcpSOULFIELD_API_BASELens API base URL. Use https://api.soulfield.one for the hosted service.SOULFIELD_API_KEYシークレットAPI key for validate_content and scrub_pii. Get one free, self-serve, no card, at https://api.soulfield.one/pricing#signup. lens_health needs no key.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
9掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| text | string | はい | 検証する AI 生成コンテンツ |
| domain | enum | いいえ | 検証用のドメインコンテキスト(デフォルト:general)general | finance | marketing | legal | seo | agency |
| context | string | いいえ | 関連性レンズ(レンズ 9)用のオーディエンス/目的のコンテキストです。省略すると、関連性チェックを通知なしでスキップします。 |
詳細
Soulfield Lens — MCP サーバー
長時間のジョブでは、新しい MCP 接続で validation_submit を実行してから validation_receipt を実行できます。返されたジョブ ID を候補の SHA-256 とともにローカルに保存してください。ポーリングがタイムアウトした場合は、その ID を取得してください。コンテンツを再送信しないでください。保留中、失敗、期限切れ、不完全なジョブではクリアランスは得られません。送信が不確かで ID が返されなかった場合、自動的に再試行してはいけません。既存の validate_content ツールに変更はありません。オフラインでの復旧と Rights の保持に関するテストフィクスチャについては、test/validation-jobs.test.cjs を参照してください。
AI 生成テキストを外側から検証する、MCP ツールです。
どの AI ツールも、回答を書いたのと同じモデルに、その回答がよいものかを尋ねます。モデルは「はい」と答えます。Soulfield Lens は外側から検証します。別のモデルが、出力に対して固定ゲートを実行します。テキストをチェックしますが、書くことはありません。このパッケージは、そのゲートを Claude Code、Cursor、その他の MCP 対応エージェントに組み込み、出力が生成される過程で検証できるようにします。
このゲートはフェイルクローズ方式です。判断が難しい場合は UNKNOWN を返し、黙って合格にすることはありません。生成ステップがないため、独自の主張を捏造することはなく、チェックだけを行います。ただし、判断を誤る可能性はあります。だからこそ、判断が難しい場合には確信を持って「はい」とせず、UNKNOWN を返します。
これは、ホスト型 Lens API(api.soulfield.one)のローカル stdio 境界です。リポジトリへのアクセスは呼び出し元のマシンにとどめ、完成した成果物のテキストだけを API ゲートに送信します。
2 つのティアを提供します。ゲートティア(3 つのツール)には API キー以外は必要ありません。バリデータティア(7 つのツール)では、ローカルオーケストレーション用のエントリーポイントに加え、単一ドキュメントのゲートでは確認できないファイル間チェックと欠陥メモリのためのオプションの lens-kit が追加されます。ローカルのエビデンス入力を省略すれば、ゲートティアはこれまでどおり動作します。
インストール前に試す
キー不要のデモエンドポイントでは、同じゲートを実行できます。登録不要で、IP ごとに 1 日数回まで利用できます。
curl -s https://api.soulfield.one/v1/demo \
-H 'content-type: application/json' \
-d '{"text": "<paste the AI output you are about to ship>"}'
インストール
npm install -g @soulfield/lens-mcp
インストールせずに実行することもできます:npx @soulfield/lens-mcp。
Claude Code
claude mcp add soulfield-lens \
-e SOULFIELD_API_BASE=https://api.soulfield.one \
-e SOULFIELD_API_KEY=<your-key> \
-- npx @soulfield/lens-mcp
任意の MCP クライアント(JSON 設定)
{
"mcpServers": {
"soulfield-lens": {
"command": "npx",
"args": ["@soulfield/lens-mcp"],
"env": {
"SOULFIELD_API_BASE": "https://api.soulfield.one",
"SOULFIELD_API_KEY": "<your-key>"
}
}
}
}
本番環境での呼び出しには API キーが必要です。[email protected] までお問い合わせください。lens_health は API キーなしで動作します。
ツール
ゲートティア — ホスト型 API、すぐに利用可能
| ツール | 機能 | 認証 |
|---|---|---|
validate_content | テキストに対して外側からのゲートを実行します。合格/不合格、スコア、次元ごとの結果、理由を含む違反の詳細を返します。オプションで domain(general、finance、marketing、legal、seo、agency)と context(対象者/目的)を指定できます。 | キー |
scrub_pii | メールアドレス、英国/米国の電話番号、クレジットカード番号、米国の SSN、英国の NI/UTR 番号、データベース接続文字列、一般的な API キー/認証情報のパターンなど、構造化された PII と秘密情報をサーバー側でスキャンします。検出結果と、各一致箇所を種類を示すマーカーに置き換えたサニタイズ済みテキストを返します。パターンベースで、LLM の呼び出しはありません。対象は構造化された識別情報です。個人名や自由記述形式の PII は検出せず、構造化形式のカバー範囲はベストエフォートであり、網羅的ではありません。 | キー |
lens_health | Lens API が稼働しているかを確認します。ステータスとバージョンを返します。 | なし |
バリデータティア — ローカル。一貫性チェックには lens-kit が必要です
バージョンに関する注意: バリデータティアは 1.1.0 で追加されます。
npm view @soulfield/lens-mcp versionが引き続き1.0.0を報告する場合、レジストリにはまだこのリポジトリの変更が反映されていないため、npx @soulfield/lens-mcpで利用できるのはゲートティアの 3 つのツールだけです。それまではソースからインストールしてください。
成果物のオーケストレーション:
validate_artifactは 1.2.0 で追加されます。範囲を限定したローカルのエビデンス検索は、この MCP パッケージに組み込まれています。リクエストされた一貫性チェックには、引き続きlens-kitが必要です。 知っておくべき副作用: validator-tier の呼び出しごとに、作業ディレクトリ内のRUNS.mdに行が追加されます。これは設計上、このキットの実行台帳です。ディレクトリはcwd引数で指定するか、省略した場合はサーバー自身の cwd が使われるため、台帳の保存場所を指定したい場合はcwdを明示してください。機密性の高いフラグ値は行内でマスキングされるため(--deny <redacted>)、deny 用語がディスクに記録されることはありません。
前提条件: pip install lens_kit(Apache-2.0、github.com/mrhpython/lens-kit)を実行するか、パスを LENS_KIT_BIN に設定してください。これがない場合、これら6つのツールは UNKNOWN とエラー を返します。エラーを出さずに成功扱いすることはありません。API キーは不要です。ローカルで実行され、LLM の呼び出しは行いません。
ホステッド API ではなくローカルで実行する理由: これらのツールはディスク上のファイルパスを受け取ります。任意のローカルパスを受け付けるホステッドエンドポイントは、機能ではなくファイル漏えいの経路になります。stdio ではパスは自分のマシン上のものなので、この機能は安全に使えます。そのため、ホステッド API に追加されることはありません。
| ツール | 機能 | 終了時の判定 |
|---|---|---|
validate_artifact | ローカルのアーティファクトを1つ読み込み、明示的に許可された証拠ルートのみを検索し、要求された整合性チェックを実行して、アーティファクトのテキストのみを API ゲートに送信します。結果には gate-only または evidence-preflight+gate のラベルが付けられます。文字列の一致はソースの場所を示すものであり、証明ではありません。完全なバリデーター判定を出す前に、別のバリデーターエージェントが確認して判定する必要があります。 | 整合性違反 → FAIL;証拠不足/チェックエラー → UNKNOWN;それ以外 → PENDING_AGENT_REVIEW |
lens_consistency_leaks | ファイルを deny リストの用語と照合してスキャンします(大文字と小文字を区別しないリテラル一致)。取り消し不能な公開の前に、顧客向けのすべてのファイルで実行してください。実際のクライアント名、内部コードネーム、禁止された絶対パスが公開用の文章に残っていないかを検出します。ここにあるのは認証情報ではないため、認証情報スキャナーでは検出できません。否定表現を区別しません: 禁止フレーズを否定する目的で引用しても、そのフレーズを肯定する場合と同じように一致します。 | 検出結果は文字列の存在を示します。判定は個別に行ってください |
lens_consistency_numbers | 要約内のすべての数値リテラルが、要約対象の本文に実際に含まれているかを確認します。捏造された数値を検出します。注意点: リテラル一致のみで、導出された算術は行いません。また、「約471という推定値を置き換える」のように「置き換え済み」と記載された数値も、古い数値と同じように検出されます。自動的に信頼せず、確認してください。 | 違反/問題なし |
lens_consistency_markers | ソース内の証拠マーカーが、すべてのレンダリング出力に残っているかを確認します。形式変換の過程で注意書きや引用が抜け落ちていないかを検出します。上記の leaks とは異なり、大文字と小文字を区別します。TRIPWIRE は Tripwire に一致せず、実際には削除されていなくても、削除されたものとして扱われます。注意点: 意図的に一部だけをレンダリングした場合も、正当に少なく数えられます。 | 違反/問題なし |
| 拒否する語句とマーカーの選定。 これら3つはオラクルではなく、検知用のトリップワイヤーです。このプロジェクト独自のコピーを使った実行では、3種類の異なる誤検知(否定、差し替え済みの数値、大小文字の違い)により、6件のフラグが立ち、実際の欠陥は0件でした。これは意図された動作であり、だからこそ原則は 判定して適用し、自動適用はしない です。拒否する語句として最適なのは、免責事項の中に正当に登場する、主張していない内容ではなく、どの文脈でも誤りとなる文字列(実際のクライアント名や内部コードネームなど)です。マーカーは、ソースとレンダリング結果で大文字・小文字の表記が一貫している場合に最も効果的です。 | ||
lens_catches_relevant | 検証前に欠陥バンクを読み込みます。成果物の種類に応じた過去の特定済みの欠陥を、再発頻度の高い順に確認します。しきい値に達したパターンには [PROMOTE] が付けられます。再発頻度が十分に高く、固定チェックに値するパターンです。 | — |
lens_catches_add | 特定した欠陥を記録し、次回以降に検知できるようにします。何が誤っていたか、一般的なパターン、今後のルールを記録します。通常の確認は設計上、登録対象として拒否されます。実際の欠陥のみが対象です。 | — |
lens_catches_stats | パターンごとの再発回数と昇格の提案を表示します。次に何を強化すべきかがわかります。 | — |
2つのティアは相互補完的であり、どちらかを選ぶものではありません。ゲートにはツールもファイルアクセスもありません。それこそが独立したチェックを実現する要素である一方、2つのファイルにまたがる矛盾を検知できない理由でもあります。バリデーターのティアはディスクを参照し、ゲートがスコアを決定します。両者を組み合わせてください。ローカルツールで基盤となる証拠を集め、そのテキストをゲートに渡し、ゲートの FAIL を PASS に覆そうとしてはいけません。プロトコルの全文はこちらです:docs/VALIDATOR-AGENT.md。
ローカルのエントリーポイント
validate_artifact を使えば、1回の呼び出しで境界が明確になります。
{
"artifact_path": "output/candidate.md",
"evidence_roots": ["reports", "output/proof"],
"evidence_queries": [
{
"claim": "measured-result",
"query": "113/113 rows scored",
"case_sensitive": true
}
],
"domain": "agency",
"context": "Internal technical handoff"
}
レスポンスには evidence_scope、files_read、searches_and_commands、claims_verified、claims_unverified が含まれます。claims_verified は意図的に空です。grep で証明できるのは、ソース内の場所にそのテキストが存在することだけであり、主張が真実であることではありません。別個のバリデーターエージェントが、該当箇所の証拠を読み、ファイルをまたいで推論し、最終的な完全バリデーターのレシートを添付する必要があります。
証拠ファイルの内容やローカルの絶対パスが API リクエストに追加されることはありません。ディレクトリ検索では .git、node_modules、シンボリックリンク、バイナリファイルを除外し、設定された安全性の上限を超えた場合はフェイルクローズします。
実行ごとに得られるもの: レシートです。何を確認したか、何が合格し、何が保留され、その理由がわかります。機械可読であり、バッジではありません。お客様のデータに対する精度の保証値を提示することはありません。スコアはモデル、データセット、ランタイム間で引き継げません。また、見たことのないデータに対して固定値を約束するツールは、このゲートが検知するために存在するまさにその種の主張をしていることになります。
長い入力
約4,000文字以上の入力は非同期ジョブとして送信され、完了まで自動的にポーリングされるため、1回の長い検証がリクエストのタイムアウトで失敗することはありません。短い入力には高速な同期処理が使われます。設定は不要です。
設定(環境変数)
| 変数 | デフォルト値 | 用途 |
|---|---|---|
SOULFIELD_API_BASE | http://localhost:8002 | Lens API のベース URL です。ホスト型サービスには https://api.soulfield.one を、自分でデプロイしたサービスにはその URL を使用します。 |
SOULFIELD_API_KEY | — | validate_content および scrub_pii に必要です。 |
SOULFIELD_VALIDATE_TIMEOUT_MS | 180000 | 同期処理のリクエストごとのタイムアウトです。 |
SOULFIELD_VALIDATE_BUDGET_MS | 600000 | 非同期ポーリングループ全体の実時間予算です。 |
SOULFIELD_ASYNC_MIN_CHARS | 4000 | 非同期処理に切り替わる入力の長さです。 |
LENS_KIT_BIN | lens-kit | バリデーターのティアで使う lens-kit CLI のパスです。PATH にない場合のみ必要です。 |
LENS_KIT_TIMEOUT_MS | 120000 | バリデーターのティアのコマンドに対するタイムアウトです。タイムアウトした場合、判定は UNKNOWN となり、合格にはなりません。 |
製品のその他の機能
このラッパーは、同じエンジンを使う複数のインターフェースのひとつです。
- 無料の1出力監査 — api.soulfield.one/audit。監査はデモです。
- 組み込む(SDK のストップフックとミドルウェア)— api.soulfield.one/developers。
- 所有する — キット:レンズ、コンパイラー、自己改善ループ、バリデーターエージェント、Apache-2.0。独自のデータでトレーニングできます。公開リポジトリ:github.com/mrhpython/lens-kit — クローンして
pip install -e ".[dev]"を実行すると、テストスイートはキーなしでオフライン実行できます。インストールすると、上記のバリデーター階層も有効になります。
私たちは、このパッケージが公開するのと同じ基準を、自社のマーケティング文にも適用しています。
ライセンス
MIT — LICENSE を参照してください。(lens-kit 製品は Apache-2.0 に基づき別途ライセンスされています。)
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。