phren MCP服务器
MCP服务器,索引你的个人电话,并通过全文搜索将其暴露给人工智能代理。
在启动时,它遍历你的phren目录,读取所有 .md 文件,并在内存中构建SQLite FTS5索引。
默认情况下,定期远程检查是关闭的。使他们能够 phren config pull-interval 60 在运行时每分钟检查一次共享的Git存储库,在使用相同存储库的MCP客户端之间进行协调。更改的refs仅作为干净的快进提取和应用;脏存储或发散存储被延迟。拉出的更改刷新索引和现有的托管技能/指令镜像。将此机器配置为 phren config pull-interval 600 (十分钟)或者 phren config pull-interval off. 禁用项目本地存储和手动预设的定期检查;现有的生命周期钩子是单独配置的。
公共界面:78个MCP实现工具,跨越17个目录模块(搜索、任务、发现、笔记、内存、数据、图形、会话、操作/审查、技能、钩子、配置、提取)。
值得注意的已交付功能:
- 寻找生命周期工具:
supersede_finding,retract_finding,resolve_contradiction,get_contradictions - 找到出处:
add_finding.source(human|agent|hook|extract|consolidation|unknown) - 轻量级每日笔记:CRUD in
<project>/notes/YYYY-MM-DD.md,显式搜索,无需自动提示注入即可提升发现 - 跨会话连续性:任务检查点+
session_history - 从注入的上下文结果中寻找影响评分
- 技能注册表行为:范围优先,别名冲突处理,可见性门控,生成
skill-manifest.json - 生命周期惩罚:取代0.25倍,撤回0.1倍,反驳0.4倍的检索置信度
- 从FTS索引中删除不活跃的发现(被取代/撤回的发现不能出现在检索中)
- 自动标记:没有类型标记的结果在写入时从内容中推断出来
- 会话上下文差异:
session_start报告上次会议以来的新发现 - 抗衰减性:确认的发现在重复使用时衰减速度降低3倍
安装
npx @phren/cli init
这设置了phren无需 sudo 或者全局安装。在Windows上,使用 npm install -g @phren/cli 如果 npx 不是可用的。
或者手动添加到Claude Code:
claude mcp add phren -- phren ~/.phren
环境变量
| 变量 | 默认的 | 描述 |
|---|---|---|
PHREN_PATH | ~/.phren | phren实例的路径 |
PHREN_PROFILE | (没有) | 活动配置文件名称。未设置时,phren使用 machines.yaml 可用时,否则退回到无作用域视图 |
PHREN_PULL_INTERVAL_SECONDS | 0 (关闭) | 覆盖机器本地拉取间隔。从30秒到86400秒,或者 0/off 关闭MCP周期性检查。 |
PHREN_ACTOR | OS用户/ env | 治理/审计RBAC检查中使用的参与者标识 |
工具
看到 文档/ api-reference.md 获取完整的API参考。
集成模型
- Claude:完整的本地生命周期钩子(
SessionStart,UserPromptSubmit,Stop,PostToolUse) + MCP - Copilot CLI / Cursor / Codex: MCP +生成的钩子配置+会话包装器二进制文件
治理和安全重点
- RBAC使用
.config/access-control.json和.runtime/access-control.local.json - Web UI只绑定环回,使用每次运行的验证令牌,对突变强制CSRF,并设置CSP标头
- 遥测技术仅供选择使用(
phren config telemetry on),并储存在本地.runtime/telemetry.json
search_knowledge
全文搜索所有带同义词扩展的索引标记文件。
query: string - FTS5 query (supports AND, OR, NOT, "phrase matching")
limit?: number - Max results, 1-20, default 5
type?: string - Filter: "claude", "findings", "reference", "summary", "task", "skill"
project?: string - Filter to a specific project
tag?: string - Filter findings by type tag: decision, pitfall, pattern, tradeoff, architecture, bug
since?: string - Filter findings by date: "7d", "30d", "YYYY-MM", "YYYY-MM-DD"
status?: string - Filter by lifecycle status: active, superseded, contradicted, stale, invalid_citation, retracted
include_history?: boolean - Include superseded/retracted findings (default false)
synthesize?: boolean - Generate a synthesis paragraph from top results using an LLM
get_project_summary
返回项目的摘要。md内容,到其AGENTS的路径。Md,以及索引文件列表。
name: string - Project name (e.g. "my-app", "backend")
list_projects
列出活动配置文件中的所有项目,并提供简要说明以及存在哪些文档。
没有参数。
它是如何工作的
- 读取
PHREN_PATH(或默认为~/.phren) - 解析来自的活动概要文件
PHREN_PROFILE,或frommachines.yaml当env变量未设置时 - 如果还没有活动的概要文件可以解析,则退回到顶级项目目录的未限定范围视图
- 遍历每个项目目录,读取
.md文件,按文件名对它们进行分类 - 用波特词干构建内存中的SQLite FTS5索引
- 使用MCP协议通过工作室提供工具
文件类型由文件名和目录派生: AGENTS.md - - - - - - >“克劳德。” summary.md - - - - - - >“总结”, FINDINGS.md - - - - - - >“发现”, tasks.md ->“任务”,文件下 notes/ ->“笔记”,文件下 reference/ ->“引用”,文件下 skills/ - - - - - - >“技巧”。
开发
cd ~/phren
npm install
npm run build # Compile TypeScript
npm run dev # Run with tsx (hot reload)
npm test # Run all tests