提示词语义搜索服务

Promptbook MCP 是一个基于RAG技术的提示词语义搜索服务,帮助开发者自动存储、组织和搜索AI会话中的提示词。

  • by isaacpalomero
  • Python
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 isaacpalomero/promptbook-mcp

使用说明

🤖 MCP提示簿

使用RAG支持的语义搜索进行人工智能提示的个人烹饪书

✨ 这是什么?

MCP提示簿 是一个即插即用服务器,帮助使用AI编码助手(如GitHub Copilot、Claude等)的开发人员:

  • 📚 商店 自动从AI会话中获取提示
  • 🔍 搜索 提示由 意义,而不仅仅是关键字(RAG支持)
  • 🤖 访问 任何MCP兼容工具中的提示库
  • 📊 组织 按类别提示(重构、测试、调试等)

非常适合: 重复使用人工智能提示并希望有一个可搜索的知识库的开发人员。


🚀 快速开始

30秒后开始跑步:

选项1:自动设置(推荐)

git clone https://github.com/isaacpalomero/promptbook-mcp.git
cd promptbook-mcp
./setup.sh

就是这样! 🎉

选项2:Docker

git clone https://github.com/isaacpalomero/promptbook-mcp.git
cd promptbook-mcp
docker-compose up -d

完成!您的服务器正在运行。


💡 用例

问题: 上周,您向ChatGPT/Copilot询问了重构的完美提示。现在你找不到了。

解决方案: Promptbook MCP会自动保存并索引您的所有提示。

# Later, search by meaning
search_prompts("refactor typescript to use dependency injection")
→ Returns your exact prompt from last week

真实案例

  1. 重构模式 -存储您最好的“干净代码”提示
  2. 测试策略 -找到完美的测试结构提示
  3. 调试工作流 -访问经过验证的调试提示
  4. 代码审查 -重复使用综合评审提示

📦 安装

先决条件

  • Python 3.9+或Docker
  • 最低2GB RAM
  • macOS、Linux或Windows

详细设置

自动设置(推荐)

# Clone repository
git clone https://github.com/isaacpalomero/promptbook-mcp.git
cd promptbook-mcp

# Run setup script
chmod +x setup.sh
./setup.sh

# Activate virtual environment
source .venv/bin/activate  # Windows: .venv\Scripts\activate

# Start server
python mcp_server.py

Docker方法

# Clone repository
git clone https://github.com/isaacpalomero/promptbook-mcp.git
cd promptbook-mcp

# Copy environment file
cp .env.example .env

# Start services
docker-compose up -d

# Verify
docker-compose logs

手动设置

# Create virtual environment
python3 -m venv .venv
source .venv/bin/activate  # Windows: .venv\Scripts\activate

# Install dependencies
pip install -r requirements.txt

# Create directories
mkdir -p prompts sessions

# Index existing prompts (if any)
python prompt_rag.py --index

# Start server
python mcp_server.py

🎯 特性

1.语义搜索(RAG)

按以下方式查找提示 意义,不是确切的单词:

search_prompts("how to add unit tests")
→ Finds prompts about "testing", "jest", "pytest", etc.

2.汽车组织

删除AI会话文件→ 自动分类和索引:

sessions/
└── copilot-session-abc123.md  → Auto-processed into:
    ├── prompts/refactoring/prompt1.md
    ├── prompts/testing/prompt2.md
    └── Updated RAG index

3.多提供商嵌入

选择您的嵌入后端:

  • 句子转换 (默认,本地,CPU)
  • LMStudio (GPU加速,质量更好)
# Use local embeddings (default)
EMBEDDING_PROVIDER=sentence-transformer

# Or use LMStudio
EMBEDDING_PROVIDER=lmstudio
LMSTUDIO_URL=http://localhost:1234

4.MCP工具(13个可用)

通过任何MCP客户端访问:

工具 说明
search_prompts 按意义进行语义搜索
create_prompt 直接添加新提示
update_prompt 修改现有提示
delete_prompt 安全删除提示
get_prompt_by_file 获取完整内容
list_prompts_by_category 按类别浏览
find_similar_prompts 查找相关提示
get_library_stats 查看统计数据
index_prompts 重建搜索索引
organize_session 处理AI会话文件
get_prompt_index 查看完整元数据索引

可用类别:

  • refactoring
  • testing
  • debugging
  • implementation
  • documentation
  • code-review
  • general

🔌 MCP客户端设置

克劳德桌面版

  1. 打开Claude配置文件:

    # macOS
    ~/Library/Application Support/Claude/claude_desktop_config.json
    
    # Windows
    %APPDATA%\Claude\claude_desktop_config.json
    
  2. 添加Promptbook MCP服务器:

    {
      "mcpServers": {
        "promptbook": {
          "command": "python",
          "args": ["/path/to/promptbook-mcp/mcp_server.py"]
        }
      }
    }
    
  3. 重新启动克劳德桌面

其他MCP客户端

任何兼容MCP的客户端都可以使用相同的模式进行连接。看 MCP协议文件 了解详情。


📖 文档


👨‍💻 对于开发者

⚙️ 配置

所有运行时设置都集中在 config.py 并通过一个不可变的 Config 数据类。服务器在启动时加载一次环境变量。

环境变量

变量 描述 默认值
PROMPTS_DIR 分类提示的根文件夹 ./prompts
SESSIONS_DIR 已监视导出会话的目录 ./sessions
VECTOR_DB_DIR 持久ChromaDB路径 <PROMPTS_DIR>/.vectordb
EMBEDDING_PROVIDER sentence-transformer 或 lmstudio sentence-transformer
EMBEDDING_MODEL 句子变压器型号名称 all-MiniLM-L6-v2
LMSTUDIO_URL / LMSTUDIO_MODEL LMStudio端点+模型 http://localhost:1234 / nomic-embed-text
LMSTUDIO_DIMENSION 预期的LMStudio嵌入大小 768
CHUNK_SIZE / CHUNK_OVERLAP 提示分块参数 500 / 100
ENABLE_RAG 切换RAG初始化 true
AUTO_REINDEX_INTERVAL 自动索引检查之间的秒数 30
LOG_LEVEL Python日志级别 INFO

配置文件:

# Copy example
cp .env.example .env

# Edit settings
vim .env

在代码中的任何位置访问配置:

from config import CONFIG

print(CONFIG.prompts_dir)  # Validated Path object
print(CONFIG.embedding_provider)  # Type-safe enum

🧪 测试与质量

我们执行严格的质量门:

# Run all tests
pytest

# Run with coverage
pytest --cov=. --cov-report=html

# Run only unit tests
pytest tests/unit/

# Run only integration tests
pytest tests/integration/

# Style check
flake8 --max-line-length=100

# Type check
mypy --strict mcp_server.py prompt_rag.py prompt_organizer.py

质量标准

  • 测试覆盖率:最低80%
  • 类型安全: mypy --strict 必须通过
  • 代码的风格:符合Flake8标准
  • CI管道:所有检查都在Python 3.9-3.12上运行

GitHub操作工作流(.github/workflows/ci.yml)自动运行这些检查。


🐳 Docker高级版

多阶段构建

这 Dockerfile 使用多阶段构建来优化图像大小:

# Stage 1: Builder (installs dependencies)
FROM python:3.11-slim as builder

# Stage 2: Runtime (slim final image)
FROM python:3.11-slim
COPY --from=builder /app/.venv /app/.venv

结果: 最终图像<800 MB

健康检查

Docker包括自动健康监控:

HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
  CMD python -m prompt_rag --health || exit 1

卷装载

将数据持久化到容器外:

volumes:
  - ./prompts:/app/prompts        # Prompt storage
  - ./sessions:/app/sessions      # Session import
  - ./prompts/.vectordb:/app/prompts/.vectordb  # RAG database

建筑与运营

# Build image
docker build -t promptbook-mcp:latest .

# Run container
docker run --rm -i \
  -v "$(pwd)/prompts:/app/prompts" \
  -v "$(pwd)/sessions:/app/sessions" \
  -e EMBEDDING_PROVIDER=sentence-transformer \
  promptbook-mcp:latest

🏗️ 建筑

组件

┌─────────────────────────────────────┐
│         MCP Client (Claude)         │
└──────────────┬──────────────────────┘
               │ MCP Protocol
┌──────────────▼──────────────────────┐
│         mcp_server.py               │
│  - 13 MCP tools                     │
│  - Request routing                  │
│  - Error handling                   │
└──────────────┬──────────────────────┘
               │
       ┌───────┴────────┐
       │                │
┌──────▼──────┐  ┌─────▼────────┐
│prompt_rag.py│  │prompt_org.py │
│- RAG search │  │- Session     │
│- Embeddings │  │  parsing     │
│- ChromaDB   │  │- Auto-org    │
└─────────────┘  └──────────────┘
       │                │
       └───────┬────────┘
               │
┌──────────────▼──────────────────────┐
│       prompts/                      │
│       ├── refactoring/              │
│       ├── testing/                  │
│       ├── debugging/                │
│       └── .vectordb/                │
└─────────────────────────────────────┘

数据流

  1. 用户 要求克劳德搜索提示
  2. 克劳德 向发送MCP请求 mcp_server.py
  3. 服务器 电话 prompt_rag.py 用于语义搜索
  4. 检索增强生成 查询ChromaDB矢量数据库
  5. 结果 已将元数据返回给Claude
  6. 用户 立即看到相关提示

🤝 贡献

我们热爱贡献! 🎉

快速开始

  1. 复刻仓库
  2. 创建要素分支: git checkout -b feature/amazing-feature
  3. 进行更改并添加测试
  4. 运行测试: pytest
  5. 确保质量: flake8 && mypy --strict
  6. 承诺: git commit -m 'feat: add amazing feature'
  7. 推: git push origin feature/amazing-feature
  8. 打开拉取请求

看 贡献.md 详细指南。

承诺公约

我们跟随 约定式提交:

  • feat: 新功能
  • fix: 错误修复
  • docs: 仅文档
  • style: 代码样式更改
  • refactor: 代码重构
  • test: 测试更改
  • chore: 构建/工具更改

📄 许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。


🙏 致谢


📞 支持


由...制作❤️ 面向人工智能开发社区