Fireweed について
Fireweedは、引用した証拠が主張を裏付ける場合だけ記録する、エージェント向けメモリMCPサーバーです。出典範囲と検証可能なレシートを保持し、根拠のない想起を拒否して削除証明も発行します。メモリ抽出は別途用意する必要があります。
主な機能
- 01主張と引用証拠の整合性を検査
- 02想起した主張に出典のバイト範囲を付与
- 03レシートと出典の完全性を再検証
- 04メモリを出典と記録イベントまで追跡
- 05署名付き証明を伴うメモリ削除
- 06オープン形式でメモリをエクスポート
活用シーン
- 01出典を追跡できるエージェントメモリを保存
- 02保存されていない事実の捏造を防止
- 03メモリ内容と出典の改変有無を監査
- 04指定したメモリの削除を証明
MCP 対応
MCPサーバーとして、remember、recall、verify_receipts、trace_evidence、review_reads、forget、export_memoryなどのツールを提供します。主張と証拠は呼び出し側が渡し、決定的な検査で記録可否を判定します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
10掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| claim | string | はい | 記憶する事実 |
| evidence | string | はい | それを裏付ける逐語テキスト |
| source_id | string | いいえ | この情報の出典(デフォルト:agent) |
| source_text | string | いいえ | この証拠を引用した文書全体です。渡すと、主張は文書内の検証可能なバイト範囲、つまりレシートに紐付けられます。任意ですが、これが重要な点です。 |
詳細
fireweed-mcp
すべての事実に根拠が添えられたエージェントメモリです。
remember(claim = "Priya joined Acme in 2019 under duress.",
evidence = "Priya Raman joined Acme in 2019 as a logistics analyst.")
REFUSED (asserts_more_than_evidence) — the claim adds something the evidence does not say.
claim : Priya joined Acme in 2019 under duress.
evidence: Priya Raman joined Acme in 2019 as a logistics analyst.
recall("Priya's salary")
ABSTAINED (unknown_predicate) — no claims ground "salary"; 1 claim about Priya Raman exists
This is a refusal, not an empty result.
forget("Priya")
ERASED Priya Raman — certificate issued
signature : hmac-sha256:f4d0768ef3b0fec624afec12f25bfd91…
nodes in closure : 1
every probe abstains : True
bystanders surviving : 1
最後のものが、*「エージェントのメモリから私を削除して、その証明を見せて」*を実現するアーティファクトです。
インストール
uvx fireweed-mcp # try it
pip install fireweed-mcp # keep it
claude mcp add fireweed -- uvx fireweed-mcp
依存関係はありません。API キーも必要ありません。モデルも不要です。このサーバー内で LLM を呼び出す処理は一切ありません。
できること
| ツール | |
|---|---|
remember | 引用した証拠が主張を裏付けている場合に限り、その主張を登録します。拒否理由は分類され、修正すべき点が示されます。 |
recall | 根拠のある主張を、出典となったバイト範囲とともに返します。根拠を確認できない場合は回答を控え、根拠付けできなかった用語を示します。 |
verify_receipts | すべてのソースを再ハッシュし、すべての範囲を再切り出して、改ざんの有無を検証します。 |
trace_evidence | 1 つのメモリを、証拠が届いた時点までさかのぼって監査します。証拠が結び付けているバイト列、それらが今も一致するかどうか、文書を記録した台帳イベント、およびチェーンが検証に合格するかどうかを確認できます。 |
review_reads | この基盤に対して何が尋ねられ、どう回答されたかを確認できます。デフォルトでは無効です。テキストの記録も有効にしない限り、クエリはソルト付きフィンガープリントとして記録されます。 |
forget | 正確な削除範囲と署名付き証明書を伴って消去します。無関係なデータは保持されます。 |
export_memory | 基盤全体を、移植可能なオープン形式のデータとしてエクスポートします。 |
拒否こそが重要な理由
ほとんどのメモリサーバーはモデルの発言を保存し、最も近い情報を返します。このサーバーは判定を行います。
ルールは、モデルが提案し、決定論的なコードが判断することです。RPC の境界を越えると、これは単なるスローガンではなくなります。提案するのはあなたのエージェントであり、ゲートを言いくるめて通過することはできません。ゲートはプロンプトではないからです。主張と引用するテキストを渡すと、純粋関数が、証拠が対象を明示しているか、関係性を保っているか、数値をでっち上げていないか、引用範囲にないことを主張していないかを検証します。検証を通過したものは、ソース内のバイト範囲とともに保存されます。
その後は、誰でも検証できます。あなたのエージェントもこのサーバーも信頼していない人でさえ確認できます。それが、このプロダクトのすべてです。
しないこと
最初に明記しておきます。このプロジェクトの以前の見出しに掲げた数値は、実際には何も測定していなかったことが判明しました (そのことを証明するスクリプトが付属する撤回声明をご覧ください)。
-
サーバー自体は、自由記述のテキストから記憶を抽出しません。 主張と証拠を指定するのはユーザーであり、このサーバー内でモデルを呼び出す処理はありません。0.5.0以降では、オプションのコンパニオンである
fireweed_extractorが、ユーザーの実行するモデルを使って会話記録から主張と証拠のペアを提案します。ただし、提案が信頼されることは決してありません。手作業で作成したものと同じ4つのチェックを、すべての提案に適用します。4種類のモデルファミリーで測定したところ、採用率は0%から99.3%の範囲であり、忠実でない提案はすべて、型付きの理由とともに却下されました。ある4Bモデルは、引用した箇所が裏付けていないペアを46件生成し、その46件すべてが拒否されました。失敗した場合に起きるのは、誤った記憶ではなく、記憶が少なくなることです。 -
LLMを誠実にするものではありません。 記録に何が入り、何を証明できるかを管理します。モデルは、独自の文章では依然として好きなことを言えます。
-
想起は弱点であり、正直な数値は、このページで以前主張していたものよりはるかに悪いものです。 このREADMEの以前のバージョンでは、ゲートが保存された事実を見つける確率は**98.4%**と記載していました。この数値は撤回します。質問の言い回し14種類すべてに、それらに答える手書きのカテゴリーテーブルの項目が一致するコーパスで測定した数値でした。これらの項目は、その同じコーパスで発生した失敗を基に作成されたものです。測定していたのは、1つの質問セットに対するテーブルの網羅率であり、システムの想起率ではありません。
ペルソナと、特に質問の言い回しという両方の軸で未使用のコーパスを使い、2026-08-27に測定した結果:
質問の言い回し デフォルトのインストールで拒否される割合 テーブルの作成に使われた言い回し 4.8% 一度も見たことのない言い回し 99.2% デフォルトのインストールでは、調整対象になっていない言葉で表現された質問には、ほとんど回答できません。これがシステムの実態を表す数値であり、このページに以前記載されていた想起に関する主張は、すべてこの数値に置き換わります。
-
本当に優れているのは、もう一方の軸です。 答えが存在しない場合に回答を誘う罠では、ゲートは**96.1%**を正しく拒否します。回答するより、回答を控えるほうがはるかに得意であり、情報を捏造しません。決して創作しない記憶が必要なら、これがそれです。必要な情報を確実に見つける記憶が必要なら、まだ実現できていません。その理由が上記の数値です。
-
スコープを指定した複数の対象に関する質問には、まだ対応していません。 対象を1つだけ指定した質問は、その対象に絞り込まれます。対象を2つ以上指定した質問は、引き続きストア全体を照合します。
数値は、測定前に自身の制御条件を出力する、校正済みの測定ツールによるものです。コーパスと手法は非公開の評価リポジトリにあるため、独立して検証可能な数値ではなく、報告値として受け止めてください。自分で確認できるのは、上記のコマンドを使った書き込み処理、レシート、来歴、消去の部分です。
データについて
~/.fireweed/mcp/(変更するには FIREWEED_MCP_STORE を設定します)。基盤はオープンフォーマットです。詳しくは
open_format/SPEC.mdをご覧ください。open_format/reference_reader.py を使えば、標準ライブラリだけで読み取れます。記憶は、このサーバー、このエンジン、そしてどのモデルよりも長く残ります。そのラウンドトリップを検証するテストもあります。
fireweed-mcp[semantic] はインストールしないでください。 これを有効にすると、recall で言い換え照合が使われます。答えが存在しない場合に回答を誘う罠で測定したところ、正しい拒否率は96.1%から32.8%に低下しました。つまり、答えがストアに存在しない質問の3分の2に回答します。しきい値を変えて調べても、このコストを払わずに想起率を上げられる設定は見つかりませんでした。安全なレベルまでしきい値を厳しくすると、まったく効果がありません。この仕組みは、対象自身の述語に限定した場合には改善の余地があるかもしれず、その可能性はまだ検証されていないため、引き続きインストール可能です。それまでは無効のままにしており、現在のモードは memory_stats で確認できます。
ライセンス
FSL-1.1-ALv2 — ソースコードを利用できます。競合製品の構築を除き、あらゆる用途で無料で利用できます。
2028-01-01 に Apache 2.0 に切り替わります。全文は LICENSE.md をご覧ください。
Fireweed を商用製品や競合サービスで利用したい場合は、こちらまでお問い合わせください → [email protected]
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。