Token导航 LogoToken导航TokenDH.com
Conversation Search MCP logo
数据服务stdio官方级别未说明来源级核验

Conversation Search MCP

MCP Server

一个基于SQLite FTS5的全文搜索工具,用于索引和搜索Claude Code的对话历史记录,支持CLI和MCP服务器模式。

工具数

4

提示词数

0

GitHub Stars

2

资源数

0
全文搜索PythonClaude开发工具Claude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

gebeer

提供方

gebeer

最后核验

2026/5/17 20:23

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

uvx --from git+https://github.com/gebeer/conversation-search.git \

详细介绍

对话搜索

对Claude Code对话历史进行FTS5全文搜索。对JSONL转录本进行索引 ~/.claude/projects/ 并将其作为可搜索内存公开。可作为MCP服务器和CLI工具使用。

基于 单个文件中的可搜索代理内存 埃里克·特拉梅尔。

开发流程

最初的实现是由Claude Code按照结构化的管道生成的:

  1. 产品需求文档 (ai-docs/features/001-conversation-search-mcp.md)--要求和设计决策
  2. 构建规范 (specs/conversation-search-mcp.md)--从PRD生成,包含精确的函数签名、过滤规则、接受标准和验证命令
  3. 实施 (conversation_search.py)--由Claude Code使用构建规范作为指令编写

搜索后端后来从内存中的bm25s迁移到SQLite FTS5(specs/fts5-migration.md),由Claude(Opus 4.6)和Codex(GPT-5.4)进行同行评审,并作为5个连续的子代理任务执行。

运作原理

Claude Code将对话记录存储为JSONL文件 ~/.claude/projects//。此服务器:

  1. 通过glob模式发现匹配的项目目录
  2. 将JSONL解析为回合(用户消息+助理响应+工具调用)
  3. 构建存储在以下位置的SQLite FTS5索引 ~/.cache/conversation-search/index.db
  4. 在热启动时,仅重新分析mtime/大小已更改的文件(亚秒启动)
  5. 监视文件系统的更改和重新索引(60秒去抖动)
  6. 通过stdio提供4个MCP工具(serve)或SSE(daemon)

需求

  • uv (Python>=3.10会自动解析)

无需venv或手动安装。 uv run 手柄 mcp, uvicorn,以及 watchdog 自动。不 bm25s 或者需要其他搜索库——SQLite FTS5是Python标准库的一部分。

安装

添加到MCP配置中——项目级别(.mcp.json)或全球(~/.claude.json 在...之下 mcpServers 按键):

{
  "mcpServers": {
    "conversation-search": {
      "command": "uvx",
      "args": [
        "--from", "git+https://github.com/gebeer/conversation-search.git",
        "conversation-search", "connect"
      ]
    }
  }
}

connect 首次使用时启动共享守护进程,并在会话之间重用它(请参见 守护程序模式).对于独立stdio模式(每个会话一个索引),请替换 connect 随着 serve.

--pattern 标志控制下的项目目录 ~/.claude/projects/ 被编入索引。它默认为 * (所有项目)如果省略。图案包含 / 被视为文件系统路径,并自动转换为编码的目录名格式。

模式范围
*所有项目
~/repos/openclaw单个项目
~/repos/*所有repos项目
~/repos/open*以“open”开头的项目
--pattern="-home-claude-repos-*"编码格式(需要 = 前导语法 -)

更改MCP配置后重新启动Claude Code。

CLI使用情况

该工具也可以直接从命令行用于脚本编写和调试:

uvx --from git+https://github.com/gebeer/conversation-search.git \
  conversation-search search --query "heartbeat" --limit 5

conversation-search list --project "claude" --limit 10

conversation-search read-turn --session-id "" --turn 5

conversation-search read-conv --session-id "" --offset 0 --limit 10

第一次之后 uvx 调用,the conversation-search 命令被缓存,可以直接调用。或者,使用 uv run conversation_search.py 从本地克隆。

所有CLI命令都将打印精美的JSON输出到stdout。索引进度已打印到stderr。使用 2>/dev/null 以抑制配管时的进度输出。

守护进程模式(建议用于多个会话)

当同时运行多个Claude Code会话时,使用守护进程模式共享一个 SQLite FTS5索引,而不是为每个会话打开单独的数据库连接。

设置

默认值 安装 配置已使用 connect,这会自动启用守护进程模式。在第一次会话开始时, connect 在后台启动守护进程。后续会话会重用它。守护进程在15分钟不活动后退出。

手动守护程序控制

# Start daemon in foreground (useful for debugging)
conversation-search daemon

# Custom port and idle timeout
conversation-search daemon --port 9300 --idle-timeout 1800

# Stop daemon
kill $(cat ~/.cache/conversation-search/daemon.pid)

配置

标志默认值描述
--port9237SSE服务器的本地主机端口
--idle-timeout900秒守护进程退出前处于非活动状态

两面旗帜都起作用 daemonconnect 子命令。

运作原理

Claude Code session A ──┐
Claude Code session B ──┼── connect (stdio↔SSE bridge) ──► daemon (SSE on localhost:9237)
Claude Code session C ──┘                                       │
                                                          • one FTS5 index (~10 MB)
                                                          • one filesystem watcher
                                                          • one reindex loop

没有守护进程: N个会话各自打开相同的SQLite数据库(WAL模式处理并发读取)。 使用守护进程: 单作者/观察者;所有会话通过SSE共享一个连接。

工具

search_conversations

FTS5全文搜索所有索引轮次。所有术语均隐式与。

参数类型默认值说明
querystr必填FTS5搜索查询。所有术语必须匹配(隐含AND)。
limitint10最大结果
session_id`str \None`None筛选到一个会话
project`str \None`None项目名称上的子字符串筛选器

返回排名结果 session_id, turn_number, score, snippet (上下文窗口 [[match]] 标记), timestamp.

查询句法

语法示例含义
关键词heartbeat timer两者必须匹配(隐式AND)
短语"systemd timer"精确短语
布尔值heartbeat AND NOT clawd 布尔运算符
前缀buffer*前缀匹配
heartbeat OR cron任一术语
分组(timer OR cron) AND heartbeat分组布尔值
字面意思literal:foo.bar()类似代码的查询,跳过FTS5语法解析

list_conversations

使用元数据浏览索引会话。

参数类型默认值说明
project`str \None`None项目名称上的子字符串筛选器
limitint50最大结果

返回按以下方式排序的会话 last_timestamp desc,与 summary, turn_count, cwd, git_branch.

read_turn

单圈高保真检索。重新解析源JSONL(不是索引)。

参数类型说明
session_idstr会话UUID
turn_numberint零基转弯指数

退货完成 user_text, assistant_text,以及 tools_used 带有渲染的工具细节。

read_conversation

对一节课中连续轮次的分页阅读。

参数类型默认值说明
session_idstr必需会话UUID
offsetint0开始转弯
limitint10转弯次数

使用模式

这4个工具通过MCP自动暴露给助手——中没有额外的说明 CLAUDE.md, AGENTS.md,或需要类似的文件。服务器还提供 instructions 元数据通过MCP协议指导助手有效使用。

广泛搜索,然后深入阅读:

search_conversations("ProcessWire login redirect")  ->  find relevant turns
read_turn(session_id, turn_number)                   ->  get full context
read_conversation(session_id, offset, limit)         ->  read surrounding turns

FTS5要求所有查询项匹配(隐式AND)。使用特定关键字以获得最佳结果。对于非此即彼或匹配,请使用显式 OR。对于带有特殊字符的类代码查询,请使用 literal: 前缀。

目录标签

目录标签

全文搜索PythonClaude开发工具本地部署对话历史SQLiteMCP服务

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

session

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

4

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiosession部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP