mcpField
M
murphy-mcp

murphy-mcp

ローカル
github.com/lucianomanetta開発ツール06 日前に更新

murphy-mcp について

murphy-mcpは、コーディングエージェントの作業前後のファイルシステムとGitの状態を記録し、その記録をエージェントの説明と照合するMCPサーバーです。説明を確認済み、矛盾、未報告、検証不能に分けて提示します。

主な機能

  1. 01ファイルハッシュ付きワークスペースチェックポイント
  2. 02ファイルシステムとGitの変更レポート
  3. 03説明と観測された変更の照合
  4. 044種類の独立した証拠分類
  5. 05チェックポイント一覧とスキャン設定

活用シーン

  1. 01エージェント作業中に変更されたファイルの確認
  2. 02エージェントの報告にない変更の発見
  3. 03根拠のない説明と確認済み変更の区別
  4. 04セッション後のレビュー用証拠の保持

MCP 対応

murphy-mcpはMCPクライアントに `checkpoint`、`evidence_since`、`check_claims`、`list_checkpoints` ツールを提供します。事後にファイルシステムとGitの状態を観測しますが、変更の阻止やプログラムの動作検証は行いません。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"lucianomanetta-murphy": {
"command": "npx",
"args": [
"-y",
"murphy-mcp"
]
}
}
}
起動コマンドnpx -y murphy-mcp

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

パッケージ
npmmurphy-mcp0.1.0

ツール

4

掲載時のツール一覧 · 5 日前に更新

パラメーター型必須説明
rootstringはい監視するワークスペースの絶対パスです。エージェントが作業しているプロジェクトのルートを使用してください。
labelstringいいえこの checkpoint の短い名前です。たとえば、直前に行うタスクを指定します。
ignorearrayいいえスキップする追加のディレクトリ名です。パスの単一セグメントに一致します。
maxFilesintegerいいえこの数のファイルに達したら走査を停止します。デフォルトは 50000 です。
maxFileBytesintegerいいえこのサイズを超えるファイルはハッシュ化しません。デフォルトは 8388608 です。
noDefaultIgnoresbooleanいいえ.git、node_modules、.murphy も走査します。デフォルトではオフです。

詳細

murphy-mcp

コーディングエージェントが書いたものではない記録を提供する MCP サーバーです。

コーディングエージェントがタスクを終え、実行した内容を報告します。その報告は一貫性があり、よく構成されていて、たいていは正確です。しかし、評価される当事者自身が書いた、唯一の説明でもあります。

このサーバーは、もう一つの説明を作成します。作業の開始前にワークスペースを記録し、終了後に再度読み取り、実際に何が変わったのかを報告します。追加、変更、削除されたすべてのファイルに加え、git で何が動いたかも記録します。そして、エージェント自身の説明をその記録と照合し、食い違いを報告します。

何が起きたかをエージェントに尋ねることはありません。それが要点です。

2026-07-28 MCP specification と v2 TypeScript SDK を基盤に構築されています。MIT ライセンスです。


検出できること

問題は、エージェントが嘘をつくことではありません。エージェントの報告は、自身のコンテキストウィンドウから書かれた要約であり、そのコンテキストは、エージェントが把握できる範囲をはるかに超える状態を持つシステムの一部しか見えていません。報告は意図についてはたいてい正確ですが、結果については信頼性が低くなります。

繰り返し見られるのは、次の3つです。

  • 説明に含まれない副作用。 エージェントは3つのファイルを編集したと説明します。実際には4つが書き込まれています。4つ目はキャッシュ、ロックファイル、生成された成果物、またはツールによって書き換えられた設定ファイルかもしれません。
  • 把握できる範囲を境に、完了したと報告すること。 エージェントは自分から見える部分を終え、タスクが完了したと報告します。エージェントのコンテキスト内では、タスクが完了しているからです。
  • ディスク上に裏付けのない主張。 「テストは通ります。」「バグは修正されました。」本当かもしれませんが、ファイル一覧を見ても判断できません。

このサーバーは、これら3つをそれぞれ区別して示します。

インストール

公開ビルド:

npx -y murphy-mcp

Claude Code:

claude mcp add murphy -- npx -y murphy-mcp

任意の MCP クライアントで、設定を使う場合:

{
  "mcpServers": {
    "murphy": {
      "command": "npx",
      "args": ["-y", "murphy-mcp"]
    }
  }
}

クローンからインストールする場合:

npm install && npm run build

その後、クライアントから node /absolute/path/to/murphy-mcp/dist/index.js を指定してください。

使い方

作業前にチェックポイントを作成し、作業後に報告内容を確認します。

checkpoint        { root: "/path/to/project", label: "refactor auth" }
                  -> checkpointId

... the agent works ...

check_claims      { root, checkpointId,
                    claimedPaths: ["src/auth.ts", "src/session.ts"],
                    claimedStatements: ["All tests pass."] }

返される内容:

# Evidence report

**2 unreported · 1 contradicted · 1 confirmed · 1 unverifiable**

## Unreported: observed on disk, never mentioned
- `b.txt` (deleted)
- `generated/out.bin` (added)

## Contradicted: claimed, but nothing changed
- `never_touched.ts` — no such file at checkpoint time and none now

## Unverifiable: outside what this record can settle
- The test suite passes. — a filesystem and git record cannot settle this; it needs its own evidence

## Confirmed: claimed and observed
- `a.txt` (modified)

食い違いを最初に示します。人が確認するのは、そのためです。5万件のイベントを並べたログを確認する人はいませんが、4件の食い違いなら誰でも1分で目を通せます。

4つの分類

これらは意図的に分けています。まとめてしまうと、主張が証拠のように見えてしまいます。

分類意味
confirmed主張されており、ディスク上で確認できた
contradicted主張されているが、何も変更されていない
unreportedディスク上で変更されているが、一切言及されていない
unverifiableファイルシステムにも git の記録にも、判断できる情報がない

unverifiable は、ひそかに推測するのではなく、明示的に示されます。推測を事実と同じ確信度で提示することこそ、このサーバーが防ごうとしている問題です。

ツール

checkpoint

現在のワークスペースを記録します。すべてのファイルについて、パス、サイズ、更新日時、SHA-256 に加え、git の HEAD、ブランチ、status --porcelain を記録し、チェックポイント ID を返します。

root(必須) · label · ignore · noDefaultIgnores · maxFiles · maxFileBytes

evidence_since

再スキャンして、チェックポイント以降に何が変わったかを報告します。主張は関与せず、観測された記録のみを返します。

root(必須) · checkpointId(必須) · 同じスキャンオプション

check_claims

エージェントの説明を記録と照合し、4つの分類で返します。

root(必須) · checkpointId(必須) · claimedPaths · claimedStatements · 同じスキャンオプション

list_checkpoints

ワークスペースに保存されたチェックポイントを、新しいものから順に一覧表示します。

root(必須)

知っておくべき設計上の判断

ビルド出力は無視されません。 デフォルトで除外されるのは、.git、node_modules、およびサーバー独自の.murphyストアのみです。dist、.next、target、coverageを無視すると、エージェントの報告から漏れやすい変更そのものが隠れてしまいます。これらを除外したい場合は、ignoreに渡してください。

チェックポイントはディスクに書き込まれます。 ワークスペース内の.murphy/checkpointsに保存され、ストアがリポジトリに含まれないよう.gitignoreも配置されます。2026-07-28のプロトコルコアはステートレスであるため、1回の呼び出しを超えて保持する必要があるものをプロセス内に保存しません。また、証拠はそれが示すセッションの後も残ります。実際にそれを読みたいと思うのは、まさにそのタイミングです。

シンボリックリンクは記録されますが、たどられることはありません。 ルートの外まで移動できてしまうスナップショットでは、どこを調べたのか示せません。

ハッシュ計算には限界があり、その限界も報告されます。 8 MiBを超えるファイルはハッシュ計算されません。こうしたファイルの変更はサイズと更新日時から推定されますが、これはより確度の低い証拠であり、その旨がレポートに記載されます。切り詰められた内容、スキップされたディレクトリ、ハッシュ計算されなかったファイルはすべて、「このレポートでカバーされない内容」に表示されます。

このツールが行わないこと

誰も驚かないよう、対象範囲を明確にしておきます。

  • プロセスの祖先関係やネットワークの記録は行いません。 ファイルシステムとGitリポジトリを確認します。どのコマンドが書き込みを行ったのか、何が取得されたのかは特定できません。
  • .gitignoreは読み込みません。 デフォルトの無視リストは上記の3つのディレクトリと、指定された内容だけです。
  • サンドボックスやガードレールではありません。 事後に監視するだけで、何もブロックしません。
  • 動作を検証することはできません。 「テストは成功しました」は、設計上、毎回検証不能として返されます。テストは実行してください。

MURPHYとの関係

MURPHYは、プロセスの祖先関係、ファイルシステムのアクティビティ、ワークスペースの境界、ネットワークの挙動からエージェントのアクティビティを再構成する、別個の商用ローカルファースト型Windowsツールです。このサーバーは、同じ考え方に基づくファイルシステムとGitの部分を、あらゆるMCPクライアントから利用できるようにした、独立したクロスプラットフォームのオープンソース実装です。

両者の背景にある考え方は、エージェントの報告は証拠ではないに記載されています。

開発

npm install
npm run build
node test/smoke.mjs

スモークテストでは、使い捨てのGitワークスペースを構築し、実際のstdio MCP接続を介してサーバーを操作します。3つの変更を加え、そのうち1つを報告させ、残りの2つが未報告として返されることを検証します。

ライセンス

MITです。LICENSEを参照してください。

コメント

MCP は初めてですか?

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

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