cursor-chats-bridge
cursor-chats-bridge
Claude CodeがCursorでの作業内容をリアルタイムかつセッションをまたいで確認できるようにする読み取り専用ブリッジです。
Claude CodeとCursorを並行して使用している場合(例:Claudeで計画や監査を行いながら、Cursorでエージェント主導の編集を行うなど)、このスキルはCursorのローカルチャットデータベースをMCPサーバーとしてClaudeに接続します。さらに、5分ごとに新しいメッセージをジャーナルに記録するため、Claudeが起動していなかった時間帯の「今朝Cursorで何をしていたか?」といった質問にも回答できるようになります。
設計上、読み取り専用です。Cursorのデータを変更することはありません。
機能
インストールすると、Claude Codeで7つのツール(すべて mcp__cursor-chats__ プレフィックス付き)が利用可能になります:
ツール | 説明 |
| チャット履歴全体で見つかったすべてのCursorワークスペースを、ハッシュIDとパスとともに一覧表示します。 |
| Cursorのチャットを一覧表示します。ワークスペースID、パスのサブ文字列、またはClaudeの |
| 特定のチャット(composer UUIDによる)のメッセージを取得します。 |
| 利便性ツール:ワークスペースで現在開いているCursorチャットのライブメッセージを取得します。 |
| チャット名、サブタイトル、メッセージテキスト全体をサブ文字列で検索します。 |
| バックグラウンドポーラーによってキャプチャされた、追記専用の新しいメッセージジャーナルを読み取ります。 |
| 時間枠ごとの統計を集計します:ロール別のメッセージ数、触れられた会話、最近のテキストスニペットなど。 |
さらに、Windowsのタスクスケジューラ ClaudeCursorChatPoller が5分ごとに実行され、各ワークスペースのアクティブなチャット内の新しいメッセージを検出し、 ~/.claude/mcp/cursor-chats/journal.ndjson にJSONライン形式で追記します。
Related MCP server: cursor-history-mcp
存在理由
CursorのチャットデータはローカルのSQLite KVストア(%APPDATA%\Cursor\User\globalStorage\state.vscdb)に保存されていますが、2つの厄介な制約があります:
ワークスペースごとに現在開いているチャットのみがローカルにメッセージを保持し、古いチャットはCursorのクラウドにアーカイブされ、メタデータのみが残ります。
公開APIが存在しません。
そのため、ライブのMCPクエリだけでは不十分です。午後3時に「今朝Cursorで何をした?」と尋ねても、関連するメッセージはすでにアーカイブされている可能性があるからです。ポーラーはメッセージが表示された瞬間にキャプチャすることでこれを解決し、ワークスペースタグを付与することで、Claudeのプロジェクトごとにクリーンにフィルタリングできるようにしています。
アーキテクチャ
┌──────────────────────────────────────────────────────────────────┐
│ Windows Task Scheduler >> pythonw poller.py >> /5 min, 24/7│
└──────────────────────────────────────────────────────────────────┘
│
▼ (read mode=ro,immutable=1)
┌──────────────────────────────────┐
│ Cursor SQLite globalStorage │ ← live, written by Cursor
│ state.vscdb / cursorDiskKV │
└──────────────────┬───────────────┘
│
▼ (append-only)
┌──────────────────────────────────┐
│ ~/.claude/mcp/cursor-chats/ │
│ ├─ active_snapshot.json │
│ ├─ journal.ndjson │
│ └─ poller.log (errors) │
└──────────────────┬───────────────┘
│
▼ (on-demand)
┌──────────────────────────────────┐
│ MCP server (server.py) │
│ exposes 7 tools │
└──────────────────┬───────────────┘
│
▼
Claude Code内部構造の詳細(SQLiteキーパターン、ワークスペース識別、エッジケースなど)については、references/architecture.md を参照してください。
要件
Windows 10 / 11(Linux/macOSは未対応。
schtasksおよびWindows版Cursorのパスを使用するため)Python 3.10+ (
pythonw.exeが利用可能であること。タスクスケジューラ用のサイレント実行用)Claude Code CLI が
PATHにあること(claude --versionが動作すること)Cursor がインストールされ、少なくとも一度起動されていること(SQLiteは初回起動時に作成されます)
インストーラーはこれらすべてをチェックし、不足している場合はアクション可能なエラーを即座に報告します。
インストール
Claude Codeスキルとして(推奨)
フォルダをClaude Codeのスキルディレクトリに配置します:
~/.claude/skills/cursor-chats-bridge/Windowsの場合:
C:\Users\<ユーザー名>\.claude\skills\cursor-chats-bridge\Claude Codeを再起動します(または新しいセッションを開きます)。
Claudeに「install the cursor-chats bridge」や「set up the Claude-Cursor connection」のように話しかけます。スキル説明はこれらのフレーズでトリガーされるように調整されています。
Claudeが
SKILL.mdを読み込み、scripts/install.ps1を実行して結果を報告します。Claude Desktopを再起動(システムトレイから完全に終了)して、MCPサーバーを読み込みます。
手動インストール(Claude不要)
エージェントによる手順をスキップしたい場合:
powershell -ExecutionPolicy Bypass -File "C:\Users\<you>\.claude\skills\cursor-chats-bridge\scripts\install.ps1"スクリプトの動作:
前提条件(Python、
pythonw.exe、claudeCLI、Cursor SQLiteパス)を確認します。server.pyとpoller.pyを~/.claude/mcp/cursor-chats/にコピーします。不足している場合はpip経由でPythonの
mcpパッケージをインストールします。以前の
cursor-chatsMCP登録があれば削除し、新しく追加します(デフォルトスコープ:local)。ClaudeCursorChatPollerタスクスケジューラを作成/更新します(5分ごと、pythonw.exeでサイレント実行)。ポーラーを一度実行して、スナップショット/ジャーナルのシードを作成します。
再実行は安全です。すべてのステップで強制上書きセマンティクスが使用されます。状態ファイル(active_snapshot.json、journal.ndjson)は保持されます。
インストーラーフラグ
フラグ | 効果 |
| 進捗出力を抑制します。 |
| タスクスケジューラの作成をスキップします(一度限りの使用やデバッグ用)。 |
| MCP登録スコープ。デフォルトは |
検証
インストールとClaudeの再起動後:
claude mcp list
schtasks /Query /TN ClaudeCursorChatPoller /FO LIST両方にエントリが表示されるはずです。claude mcp list 行は cursor-chats に対して ✓ Connected と報告されるはずです。
Claudeセッション内で、以下のように質問できます:
"List my Cursor workspaces." "What's the latest message from my Cursor agent?" "Summarize what I did with Cursor this morning."
Claudeによる利用方法(典型的なパターン)
MCP自体はポーリングを行いません。Claudeが必要と判断したときにツールを呼び出します。バックグラウンドポーラー(別プロセス)が継続的なキャプチャを処理するため、ジャーナルクエリはライブの会話を開いたままにしなくても「Claudeが見ていない間に何が起きたか」に回答できます。
例:
再開 — "continue what I was doing with Cursor" → Claudeが
get_active_chatを呼び出してライブの会話を取得し、要約して、どこから引き継ぐべきか尋ねます。振り返り — "recap of my Cursor activity since 9 AM" → Claudeが
get_journal_summary(window_minutes=N)を呼び出し、何が変更されたかを説明します。クロスチェック — "is what Cursor is suggesting consistent with our plan?" → Claudeが最新のCursorメッセージを読み取り、自身のコンテキストと比較して矛盾を指摘します。
検索 — "where did I discuss the SQL backfill with Cursor?" → Claudeが
search_chats("backfill")を呼び出し、get_chatで詳細を確認します。
プライバシーとセキュリティ
SQLiteによる読み取り専用強制 (
mode=ro,immutable=1)。バグのあるスクリプトであってもCursorのデータを変更することはできません。すべてのデータはローカルに保持されます。 ジャーナルとスナップショットは
~/.claude/配下にあり、ユーザープロファイルレベルでWindows ACLによって保護されています。外部へのアップロードは一切行われません。認証情報の注意点。 Cursorのチャットには、貼り付けたAPIキーやパスワードなどが含まれている可能性があります。ジャーナルはメッセージテキストをそのまま保存します。懸念がある場合は、Cursorに貼り付ける内容を慎重に選ぶか、ジャーナルを事後的にフィルタリングしてください。
MCPスコープ。 デフォルトの
localは、インストーラーを実行したプロジェクトでのみブリッジがアクティブになることを意味します。グローバルにするには-Scope userを使用してください。
アンインストール
powershell -ExecutionPolicy Bypass -File "<skill-dir>\scripts\uninstall.ps1"タスクスケジューラを削除し、ClaudeからMCPの登録を解除し、デフォルトで ~/.claude/mcp/cursor-chats/ を削除します。active_snapshot.json と journal.ndjson を保持したい場合は -KeepData を渡してください。
制限と既知の問題
Windowsのみ。 macOS/Linux版も可能ですが(
schtasksの代わりにcron、macOSでは~/Library/Application Support/Cursor/...パス)、未実装です。Cursorスキーマへの依存。 このブリッジは非公開のCursor内部構造を読み取ります。Cursorが
cursorDiskKVをリネームしたり、バージョン間でcomposerのJSON構造を変更したりした場合、スクリプトにパッチが必要になる可能性があります。ジャーナルが成長しなくなった場合はpoller.logを確認してください。アクティブチャットのみ。 古い/アーカイブされたチャットはメタデータのみを提供します。ライブメッセージは、ワークスペースごとに現在開いているチャットに対してのみ存在します。
バックフィルなし。 ポーラーはワークスペースを初めて認識した際の過去のメッセージをスキップします(ジャーナルが溢れるのを防ぐため)。将来のメッセージのみがキャプチャされます。
Cursorが開いている必要があります。 新しいメッセージがSQLiteに記録されるにはCursorが開いている必要があります。Cursorが閉じている場合、ポーラーは正常に動作しますが、新しいエントリは書き込まれません。
プロジェクト構成
cursor-chats-bridge/
├── SKILL.md # YAML frontmatter + Claude-facing instructions
├── README.md # this file
├── scripts/
│ ├── server.py # MCP server (Python, ~300 lines)
│ ├── poller.py # Background poller (Python, ~180 lines)
│ ├── install.ps1 # Idempotent installer
│ └── uninstall.ps1 # Clean removal
└── references/
└── architecture.md # Deep technical doc (SQLite layout, edge cases)貢献
プルリクエストを歓迎します。特に以下のような貢献を募集しています:
macOS / Linuxサポート(cron + Library/Application Supportパス)
スキーマ耐性:Cursorのバージョン変更を早期に検出するヘルパー
ジャーナルのローテーション / 圧縮機能
非フランス語のクエリに対するスキルのトリガー精度の向上
ライセンス
MIT — 保証なしで自由に使用してください。LICENSE を参照してください。
免責事項
これはサードパーティ製のツールであり、AnthropicやCursorとは提携していません。非公式な手段でCursorのローカルデータを読み取るため、将来のCursorのバージョンで動作しなくなる可能性があります。特に機密データを扱うマシンでは、自己責任で使用してください。
This server cannot be deployed
Maintenance
Related MCP Connectors
Search your AI chat history (ChatGPT, Claude, Codex) from any MCP client. Remote, private, read-only
Marketo MCP server for AI. 130 tools to operate Marketo from Claude, Cursor, or ChatGPT.
Query 40 databases from Claude, ChatGPT, or Cursor — on any device. Read-only, encrypted, audited.
Real-time chat hub for AI agents — Claude Code, Cursor, Cline, Codex over MCP or REST.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA Python server implementing the Model Context Protocol that exposes tools for querying external APIs, compatible with Claude Desktop and ChatGPT Desktop.-
- AlicenseAqualityAmaintenanceMCP server for browsing, searching, exporting, and backing up your Cursor AI chat history directly into Claude via natural language.864 npm32MIT
- FlicenseNot gradedqualityCmaintenanceA secure, read-only MCP server that empowers Claude Desktop and AI agents to safely query and inspect local SQLite databases.-
- AlicenseNot gradedqualityBmaintenanceMCP server for unified full-text search across chat histories from Claude Code, Codex, Cursor CLI, and Antigravity CLI, using SQLite FTS5. Provides read-only tools to search sessions, list conversations, and retrieve session details.MIT