codemem について
codememは、Claude Codeなどのコーディングエージェント向け共有メモリMCPサーバーです。プロジェクト、再利用可能な資産、セッション、コミットを複数マシンで記録し、利用実績に基づいて評価します。
主な機能
- 01複数マシンのプロジェクトと資産を検索
- 02セッション、決定事項、Gitコミットを記録
- 03リポジトリをスキャンして再利用コードを発見
- 04実績と成熟度ラベルで信頼性を評価
- 05SQLiteベースのWeb UIを提供
活用シーン
- 01新しいセッション前に既存実装を探す
- 02複数マシンのプロジェクト活動を追跡
- 03セッションの決定事項と次の作業を記録・検索
MCP 対応
streamable HTTP経由で、Claude CodeなどのMCPクライアントにプロジェクト、資産、セッション、検索のツールを提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx codemem-mcpCODEMEM_DATADirectory for the database and backupsCODEMEM_DBPath to the SQLite database (overrides CODEMEM_DATA)CODEMEM_HOSTAddress to bind. The server has no authentication; use 127.0.0.1 unless the network is trustedCODEMEM_PORTPort for MCP (/mcp) and the web UI. The transport URL assumes 8055OLLAMA_URLOllama base URL for embeddings (semantic search). Without it, search is BM25 onlyCODEMEM_EMBEDSet to false to disable embeddings entirelyGIT_ROOTDirectory of bare git repos to read for the commit feedローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
codemem
コーディングエージェントは、すでにあるものを何度も作り直してしまいます。codemem は、エージェントが作ったものを、すべてのプロジェクトとマシンにわたって記憶し、それぞれが機能したかどうかの証拠に基づいて評価します。
Claude Code やその他の MCP クライアント向けの MCP サーバーです。どのようなプロジェクトがあり、どこにあるのか、どのような再利用可能な要素が含まれているのか、各セッションで何を実行し、何を決定したのか、Git ホストにプッシュされた各コミット、繰り返し行う作業の手順を把握します。どのマシンからでも、エージェントからでも、Web UI からでも、すべてを検索できます。作業の後ではなく、作業の最中に書き込まれます。
Python プロセス 1 つと SQLite だけで動作し、外部サービスは不要です。
他との違い
インベントリスクリプトはディレクトリのスナップショットを作成し、レポートは一度読んだら終わりです。レジストリには人々が公開したものが並びます。codemem はどちらでもありません。
- スターではなく、証拠に基づく信頼性。 各プロジェクトとアセットには、変更の新しさ、どれだけ作業が費やされたか、実際にデプロイされ稼働しているか、他のものからインポートされているか、人間がお墨付きを与えたかに基づいて、算出されたスコアが付きます。
verifyは「今日実行して、動作することを確認した」という記録を残し、鮮度の時計をリセットします。スコアは同期のたびに再計算されるため、手を加えなくなると低下します。 - 忘れていた複製を見つけます。 すべてのリポジトリの HEAD を調べて、スクリプト、モジュール、サービスユニット、Dockerfile、MCP サーバーを検出し、それらの関数をハッシュ化して、コードを共有するリポジトリを関連付けます。同じリトライ用ラッパーを 3 か所に書いていることを知らせてくれます。
- エージェントが自動で情報を提供します。 セッションフックが各 Claude Code セッションで行われたことを記録し、次のセッションには、開いたばかりのプロジェクトについての概要を渡します。カタログは自動的に構築されます。
- 成熟度を第一級のラベルとして扱います。
authoritative、usable、experimental、antiquated、sunset、broken、junkのそれぞれに理由が付きます。検索ではこの成熟度に基づいて順位付けされ、基盤として使うべきでない評価を除外できます。 - コードは元の場所に残ります。 codemem が保存するのは、名前、説明、インポート、シンボル、関数ハッシュ、コミット記録などのメタデータです。ソースコードをコピーして保存することはありません。
エンドポイント
| エンドポイント | 内容 |
|---|---|
http://<host>:8055/mcp | Claude Code やその他の MCP クライアント向け MCP(ストリーミング可能な HTTP) |
http://<host>:8055/ | Web UI:検索、プロジェクト、アセット、メモ、アクティビティ、ドキュメント。ダークモード対応。 |
http://<host>:8055/api/… | UI が使用する JSON API(docs/architecture.md を参照) |
http://<host>:8055/health | ライブネス |
通常は Git ホスト上、つまりベアリポジトリが置かれているマシンで実行し、リポジトリを直接読み取れるようにします。
セキュリティ:codemem には認証機能がありません。 信頼できるネットワーク向けに構築されており、ポートに接続できる人は誰でも、すべての情報を読み書きできます。認証プロキシを前段に置かずにインターネットへ公開しないでください。docs/architecture.md を参照してください。
必要条件
Python 3.11 以降、および git。オプション:コミットフィード用のベアリポジトリを備えた Git ホスト、説明と Web リンク用の Gitea、セマンティック検索、説明文の下書き、レビュー工程用の Ollama。オプションの要素がなくてもすべての機能が動作します。検索は BM25 のみを使う方式にフォールバックします。
理由
複数のマシンに多数のプロジェクトフォルダーを持つ開発者には、新しい Claude Code セッションに、リトライ用ラッパー、Gradio ヘルパー、GPU モニター、データパイプラインがすでにどこかにあることを知らせる方法がありません。そのため、それらが作り直されます。スナップショットを作るインベントリスクリプト(実行、閲覧、忘却)では解決できません。codemem は常に更新可能なレイヤーであり、作業の後ではなく、作業中に書き込まれます。
内容は、そこにあるものがそのまま使われます。codemem がフィルタリングしたり、評価したりすることはありません。各プロジェクトには audience があり、unrestricted(デフォルト)、professional、employer のいずれかを指定できます。そのため、状況に応じて検索や表示から除外できます。求められない限り何も隠されません。ただし、複製されたサードパーティ製リポジトリには origin = vendor が設定され、明示的に求めるまで検索結果や一覧に表示されないという例外があります。docs/USER_GUIDE.md を参照してください。
PyPI からインストール
パッケージ名は codemem-mcp で、インストールされるコマンドは codemem です。
pip install codemem-mcp # または: uv tool install codemem-mcp / pipx install codemem-mcp
codemem serve # MCP は http://localhost:8055/mcp、Web UI は http://localhost:8055/
uvx codemem-mcp serve # または、インストールせずに実行
データは、CODEMEM_DB または CODEMEM_DATA で別の場所を指定しない限り、~/.codemem/ に保存されます。Claude Code に登録します。
claude mcp add --transport http --scope user codemem http://localhost:8055/mcp
これはサーバー単体です。systemd ユニット、コミットフィード、セッションフックを利用する場合は、リポジトリをクローンして、以下のクイックスタートを実行してください。
Docker で実行
docker build -t codemem .
docker run --rm -p 127.0.0.1:8055:8055 codemem # 使い捨てデータベース
docker run -d -p 127.0.0.1:8055:8055 -v codemem-data:/data codemem # ボリュームに保存
認証はありません。 ポートにアクセスできる人は誰でも、すべてのデータを読み書きできます。
-pには127.0.0.1:を付けてください。-p 8055:8055のように指定すると、すべてのインターフェースでポートが公開され、Docker のポートルールがホスト側のファイアウォールの大半を迂回します。
このイメージでは、オプションの要素は必要ありません。埋め込みは無効(CODEMEM_EMBED=0)で、Git ホストもありません。セマンティック検索を有効にするには、-e OLLAMA_URL=... -e CODEMEM_EMBED=1 を渡してください。
クイックスタート
サーバー(Git ホストで一度だけ実行):
./install.sh # venv、ユーザースコープの systemd ユニット、シード、バックフィル、gitea、スキャン、埋め込み
クライアント(各マシンで一度だけ実行):
CODEMEM_URL=http://<host>:8055 client/install-client.sh # Linux/macOS:MCP サーバー + SessionStart/SessionEnd フック
client\install-client.ps1 # Windows PowerShell(先に $env:CODEMEM_URL を設定)
以降、どの Claude Code セッションでも codemem ツールを利用できます。各セッションは、現在のプロジェクトの概要(codemem が認識している場合)で始まり、自動的にセッション記録を残して終了します。
Claude から見える内容
| ツール | 用途 |
|---|---|
search | すべてを対象とする BM25 と埋め込みのハイブリッド検索。何かを構築する前に最初に呼び出します |
project_brief | 名前または作業ディレクトリを指定して、1 つのプロジェクトに関するすべての情報を表示します |
list_projects | ステータス、タグ、マシン、対象ユーザー、公開範囲で絞り込みます |
update_project | 説明、目的、ステータス、タグ、対象ユーザー、出自(自作/ベンダー)、公開範囲、成熟度を更新します |
register_asset | 再利用可能なスクリプト/モジュール/プロンプト/スキル/サービスを、1 行の使用方法とともに記録します |
find_assets | 種類/タグ/プロジェクト、またはインポート済みライブラリでアセットを検索または一覧表示します |
log_session | 実施したこと、決定したこと、使用したもの、破棄したもの、次に行うことを記録します |
add_note | 決定、手順、リソース、課題、アイデアを追加します |
delete_note | 間違って書いたメモを、インデックスと埋め込み行とともに削除します |
link_items | あるプロジェクトが別のプロジェクトを使用する/再利用できる/置き換える/派生する関係を記録します |
rate | 成熟度を「信頼できる」「利用可能」「実験的」「時代遅れ」「廃止予定」「壊れている」「不要」のいずれかで評価し、理由を添えます |
verify | 「今日実行して動作しました」:計算された信頼スコアの鮮度タイマーをリセットします |
handoff / list_handoffs | 候補、シャドー、検証済み、昇格の段階を通じて、ある実装が別の実装に置き換わる過程を追跡します |
howto | 公開方法、マシンの追加方法、codemem の使い方、および取り込まれたドキュメントを参照します |
activity | すべてのマシンにおける直近 N 日間のコミットとセッションを表示します |
add_scan_root / scan_path | スキャン対象のディレクトリを登録し、今すぐスキャンします(サーバーマシン上で実行) |
stats | 件数、マシン、インデックスのカバー状況を表示します |
help | ワークフロー、ツール一覧、ラベルの語彙を表示します。Claude Code では /codemem、/codemem <query> で検索もできます |
データの取得元
- Git ホスト:
GIT_ROOT内のすべてのベアリポジトリをバックフィルします。各プッシュはポストレシーブフックによって/ingest/pushに送信されるため、新しいコミットは数秒以内に反映されます。docs/git-commit-feed.md を参照してください。 - Gitea(任意):読み取りトークンを使って API 経由で説明、トピック、Web URL を取得します。
- ローカルスキャン:マシンごとに、登録済みルート内のプロジェクトディレクトリをスキャンします。サーバーでは自動的に実行されます。それ以外のマシンでは、ルートを登録した後に
client/codemem_agent.pyを一度実行します。 - 検出:すべての自作リポジトリの HEAD を調べ、スクリプト、モジュール、ユニット、Dockerfile、
プロンプト、MCP サーバーを検出して
auto-discoveredアセットとして記録し、リポジトリ間の共有コードのリンクを作成します。 - ドキュメント:
CODEMEM_DOC_SOURCES(デフォルトではこのリポジトリ)から Markdown を取り込み、同期のたびにハッシュを再計算します。 - Claude Code:フックからのセッション記録と、Claude がツールを使って書き込んだ内容を保存します。
- ローカルモデル(任意、Ollama 経由):セマンティック検索用の埋め込み、説明の下書き、重複の可能性が高い関数と説明が簡素なコードを対象としたレビューに使います。
構成
codemem/ サーバーパッケージ
config.py すべての設定項目。環境変数で上書き可能
db.py スキーマ、接続、単一の FTS5 インデックス
store.py すべての書き込み(インデックスとの同期を維持)
search.py BM25 + Ollama の埋め込み、相互順位融合
gitsync.py ベアリポジトリのバックフィル、プッシュ取り込み、push.log、Gitea
scan.py プロジェクトの検出 + 場所の記録
discover*.py アセットの検出、共有コードのリンク(コア部分はリモートエージェントと共有)
trust.py 信頼スコアの算出
review.py 対象を絞ったモデルレビュー
describe.py モデルによるプロジェクト説明の下書き
knowledge.py ドキュメントの取り込み、ハウツー/アセットの初期データ
server.py MCP ツール、HTTP ルート、JSON API
cli.py serve | backfill | gitea | docs | seed | scan | embed | reindex | backup | sync | discover | review | trust | describe | purge
web/ 単一ファイルの Web UI(+ vendored の marked.js)
client/ フック、リモートスキャンエージェント、スラッシュコマンド、OS ごとのインストーラー
systemd/ ユーザースコープのユニット:サービス、同期タイマー(6 時間)、バックアップタイマー(02:45)
docs/ ユーザーガイド、アーキテクチャ、git-commit-feed、クライアント、運用、公開、python-vs-typescript
server.json MCP Registry エントリー(PyPI パッケージ codemem-mcp)
glama.json Glama 掲載情報のメンテナー
Dockerfile コンテナーイメージ:使い捨ての /data、オプションのサービスなし
ストレージ:$CODEMEM_DB(デフォルトは ~/.codemem/codemem.db、SQLite、WAL)。バックアップ:$CODEMEM_BACKUP_DIR
(デフォルトは ~/.codemem/backups/)。
ステータスとコントリビューション
3 台のマシンにまたがる 165 件のプロジェクト、735 件のアセット、2,000 件以上のコミットを対象に、毎日稼働しているシステムから切り出されました。その用途では安定していますが、運用者は 1 人だけだったため、環境の構成がその運用者と異なると、すぐに不備が見つかる可能性があります。Issue とプルリクエストを歓迎します。大きな変更を加える場合は、まず Issue を作成して方向性を相談してください。ローカルでの実行方法と、譲れない 2 つのルールについては CONTRIBUTING.md を、保存するデータと脆弱性の報告方法については SECURITY.md を参照してください。
プッシュする前に scripts/smoke.sh を実行してください。使い捨てのデータベースでサーバーを起動し、ヘルスチェック、Web UI、JSON API、スキーマがすべて正常に起動することを確認します。
ライセンス
Apache License 2.0。LICENSE を参照してください。
Copyright © 2026 Jeff Angelcyk.
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。