知识推送包

Laravel MCP Pusher是一个用于将项目经验和实施细节通过HTTP API推送到中央MCP服务器的Laravel包,支持多种AI客户端查询知识库。

  • by ashwinmram
  • PHP
  • 本地部署
  • 更新于
在 GitHub 查看 ashwinmram/mcp-pusher

使用说明

Laravel MCP推送器

Laravel包通过HTTP API将项目中的经验教训和项目实施细节推送到中央MCP服务器。与合作 MCP服务器经验教训 因此,AI代理 光标, 克劳德代码, 谷歌反重力,其他MCP客户端可以查询您的知识库。

3.0中的新功能

3.0版本是一个 捕获和推送工作流 围绕磁盘上的会话草稿构建(在任何AI客户端中都能经受上下文压缩)。

之前(1.x/2.x) 之后(3.0)
编辑 docs/lessons-learned.md /JSON,然后推送 mcp:append 会议期间→ JSONL草案
mcp:push-lessons + mcp:push-project-details 单身 mcp:push (通用+项目)
聊天压缩时丢失知识 草稿 docs/.mcp-session/ 坚持

命令:

  • mcp:append --一个结构化条目→ lessons-draft.jsonl 或 project-details-draft.jsonl
  • mcp:push --每个会话向MCP服务器发布一次草稿
  • mcp:extract-session --仅使用git回退或从提交历史中进行历史播种

可选自动化: 光标 preCompact 钩子可以显示 知识获取提示 在压实之前。Claude Code和Antigravity没有等效的钩子——手动粘贴提示。

看 更改日志.md 获取完整的发行说明。

composer require ashwinmram/mcp-pusher:^3.0

# Migration from 1.x / 2.x
# Before: mcp:push-lessons + mcp:push-project-details
# After:  mcp:push --source=your-project

最佳实践(请先阅读此内容)

不要 手型 php artisan mcp:append 正常工作时使用JSON。

  1. 粘贴 知识获取提示 在上下文压缩之前(或任何你想捕捉学习的时候)将其导入你的代理。
  2. 代理人最近收集 git日志+差异,综合从会话中学到的知识并提交,然后运行 mcp:append 对于每节课,条目都会进入 docs/.mcp-session/*-draft.jsonl.
  3. 会议结束: 审阅草稿,然后运行 mcp:push 一次(见 会议结束).

仅光标(可选): 安装 预紧凑型挂钩 因此,光标会自动显示相同的提示。

步骤 你做什么 磁盘上运行什么
捕捉 将捕获提示提交给您的代理 代理收集git上下文,综合课程,运行 mcp:append → JSONL草案
发布 php artisan mcp:push --source=your-project HTTP推送到MCP服务器
后备方案 mcp:extract-session 您先请 提交 (默认:最新提交) Git日志+差异统计→ JSONL草案
播种 mcp:extract-session --since-git=HEAD~N 关于一个成熟的回购协议 更深入的历史;推送前审查草稿

知识获取提示

复制下面的短块 用于代理或macOS文本替换(少于2000个字符)。看 快速参考 查看字段详细信息和示例。

光标: 随着 预紧凑型挂钩 安装后,钩子发出的文本与 user_message 自动(来源: stubs/knowledge-capture-prompt.txt).

Context is about to compact — capture session knowledge NOW.

Step 0 — Run:
git log HEAD~10..HEAD --oneline --no-decorate
git diff HEAD~1..HEAD --stat
Use session + git together. Not a git repo? Session only. Do NOT append raw log, SHAs, or diff stats.

Step 1 — For each learning, execute mcp:append (don't just describe):
php artisan mcp:append '{"knowledge_scope":"generic|project","title":"5-12 words","summary":"problem + when","category":"...","subcategory":"...","type":"ai_output|project_detail","tags":["..."],"content":"paragraph with takeaway","metadata":{"source":"agent"}}'
Drafts: docs/.mcp-session/lessons-draft.jsonl (generic) or project-details-draft.jsonl (project). Never title "Git commit: …". Nothing worth saving? Report 0 generic, 0 project.

Step 2 — Report generic count, project count, every title appended.

快速参考

适用于需要更多详细信息的代理(不适用于macOS文本替换——2000个字符限制)。

范围对:

knowledge_scope 类型 草稿文件
generic ai_output docs/.mcp-session/lessons-draft.jsonl
project project_detail docs/.mcp-session/project-details-draft.jsonl

领域:

  • 标题 --5-12个单词,具体且可搜索(从不 Git commit: …)
  • 摘要 --1-2句话:问题已解决,何时应用
  • 内容 --带有上下文、方法和要点的短段落(不是一句话)
  • 元数据源 --总是 "agent"

最小通用示例:

php artisan mcp:append '{"knowledge_scope":"generic","title":"Pest Process fake for git subprocess tests","summary":"Fake Process when testing Artisan commands that shell out to git.","category":"testing-patterns","subcategory":"pest-mocking","type":"ai_output","tags":["pest","git"],"content":"Use Process::fake() with a callback keyed on git argv...","metadata":{"source":"agent"}}'

坏例子(不要这样做): 标题 Git commit: abc123 Fix tests,内容 abc123 Fix tests

文本替换提示: macOS键盘→ 文本替换→ 使用触发器 /mcpcap (无空格)并将上面的短块粘贴到 随着.

将您的AI客户端连接到MCP服务器

配置您的客户端以访问经验教训服务器(以及可选的项目详细信息服务器)。配置示例:

客户端 存根示例
光标 stubs/mcp-client-config/cursor-mcp.json.example
克劳德代码 stubs/mcp-client-config/claude-mcp.json.example
谷歌反重力 stubs/mcp-client-config/antigravity-mcp_config.json.example

完整设置: mcp服务器自述文件.

代理启动说明

为您的AI客户端安装代理说明:

客户端 命令
光标 php artisan mcp:install-cursor-rules
克劳德代码 php artisan mcp:install-claude-instructions
谷歌反重力 php artisan mcp:install-antigravity-skills
全部 php artisan mcp:install-agent-instructions

看 stubs/agent-instructions/README.md 用于标记和手动安装路径。

光标

php artisan mcp:install-cursor-rules

可选: --with-hooks (预紧凑型捕获), --with-cursorrules (短 .cursorrules 指数), --force (覆盖)。

副本 stubs/cursor-rules/*.mdc 进入 .cursor/rules/:

规则 适用时
mcp-session-startup.mdc 总是 --在课程开始时查询课程+项目详细信息
mcp-session-capture.mdc 即期 — mcp:append + mcp:push 工作流程

克劳德代码

php artisan mcp:install-claude-instructions [--with-claude-md]

将模块化规则复制到 .claude/rules/ (mcp-session-startup.md, mcp-session-capture.md).可选的 --with-claude-md 添加一个短根 CLAUDE.md 指数。

谷歌反重力

php artisan mcp:install-antigravity-skills [--global]

在下安装工作空间技能 .agent/skills/mcp-session-startup/ 和 mcp-session-capture/ (每个与 SKILL.md).使用 --global 为了 ~/.gemini/antigravity/global_skills/.承诺 .agent/skills/ 与您的团队分享。

安装所有客户端

php artisan mcp:install-agent-instructions [--with-hooks] [--with-claude-md] [--with-cursorrules] [--global]

限制范围: php artisan mcp:install-agent-instructions cursor claude

会议结束

当您准备发布时,请查看 docs/.mcp-session/lessons-draft.jsonl 和 project-details-draft.jsonl.删除所有原始的git回收行(标题如 Git commit: … 或 metadata.source: git)在推之前。如果草稿仍然很薄,并且您已经提交了会话工作,请运行 php artisan mcp:extract-session 作为最后的手段(只产生候选人——在推送之前编辑或删除)。然后发布一次:

php artisan mcp:push --source=<your-project>

替换 <your-project> 和你一起 --source 值(必须与项目详细信息MCP匹配 ?project=).

需求

安装

composer require ashwinmram/mcp-pusher:^3.0

配置

添加 config/services.php:

'mcp' => [
    'server_url' => env('MCP_SERVER_URL'),
    'api_token' => env('MCP_API_TOKEN'),
],

.env:

MCP_SERVER_URL=https://your-mcp-server.com
MCP_API_TOKEN=your-api-token-here

将会话草稿添加到 .gitignore (参见 stubs/gitignore-mcp-session.example):

/docs/.mcp-session/

命令

mcp:install-cursor-rules

php artisan mcp:install-cursor-rules [--force] [--with-hooks] [--with-cursorrules]

将MCP会话启动和知识捕获的游标规则安装到 .cursor/rules/.

mcp:install-claude-instructions

php artisan mcp:install-claude-instructions [--force] [--with-claude-md]

将Claude Code规则安装到 .claude/rules/.可选 --with-claude-md 复制一个短片 CLAUDE.md 指数。

mcp:install-antigravity-skills

php artisan mcp:install-antigravity-skills [--force] [--global]

将反重力技能安装到 .agent/skills/ (工作空间)或 ~/.gemini/antigravity/global_skills/ 和 --global.

mcp:install-agent-instructions

php artisan mcp:install-agent-instructions [cursor|claude|antigravity ...] [--force] [--with-hooks] [--with-claude-md] [--with-cursorrules] [--global]

为一个或多个客户端运行上述安装命令(默认:all)。

mcp:append

将一个条目附加到正确的草稿文件中。这 捕获提示 告诉您的代理何时以及如何运行。

  • knowledge_scope: "generic" → docs/.mcp-session/lessons-draft.jsonl
  • knowledge_scope: "project" → docs/.mcp-session/project-details-draft.jsonl

高级(调试):

php artisan mcp:append --file=entry.json

mcp:push

php artisan mcp:push --source=your-project [--no-truncate]

读取JSONL文件草稿,推送到 /api/lessons 和 /api/project-details 当每个桶都有内容时。成功后清除草稿文件,除非 --no-truncate.

mcp:extract-session (git → 草稿)

Git只回收与JSON相同的草稿文件 mcp:append确实如此 不 读取未提交的文件-- 先承诺 (单靠舞台是不够的)。

php artisan mcp:extract-session [--since-git=HEAD~1]

如何 --since-git 控制深度

该选项设置提交范围的位置 开始从那个裁判到 HEAD 被概括为草稿行(git log 单衬垫+ git diff --stat 范围)。

命令 包括提交(大约) 典型用途
mcp:extract-session 仅限最新提交(HEAD~1..HEAD) 会话结束补救
mcp:extract-session --since-git=HEAD~7 最近7次提交 最近冲刺/工作周
mcp:extract-session --since-git=HEAD~30 最后30次提交 更广泛的回填
mcp:extract-session --since-git=main 承诺 HEAD 还没有 main 功能分支先行 main
mcp:extract-session --since-git=v1.0.0 由于标签或SHA 释放到HEAD快照
  • 默认 HEAD~1 --只有 提示 提交(一次提交)。
  • HEAD~N --增加 N 深入了解历史(在长时间运行的仓库上安装mcp-pusher时很有用)。
  • main --与 git log main..HEAD (见下文警告)。

--since-git=main (仅承诺)

确实如此 不 阅读暂存区或工作树。

情况 结果
提前提交的功能分支 main 提取这些分支提交+差异统计
On main,仅限于未提交/分阶段的更改 空范围 --命令失败;先提交或使用 HEAD~N
main 和 HEAD 指向同一个commit 空范围 --使用 HEAD~N 或者用标签/SHA代替

关于播种历史 上 main,使用 HEAD~N (例如。 HEAD~50),不 main..HEAD.

这 知识获取提示 已经指示代理在preCompact捕获期间收集git上下文。使用 mcp:extract-session 只有当捕捉被跳过时。

用例A:会话回退

当git通知捕获和 mcp:append 都被跳过了,但您提交了会话工作:

php artisan mcp:extract-session
# review docs/.mcp-session/*-draft.jsonl
php artisan mcp:push --source=your-project

用例B:为现有项目播种

在成熟的repo上安装mcp-pusher——从git引导草稿,然后发布:

php artisan mcp:extract-session --since-git=HEAD~50   # tune depth to your history
# edit drafts: replace heuristic lines with real lessons (or re-capture via agent + mcp:append)
php artisan mcp:push --source=your-project

使用 --since-git=main 只有当你有一个 提交未合并到的功能分支 main.喜欢在推送前编辑草稿;提取的行是 候选人,没有完成课程。

限制

  • 输出是启发式的(提交主题+差异统计),而不是人工智能总结的知识。
  • 较大的范围会产生许多草稿行——请在之前进行审查 mcp:push.
  • 回购中的首次提交: HEAD~1 可能无效;使用 HEAD~N 或显式SHA/标签。

文件布局

your-project/
└── docs/
    └── .mcp-session/
        ├── lessons-draft.jsonl         ← generic lessons (mcp:append)
        └── project-details-draft.jsonl ← project details (mcp:append)

可选自动化

光标(预紧凑型挂钩)

安装一次,以便Cursor显示 知识获取提示 作为 user_message 在上下文压缩之前。

先决条件: 光标带 胡克探员; jq 或 python3 在PATH上。

编辑器安装:

mkdir -p .cursor/hooks
cp vendor/ashwinmram/mcp-pusher/stubs/cursor-hooks/hooks.json.example .cursor/hooks.json
cp vendor/ashwinmram/mcp-pusher/stubs/cursor-hooks/pre-compact-checkpoint.sh .cursor/hooks/
cp vendor/ashwinmram/mcp-pusher/stubs/knowledge-capture-prompt.txt .cursor/hooks/
chmod +x .cursor/hooks/pre-compact-checkpoint.sh

单体仓库 (例如。 mcp服务器):使用 packages/laravel-mcp-pusher/stubs/cursor-hooks/ 路径而不是 vendor/….

Stub 目的
hooks.json.example 电线 preCompact 仅
pre-compact-checkpoint.sh 阅读 knowledge-capture-prompt.txt,输出 user_message
knowledge-capture-prompt.txt 文本与 知识获取提示 (钩子读取此文件)

可选光标规则: php artisan mcp:install-cursor-rules --with-hooks --with-cursorrules

手动规则复制: stubs/cursor-rules/mcp-session-capture.mdc → .cursor/rules/ (传统路径 stubs/mcp-session-capture.mdc 完全相同)

故障排除: chmod +x 剧本;如果出现以下情况,请手动粘贴捕获提示 preCompact 从不生火。

克劳德密码与谷歌反重力

无内置预压钩。 复制 捕获提示 阻止将此README插入您的代理。

安全

钩子在你的机器上运行shell。启用前请检查脚本。保持 docs/.mcp-session/ 被忽视了。

运作原理

  • 代理运行 mcp:append → 磁盘上的JSONL草稿(压缩后仍有效)
  • mcp:push → POST /api/lessons 和 /api/project-details
  • 服务器按内容哈希进行重复数据消除

许可证

麻省理工学院