メインコンテンツまでスキップ

MCP リファレンス

HMG は MCP(Model Context Protocol)を通じて Agent に記憶ツールを公開します。ホスト内のツール名は mcp__hmg__memory_memorize の形式です(mcp__<server>__<tool>)。

概要

ツール用途必須フィールド
memory_memorize記憶を 1 件書き込むcontent
memory_recall記憶を検索するquery
memory_correct記憶を 1 件訂正するtarget_atomactionreason
memory_govern記憶のライフサイクルを管理するtarget_atomactionreason
memory_handoffセッション引き継ぎ要約summary
memory_statsstore の概況(なし)

MCP ツールとして公開されない機能:agent_brief(SessionStart hook の内部実装)、observation_*(Agent 統合では起動しない)、history / export(SDK レイヤーのみ、SDK リファレンス参照)。

共通規約

  • scope は agent が渡しません。 すべてのツールのスコープは PreToolUse hook がセッションのディレクトリから機械的に推論して注入します(または MCP server がプロセスの作業ディレクトリから推論)。agent が渡した scope は上書きされます。
  • 確信度と極性は自動推論。 epistemic(事実/制約/推測)と polarity(肯定/否定/条件)は HMG が内容の表現から推論し、入力パラメータではありません。
  • 書き込み時の自動秘匿化。 構造化された機密情報(接続文字列、password=xxx、Bearer トークン、秘密鍵ブロック)は memorize 時に自動で秘匿化されます。自然言語で書かれた機密内容は自動検出されないので、書き込まないでください。
  • 正確な重複排除。 完全に同じ内容の書き込みは 2 件目の atom を作りません(effect: "no_op")。

ScopeInput(共通)

すべてのツールの任意 scope フィールドは同じ構造です(agent は渡しません):

json
{
"tenant_id": "qiankun",
"workspace": "HMG-AI",
"repository": "HMG-DEV-brach",
"branch": "main"
}
フィールド説明
tenant_idテナント。OS のユーザー名で、HMG が store 設定から読み取り
workspaceワークスペース。通常は git remote の owner
repositoryリポジトリ名
branchブランチ

memory_memorize

長期記憶を 1 件書き込みます。

入力

フィールド必須説明
contentstringはい記憶の内容。独立した一文
sourcestringいいえ出所の帰属:user(ユーザーの発言、より権威あり)/ agent(agent がまとめたもの)/ カスタム
scopeScopeInputいいえhook が自動注入。agent は渡さない

出力

フィールド説明
atom_idatom の ULID(重複排除ヒット時は既存 atom の ID)
effectapplied(新規作成)/ no_op(重複排除ヒット)/ rejected(准入で拒否)
reason重複排除または拒否の理由(applied 時は返らない)
deduped_with重複排除でヒットした既存 atom の ID(no_op のみ)

json
{
"content": "このプロジェクトの主データベースは PostgreSQL 16 で MongoDB は使わない。トランザクションと複雑なクエリが必要なため",
"source": "user"
}

注意

  • 先に recall で重複チェックする必要はありません。HMG が内部で正確な重複排除を行います
  • 現在のコンテキストにすでに意味の近い記憶が見えている場合は、新規追加ではなく memory_correctreplace)で更新してください
  • 記憶はユーザーの現在の会話の言語で保存されます

memory_recall

自然言語で記憶を検索します。

入力

フィールド必須説明
querystringはい検索クエリ。名詞句が最も効果的
max_resultsnumberいいえ最大返却件数。既定 10
include_negatedbooleanいいえ否定済みの記憶を含むか。既定 false
scopeScopeInputいいえhook が自動注入。agent は渡さない

出力

フィールド説明
atoms関連度の降順に並んだ結果リスト
atoms[].atom_idatom の一意識別子。correct / govern で使用
atoms[].content記憶の内容(隔離/封印済みはプレースホルダーを返す)
atoms[].score関連度スコア。0.0 ~ 1.0
atoms[].created_at作成時刻(RFC 3339)
atoms[].source出所の帰属

json
{ "query": "PostgreSQL コネクションプール設定" }

注意

  • query は名詞句を使い、重要な固有名詞(人名、プロジェクト名、技術名、ファイル名)を残し、口語的な疑問文は避ける
  • 通常 1 回のリコールで十分です。HMG は内部で意味、キーワード、グラフなど多角度から検索済みです

memory_correct

記憶を 1 件訂正します。追記型の訂正:古い内容は監査チェーンに保持され、履歴は失われません。

入力

フィールド必須説明
target_atomstringはい訂正する atom の ID(recall の結果から取得)
actionstringはい下記のアクション表を参照
reasonstringはい訂正の理由。監査チェーンに書き込まれる
new_contentstringreplace のとき必須置換後の新しい内容
scopeScopeInputいいえ既定で対象 atom から継承。渡さない

action の値

アクション意味典型的な場面
negate偽とマークして無効化「この記憶はもう古い/間違っている」
confirm_actual確認済みの事実に昇格「前は不確定だったが、今は確認できた」
confirm_necessaryハード制約に昇格「事実というだけでなく、必ず守るべき制約」
demote可能性に格下げ「決まったと思っていたが、実は未定だった」
replace新しい内容で置換(新 atom を作成し、旧 atom は変遷チェーンに保持)「内容を更新する必要がある」(必ず new_content を同時に渡す)

出力

フィールド説明
effectapplied / rejected
target_atom訂正された元の atom の ID
new_atom_id新規 atom の ID(replace のみ)
reason拒否の理由(rejected のみ)

json
{
"target_atom": "01J9ZK8V3QX7N2M4R6T8W0YB1C",
"action": "replace",
"reason": "v3 で PostgreSQL に移行済み、旧決定は古い",
"new_content": "主データベースは PostgreSQL 16 で、旧 MongoDB 方案を置き換え"
}

注意

  • negate は正確に元に戻せません(un-negate なし)。否定の間違いは replace で正しい内容を書き戻す
  • replace を間違えたら、その atom に対してさらに replace——常に有効な記憶が 1 件だけであることを保証

memory_govern

記憶のライフサイクルを管理します(隔離、封印、無効化、教訓の抽出)。

入力

フィールド必須説明
target_atomstringはいガバナンスする atom の ID
actionstringはいquarantine / seal / tombstone / derive_lesson
reasonstringはいガバナンスの理由。監査チェーンに書き込まれる
lesson_contentstringderive_lesson のとき必須元の内容から抽出した秘匿化された教訓
scopeScopeInputいいえ既定で対象 atom から継承。渡さない

action の値

アクション意味
quarantine隔離:リコールに出なくなるが内容は保持、復元可能
seal封印:監査のみ参照可能
tombstone墓碑化:論理削除、既定で内容を破棄
derive_lesson秘匿化された教訓を抽出(新 atom)、原文を封印

出力

フィールド説明
effectapplied / rejected
target_atomガバナンスされた元の atom の ID
lesson_atom_id教訓 atom の ID(derive_lesson のみ)
reason拒否の理由(rejected のみ)

json
{
"target_atom": "01J9ZK8V3QX7N2M4R6T8W0YB1C",
"action": "derive_lesson",
"reason": "原文に漏洩した API キーを含む",
"lesson_content": "API キーをコードや記憶にハードコードせず、環境変数を使う"
}

注意

  • 機密情報の誤記:教訓として残す価値があれば derive_lesson、なければ sealtombstone
  • tombstone は既定で内容を破棄します。呼び出し側の追加指定は不要です

memory_handoff

セッション引き継ぎ要約を書き込みます。handoff は特殊な記憶で、次のセッションの起動ブリーフが優先的にリコールします。

入力

フィールド必須説明
summarystringはい引き継ぎ要約。カバー推奨:何をしたか / なぜ / 検証 / リスク / 次のステップ(形式は自由)
sourcestringいいえ出所の帰属
scopeScopeInputいいえhook が自動注入。agent は渡さない

出力

フィールド説明
atom_idhandoff atom の ULID
effectapplied / rejected
reason拒否の理由(rejected のみ)

json
{
"summary": "login.py の null ポインタを修正。根本原因は session 期限切れ時に get_session() が None を返すことで、line 38 に有効性チェックを追加、pytest はすべて通過。リスク:並行時に session 更新の競合の可能性。次:session モジュールに統合テストを追加。",
"source": "agent"
}

注意

  • 呼び出しタイミング:タスク終了、マイルストーン完了、セッション終了間際
  • memorize との分担:memorize は単一の増分知識を保存し、handoff は 1 回のタスク全体の引き継ぎを保存します

memory_stats

store の概況を表示します。主に SessionStart hook が内部で使用(空の store → オンボーディングフローの判定)。Agent の通常のワークフローでは通常呼び出し不要です。

入力:なし。

出力

フィールド説明
atoms記憶 atom の総数
edgesグラフエッジの総数
indexes各インデックスのカバー数(semantic / keyword / temporal / categorical)
snapshot_version現在のスナップショットバージョン。書き込みごとに増加

前:CLI リファレンス · 次:SDK リファレンス