Contextberg MCP serverをnpxで接続する: Claude Code memoryをローカル作業文脈に広げる
Contextberg MCP serverをnpxで接続し、Claude Code / Codex / Cursorへlocal work memoryを渡す具体例をまとめます。MCP memory server、Skills、ローカルAPIの役割も整理します。

ContextbergはMCP memory serverとしてつなぐ
Contextbergは、AIアプリに組み込むmemory SDKではありません。既存のClaude Code、Codex、Cursor、Claude Desktopへ、PC上の作業文脈を後付けで渡すためのlocal work memoryです。
SEO上の言葉で言えば、Claude Code memory、MCP memory server、persistent memory for AI coding agents、cross-agent memoryの間にあるカテゴリです。会話履歴だけではなく、画面、ブラウザ履歴、アプリ利用、キーボード入力、エージェント履歴をまとめて、MCP経由で読ませます。
重要なのは、接続作業をユーザーにJSON編集だけで背負わせないことです。Contextberg側ではMCP接続やSkills導入をコマンドとして提示し、必要なブロックをコピーできる形に寄せています。
接続は設定ブロックかコマンドで渡す
Claude DesktopなどのMCPクライアントには、Contextberg用のMCP server設定を追加します。Contextbergアプリ側ではConnect Claude Desktopのような導線で、この設定を自動追記できるようにします。
手動で書く場合の基本形は、commandにnpx、argsに-yと@contextberg/mcp-serverを指定する構成です。ここで起動するのは記憶本体ではなく、MCP JSON-RPCとローカルAPIをつなぐbridgeです。
{
"mcpServers": {
"contextberg": {
"command": "npx",
"args": ["-y", "@contextberg/mcp-server"]
}
}
}この設定で重要なのは、メモリ本体をnpm packageに置いているわけではないことです。@contextberg/mcp-serverは、ローカルで起動しているContextbergアプリへつなぐbridgeです。作業データはデスクトップアプリ側にあり、MCP serverはそれをエージェントが読める形にします。
Skillsもコマンドとして渡す
MCPはライブの作業メモリを読む入口です。一方で、agentにContextbergの使い方や呼び出しタイミングを覚えさせるにはSkillsを使います。Contextbergアプリ側では、MCP接続コマンドとSkill導入コマンドをコピーできる形にしています。
| 接続 | 使う場面 | ユーザーに見せる具体例 |
|---|---|---|
| MCP server | 直近のActivity、Daily Report、LTM、agent historyをその場で読む | Claude Desktop設定に @contextberg/mcp-server を追加 |
| Skill | ContextbergのMCPをいつ使うべきかをagentに覚えさせる | npx skills add contextberg/skills |
| CLI command | MCP clientごとに接続を追加する | codex mcp add / claude mcp add / openclaw mcp set |
| Manual config | GUIやCLIが使えない環境で設定する | mcpServersにcmd /c npx -y @contextberg/mcp-serverを追加 |
npx skills add contextberg/skillscodex mcp add contextberg -- cmd /c npx -y @contextberg/mcp-server
claude mcp add --transport stdio contextberg -- cmd /c npx -y @contextberg/mcp-server
openclaw mcp set contextberg '{"command":"cmd","args":["/c","npx","-y","@contextberg/mcp-server"]}'MCPで何が読めるか
Contextberg MCP serverが返すのは、生ログの丸投げではなく、用途に合わせて整えた作業文脈です。local-first AI memoryとして、必要な粒度だけをClaude Code、Codex、Cursorから読めるようにします。
| Tool | 読むもの | 質問例 |
|---|---|---|
| get_activity | 直近N時間のActivity。アプリ、ウィンドウ、スクリーンショット、ブラウザ履歴 | 直近2時間で何をしていた? |
| get_daily_memory | 指定日のDaily Report | 昨日の午後に進めた作業を要約して |
| get_weekly_memory | 指定週のWeekly Report | 今週の実装テーマを3つにまとめて |
| get_agent_history | Claude Code / Codex / Cursorなどの会話turn | 認証リファクタについて話した履歴を探して |
| read_ltm | Long-Term Memory全体 | このプロジェクトの前提を読んでから回答して |
| update_ltm | LTMへの差分追記 | 今後も使う制約を記憶に追加して |
接続後にどう見えるか
具体例がないと、MCP接続はただの設定作業に見えます。実際には、agentがローカル作業メモリを読めることで、回答の出発点が変わります。
昨日の午後、ContextbergのMCP接続まわりで何をしていた?
読んでいたページ、触っていたファイル、残っている確認事項を分けてまとめて。昨日の午後は、ContextbergのMCP bridgeとSkill導入導線を整理していました。
読んでいたもの:
- Claude Desktop / Claude Code / Codex / OpenClawのMCP設定
- @contextberg/mcp-serverの起動方式
- npx skills add contextberg/skills の導入導線
触っていたもの:
- ExportViewModel.cs の McpCliCommand
- SkillInstallCommand
- ローカルAPI http://localhost:18080 への接続前提
残っている確認:
- Codexでは codex mcp add のコマンドで接続できるか
- Claude Codeでは claude mcp add のコマンドで接続できるか
- MCP serverがstdoutにprotocol以外を出していないか
- Record pauseや除外設定の状態がActivityに反映されるかローカルAPIとMCP bridgeの安全モデル
ContextbergのMCP serverは、記憶データを持つ本体ではありません。npmから起動される薄いprotocol adapterで、MCPのtool requestをデスクトップアプリ内のローカルHTTP APIへ橋渡しします。
| 層 | 役割 | 設計上のポイント |
|---|---|---|
| Contextberg desktop app | 画面・ブラウザ・アプリ利用・キーボード入力・agent履歴をローカルに保存する | データ本体はデスクトップアプリ側にあり、MCP package自体が記憶を保持するわけではない |
| Local API | http://localhost:18080 でActivity、Daily Report、LTM、agent historyを返す | localhost/loopback前提。外部ネットワークから直接読む用途ではない |
| API token | ローカルAPIへのリクエストを認証する | token fileや環境変数から読み、Authorization headerで渡す設計 |
| @contextberg/mcp-server | MCP JSON-RPCとLocal APIの変換を行う | npxで起動できるbridge。stdoutはMCP protocol、ログはstderr側に分ける |
| MCP client | Claude Desktop、Cursor、Codexなどがtoolを呼ぶ | ユーザーの質問に応じて必要なmemoryだけ読む |
この構造にしている理由は、MCP packageをクラウド同期サービスやanalytics collectorにしないためです。bridgeが行う通信は、基本的に親プロセスとのstdioとlocalhostのContextberg APIへのHTTPです。
うまく動かないとき
まずContextbergアプリが起動しているか、ローカルサーバーが動いているか、MCPクライアント側にcontextbergサーバーが表示されているかを確認します。
Record pauseや除外設定が有効だとActivityが生成されない場合があります。Recordタブで記録が増えているかを確認するのが一番早いです。