mcpField
F
frame-check

frame-check

ローカル
github.com/lluvrAI・エージェント05 日前に更新

frame-check について

frame-checkは、文書のフレーミング、欠落、読者への位置づけ、数値主張を調べる決定論的な文書分析MCPサーバーです。サーバー側でLLMを呼び出さず、再現可能な分析を求める研究者やチーム向けです。

主な機能

  1. 01決定論的なフレーミング分析
  2. 025つの視点のカバー状況
  3. 03語り口と時間軸の分析
  4. 04候補フレームパターンの検出
  5. 05数値主張の情報源照合
  6. 06任意のAI解釈と明示ラベル

活用シーン

  1. 01レポートで欠けた視点の確認
  2. 02文書間のフレーミング比較
  3. 03一次情報源による数値の検証

MCP 対応

ローカルでMCPサーバーとして動作し、対応するAIクライアントに文書フレーミング分析ツールを提供します。構造分析ではLLMを呼び出さず、任意のAI解釈は別途明示されます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"lluvr-frame-check": {
"command": "uvx",
"args": [
"frame-check-mcp"
]
}
}
}
起動コマンドuvx frame-check-mcp

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypiframe-check-mcp1.2.2

ツール

2

掲載時のツール一覧 · 1 週間前に更新

パラメーター型必須説明
user_goalenumいいえユーザーが Frame Check の呼び出し目的を示した場合に渡します。次のいずれかです:'decide'(選択肢を検討する)、'brainstorm'(選択肢を探る)、'persuade'(影響を与える文章を書く)、'learn'(トピックを理解する)、'audit'(デフォルト相当:目標固有の上書きなしで構造的に読み解く)。指定すると、absent_frames に目標に関連する重要なフレームの goal_relevance 辞書が含まれ、signal_strength の各階層内で目標に関連する項目が優先されます。ユーザーが目標を明示していない場合は省略してください。動作は 'audit' と同じです。decide | brainstorm | persuade | learn | audit
source_textstringいいえ文書が根拠とすべきソース資料(調査報告書、SEC 提出書類、一次資料)をユーザーが提供した場合に渡します。数値単位のソース忠実度検証(Layer 4)と、文ごとの根拠あり/捏造/言い換えの分類(Layer 11)が有効になり、数値の多いソースでどのレイヤーを信頼すべきかを示す範囲ルールも提供されます。ソース資料がない場合は省略してください。構造的なフレーミング分析はどちらの場合も実行されます。
user_contextstringいいえユーザーが会話内で状況、役割、または意思決定の背景を示した場合に渡します(例:「医療 AI 分野で採用を判断しているスタートアップ創業者です」「言語モデルのアラインメントに関する研究論文を査読しています」)。指定すると、提示ガイダンスが拡張され、このコンテキストに基づいて分岐の関連性が絞り込まれます。コンテキストは関連性のフィルタリングを個別化するためにのみ使い、処方的な提案には使いません(欠如は処方を意味しないという保証は維持されます)。MCP は値を応答に繰り返しません。役割や意思決定の背景が明らかでない場合は省略してください。最大 2000 文字です。
document_textstringはい分析する文書。英語。検証済みの範囲は 300~10,000 語です。100 語未満の場合、分析には信頼度が低い旨の注記が付きます。1,000,000 文字を超える場合は、切り捨てに関するガイダンスが返されます。Markdown を使用できます。フレーミングを特定したいテキストを指定します。
compose_budgetenumいいえデフォルトは 'standard' です。作業メモリーの予算が厳しい場合(ターンごとの自己監査ループ、文書の一括処理)は 'minimal' に、インラインの claim_level_treatments 表または圧縮されていない agent_guidance の文章が必要な場合は 'full' に切り替えます。 'minimal' = 上位 3 件の absent_frames、上位 1 件の cluster、上位 1 件の pattern。agent_guidance は重要な処方のみ圧縮して表示します(インラインの claim_level_treatments 表と例は省略されます。圧縮形式には claim_level_treatments_note が含まれ、完全な表は compose_budget='full' を指定するよう案内します)。 'standard' = 上位 5 件の absent_frames、すべての clusters、すべての patterns。agent_guidance は圧縮されます(ルールは minimal と同じ)。一般的な文書では、構造の網羅性と欠落側の分析を完全に維持しつつ、'full' よりペイロードを約 45%削減します。 'full' = フィルタリングなしの出力、インラインの agent_guidance を完全に表示します。すべての absent_frame 項目、インラインの claim_level_treatments 表、圧縮されていない how_to_render_divergence / composition_discipline の文章が必要な場合に選択します。 suggested_next_actions ブロックはすべての階層で保持されます(呼び出しごとに生成され、ユーザーの探索ループに不可欠です)。minimal | standard | full
include_divergencebooleanいいえデフォルトは true です。このパラメーターを渡す必要はありません。分岐ブロック(文書が採用していないフレームパターンを signal_strength 順に表示)は主要な出力で、デフォルトで含まれます。分岐ブロックのない旧 0.7.x 形式の応答が必要な場合に限り、明示的に false に設定してください(まれなケースです。インテグレーターが旧形式に固定している場合のみ使用してください)。
divergence_renderingenumいいえデフォルトは 'list' です。欠落フレームのレコードに teaching_question フィールドを含め、識別子ではなく質問として提示する場合は 'teaching_questions' に切り替えます。他のモードが返すデータは同じです。この設定はレコードへの装飾情報のみを変更します。list | completeness_check | teaching_questions | narrative
include_frame_opportunitiesbooleanいいえデフォルトは false です。ユーザーが、欠落フレームに関する学習用質問と文書の内容を組み合わせて生成する、LLM で拡張された文書固有の質問を最大 3 件求めている場合は true に設定します。分岐ブロックに frame_opportunities が追加され、各機会に model_provenance が付与されます。コストは呼び出しごとに約 0.001 米ドル(Gemini Flash の呼び出しは最大 3 回)です。GEMINI_API_KEY が設定されていない場合、または google.genai ライブラリが利用できない場合は、available=false と空のリストにフォールバックします。決定論的な経路では省略してください。

詳細

Frame Check

PyPI Python License Tests

文書に書かれていないことを明らかにします。

Frame Check は、決定論的な構造的フレーミング分析ツールです。文書がどのような分析的視点を取り、何を省略し、読者をどのように位置づけているかを明らかにします。また、文書中の数値に関する主張を、言語モデルではアクセスできない一次情報源(SEC EDGAR、FRED、World Bank など)と照合します。独自に LLM を呼び出さないため、同じ文書からは常に同じ分析結果が返され、モデルの利用コストもかかりません。

クイックスタート(MCP サーバー)

PyPI パッケージ frame-check-mcp は、Model Context Protocol サーバーです。ローカルで動作し、MCP 対応の AI クライアント(Claude Desktop、Cursor、Cline、Continue.dev など)に、決定論的な構造的フレーミング分析をツールとして提供します。

pip install frame-check-mcp

次に、インストールしたエントリーポイントを MCP クライアントに指定します。Claude Desktop の場合は、claude_desktop_config.json に次の設定を追加します。

{
  "mcpServers": {
    "frame-check": {
      "command": "frame-check-mcp"
    }
  }
}

クライアントを再起動します。あとは、どの会話でも「この文書をフレームチェックできますか?」と尋ねてください。インストールと検証の詳細は docs/MCP_SERVER.md をご覧ください。

wheel の検証(sigstore アテステーション)

公開されているすべての wheel には、GitHub Actions の公開ワークフロー内で OIDC を使用して生成された、sigstore ビルド来歴アテステーションが付属しています。この wheel がこのリポジトリの CI でビルドされたものであり(runner から PyPI への転送中に変更されていないこと)を検証したい導入者は、gh CLI を使って検証できます。

pip download frame-check-mcp --no-deps -d /tmp/fc-verify
gh attestation verify /tmp/fc-verify/frame_check_mcp-*.whl \
  --owner Clarethium

検証に成功すると、wheel アーティファクトのハッシュが、対応するタグの公開ワークフロー実行によって署名されたものと一致することが確認できます。ワークフローファイルのパスと git SHA もアテステーションに記録されています。検証は任意ですが、セキュリティを重視するデプロイ環境やパッケージミラーでは、インストールパイプラインの一部として検証することをお勧めします。

できること

文書を渡すと、Frame Check は次の情報を返します。

  • 構造的フレーミングのプロファイル:5つの分析的視点(原因、リスク、ステークホルダー、傾向、不確実性)のうち、文書が扱っているものと省略しているもの、およびそれぞれの密度。
  • 語り口と認識論的姿勢:文書が読者をどのように位置づけているか、また主張のうち出典を明示しているものの割合。
  • 時間的な方向性:文書が結論の根拠を過去のデータ、現在の状況、予測のどこに置いているか。
  • Frame Vocabulary Standard の候補一致:ルールベースのシグナルがテキスト上で検出した、名称付きフレームパターン。それぞれに識別の手がかりと具体例が付属します。一致は候補レベルのシグナルであり、検証済みのラベルではありません。
  • ソースネットワークによる検証:対象範囲に応じて、数値に関する主張を SEC EDGAR、FRED、World Bank、Alpha Vantage、Wolfram Alpha と照合します。
  • 任意の AI ナラティブ:文章レベルでフレーミングを解釈します。LLM による解釈と決定論的な測定結果が混同されないよう、明確に区別して表示します。

アプローチ

構造的な測定は基礎です。ツールが示すフレーミングに関する主張はすべて、決定論的なパターンマッチャーによって算出され、同じ入力に対して常に同じ結果を返します。API キーが設定されている場合は、補足情報として AI による解釈も利用できますが、その旨を明示し、構造的なレイヤーの背後に隠すことはありません。

検証の範囲は限定されています。ツールは、主張の種類を実際にカバーするプロバイダーに対してのみ数値的な主張を検証し、根拠なしに判定を断言するのではなく、自身のキャリブレーション結果(プロバイダーごとの適合率、再現率、F1)を提示します。

名称付きパターンの検出は、構造プロファイルとは別のベータレイヤーです。確信に満ちたラベルではなく、マッチ候補、検出漏れの指標、密度に関する注意事項、信頼度の状態を提示するため、過信した判定をうのみにせず、ツールが不確かな部分を確認できます。

キャリブレーションの数値、誠実な限界、その根拠となる方法論は、frame.clarethium.com/corpus/methodology の方法論に記載されています。

なぜ LLM だけではないのか

MCP 対応の AI クライアントであれば、LLM にプロンプトを入力してドキュメントをすでに分析できます。Frame Check が導入に値するのは、LLM が苦手とする部分を担うからです。

  • 決定性。 構造レイヤーは、実行、デプロイ、モデルのバージョンが異なっても、同じ入力に対して同じ数値を返します。「このドキュメントはどのフレームを使っているか」と LLM に尋ねると、回答は実行ごとに異なり、モデルごとにも異なります。分析を再現可能にするには決定論的な構造が必要で、意見はその上に重ねられます。
  • クエリごとのコストがゼロ。 Frame Check の MCP サーバーは、サーバー側では LLM を呼び出しません。ユーザーが希望する場合は、呼び出し元のエージェントが文章を解釈します。つまり、10,000 語のドキュメントをフレームチェックしても、ユーザーのコストは $0.00 です。LLM の呼び出しにかかる $0.05~$0.50 ではありません。
  • 明示的な欠落。 フレーム乖離ブロックは、一致したフレームを Frame Vocabulary Standard のカタログと比較し、ドキュメントが取り上げていない内容を明示します。「何が欠けているか」と LLM に尋ねると、もっともらしい欠落を幻覚することがあります。Frame Check はテキストに反応しなかったカタログ項目を列挙し、そのことを明確に伝えます。
  • キャリブレーション済みの検出。 名称付きパターンのレイヤーは、API レスポンスでベータとして示され(engine_status: beta)、確信に満ちたラベルではなく、検出漏れの指標を提示します。確信に満ちた推測ではなく、「これは不確かです」という誠実な結果が得られます。
  • 情報源の検証。 プロバイダーが対応する数値的な主張は、プロバイダーの料金体系(無料またはユーザーのキーを使用)に応じて、SEC EDGAR/FRED/World Bank/REST Countries/Alpha Vantage/Wolfram Alpha と照合されます。「この数値は正しいか」と LLM に尋ねても、一次情報源を取得できません。Frame Check はそれを実行します。

決定論的で情報源に基づく測定は、LLM に適した作業ではありません。Frame Check はこのレイヤーを提供することで、LLM がその作業を直接行うよう求められるのではなく、その結果を活用できるようにします。

実例

同じプロンプトでも、最先端の LLM 4 つではフレーミングの特徴が実質的に異なります。 data/worked_examples/four-llms-on-bitcoin-retirement-2026.md では、Claude Haiku 4.5、GPT-5、Grok 4.1 Fast Reasoning、Gemini 2.5 Flash に投資に関する質問を提示し、モデルごとの構造的な特徴(声調、網羅範囲、フレームの一致、出典提示率)を示しています。要点を簡潔に言えば、あなたの AI は数あるフレーミングの選択肢の一つであり、唯一のフレーミングではありません。

ほかに公開済みの実例が 5 件あり、人生の決断に関するプロンプトへの LLM の回答、AI 企業創業者のエッセイ、FOMC の金融政策声明、LLM が要約した決算発表に対する Source-Network の検証、そして Claude によるビットコインでの退職推奨を対象とした乖離の解説が含まれます。全実例については data/worked_examples/ をご覧ください。

ドキュメント

意図別(インストールして使う、フレームの乖離を理解する、実例を読む)に整理された閲覧パスは、docs/README.md をご覧ください。全項目は次のとおりです。

  • docs/MCP_SERVER.md:MCP サーバーのリファレンス(ツール、リソース、プロンプト)
  • docs/COOKBOOK.md:一般的な導入タスク向けの5つのレシピ(エージェントのコミット前のフレームチェック、意思決定ポイントでの乖離、ソースに基づく検証、2つのLLMの比較、カスタムFVSルール)
  • docs/FRAME_DIVERGENCE_CONTRACT_v1.md:Frame Divergence の出力形式に関するインターフェース契約(c1.0)
  • data/frame_library/:20項目のFrame Vocabulary Standardカタログ
  • data/worked_examples/:公開済みの実例。複数LLMの比較と、文書ごとのFrame Check分析を含みます(6項目)
  • Frame Vocabulary Standardの方法論は、frame.clarethium.com/corpus/methodology に記載されています
  • Frame Checkの紹介(ブログ):4つの分析レイヤーを、出力例とともに紹介しています

テストの実行

pip install -e .[test]
python3 run_tests.py

または、pytestを直接実行します。

python3 -m pytest -q

tests/ 以下に26のテストファイルがあり、エンドツーエンドの実行時間は約30秒です。これには、tests/test_mcp_adversarial.py の40個の敵対的ディスパッチャーテスト関数(パラメーター化により収集時に63件のテストになります)、7つのwheelサーフェスモジュールを対象とするモジュールごとのカバレッジ80%ゲート(scripts/check_per_module_coverage.py)、クックブックのレシピ契約テストスイート(tests/test_cookbook_recipes.py)、およびジャンル分類器とフレーム乖離のカバレッジが含まれます。

ライセンス

コードはApache-2.0、FVSライブラリと実例はCC-BY-4.0です (ディレクトリごとの一覧はNOTICEをご覧ください)。

引用

Frame Checkが研究や業務に役立つ場合は、引用可能な形式について.github/CITATION.cffをご覧ください。Frame Checkの作者はLovro Lucicです。

コントリビューション

.github/CONTRIBUTING.mdに従い、DCOによるSign-offが必要です。ガバナンスについては.github/GOVERNANCE.mdをご覧ください(正典への昇格に関する意思決定に、名前付きの強制機能を設けたBDFLモデル)。

課題

https://github.com/lluvr/frame-check/issues

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。