返回市场
提示保存器-MCP

提示保存器-MCP

作者:davidhou174 星标更新:2025-10-28

项目介绍

Prompt Saver MCP Server

将成功的对话线程转换为可用于未来任务的提示。

基于这样一个原则:您与大语言模型(LLM)交互中最重要的成果是您如何生成结果,而不是结果本身(参见新的代码)。同时考虑到LLMs可能已经比人类更擅长设计提示。

https://github.com/user-attachments/assets/d2e90767-c6f2-44b7-a216-1d9e103e968a

工具

save_prompt

总结、分类并转换对话历史记录为Markdown格式的提示模板。

在成功完成复杂任务后运行,以构建您的提示库。

参数:

  • conversation_messages (字符串):包含对话历史记录的JSON字符串
  • task_description (可选字符串):正在执行的任务描述
  • context_info (可选字符串):关于对话的附加上下文信息

search_prompts

使用语义搜索(如果Voyage API密钥可用)或文本搜索作为备选方案从数据库中检索提示。返回最相关的提示供用户选择。

参数:

  • query (字符串):需要帮助的问题或任务描述
  • limit (可选整数):要返回的最大提示数量(默认值:3)

improve_prompt_from_feedback

总结对话中的反馈,并根据反馈和对话上下文更新提示。

参数:

  • prompt_id (字符串):要改进的提示ID
  • feedback (字符串):用户对提示有效性的反馈
  • conversation_context (可选字符串):使用该提示时的对话上下文

update_prompt

手动更新现有提示。

参数:

  • prompt_id (字符串):要更新的提示ID
  • change_description (字符串):更改的内容和原因描述
  • summary (可选字符串):更新后的摘要
  • prompt_template (可选字符串):更新后的提示模板
  • history (可选字符串):更新后的历史记录
  • use_case (可选字符串):更新后的用例

get_prompt_details

获取特定提示的详细信息,包括其完整的模板、历史记录和元数据。用于在应用之前查看完整的提示。

参数:

  • prompt_id (字符串):要检索的提示ID

search_prompts_by_use_case

按其用例类别(例如'code-gen','text-gen','data-analysis')搜索提示。这是一种高效的基于类别的搜索,独立于嵌入服务工作。

参数:

  • use_case (字符串):要搜索的用例类别
  • limit (可选整数):要返回的最大结果数量(默认值:5)

提示工程最佳实践

生成的提示模板使用以下提示工程技术:

结构

模板按照以下顺序组织:

  1. 身份:定义助手的人格和目标
  2. 指令:提供明确的规则和约束
  3. 示例:展示期望的输入/输出模式(少量样本学习)
  4. 上下文:添加相关数据和文档

格式

  • 使用Markdown标题(#)和列表(*)来创建逻辑层次结构
  • 使用XML标签(<example>)来分隔内容部分
  • 在适当的地方使用消息角色(开发者/用户/助手)
  • 使用占位符({variable})进行可定制的输入

这确保保存的提示具有良好的结构、可重用性,并且对未来任务有效。

系统提示配置

为了最大化此MCP服务器的价值,请向您的LLM接口系统提示添加以下说明:

在开始任何大型或复杂任务之前,始终搜索相关提示。

在成功完成任务后,始终询问是否希望将对话保存为提示。

在成功完成带有提示的任务后,始终询问是否希望更新提示。

这有助于确保LLM在没有显式请求的情况下运行相关工具。

💡 提示:为了增强MongoDB管理,考虑与本提示保存器一起使用MongoDB MCP Server。它提供了直接的MongoDB操作,并可以帮助您更有效地管理提示数据库。

安装

  1. 克隆仓库:

    git clone <仓库地址>
    cd prompt-saver-mcp
    
  2. 安装依赖项:

    uv sync
    # 或者使用pip:
    pip install -e .
    
  3. 设置MongoDB Atlas:

    • 创建一个MongoDB Atlas集群
    • 创建一个名为prompt_saver的数据库
    • (可选)在embedding字段上创建一个向量搜索索引(2048维,点积相似度),用于语义搜索
  4. 配置环境变量:

    cp .env.example .env
    # 编辑.env文件,填写您的API密钥和MongoDB Atlas URI
    

    所有配置都需要:

    • MONGODB_URI:MongoDB Atlas连接字符串

    可选:

    • VOYAGE_AI_API_KEY:Voyage AI API密钥(启用语义搜索)

    选择一个LLM提供商:

    • Azure OpenAIAZURE_OPENAI_API_KEYAZURE_OPENAI_ENDPOINT
    • OpenAIOPENAI_API_KEY
    • AnthropicANTHROPIC_API_KEY

配置

环境变量

核心配置

变量描述默认值
MONGODB_URIMongoDB Atlas连接URI必需
MONGODB_DATABASE数据库名称prompt_saver
MONGODB_COLLECTION集合名称prompts
VOYAGE_AI_API_KEYVoyage AI API密钥(启用语义搜索)可选
VOYAGE_AI_EMBEDDING_MODEL嵌入模型voyage-3-large

LLM提供商配置

变量描述默认值
LLM_PROVIDERLLM提供商:azure_openaiopenai,或anthropicazure_openai

提供商选项:

  • Azure OpenAI:企业级,具备增强的安全性和合规性
  • OpenAI:直接访问最新模型,简单API密钥设置
  • Anthropic:Claude模型,具备强大的推理能力

Azure OpenAI(当LLM_PROVIDER=azure_openai)

变量描述默认值
AZURE_OPENAI_API_KEYAzure OpenAI API密钥必需
AZURE_OPENAI_ENDPOINTAzure OpenAI端点必需
AZURE_OPENAI_MODEL模型部署名称gpt-4o

OpenAI(当LLM_PROVIDER=openai)

变量描述默认值
OPENAI_API_KEYOpenAI API密钥必需
OPENAI_MODEL模型名称g-4o

Anthropic(当LLM_PROVIDER=anthropic)

变量描述默认值
ANTHROPIC_API_KEYAnthropic API密钥必需
ANTHROPIC_MODEL模型名称claude-sonnet-4-20250514

Claude Desktop集成

添加到您的Claude Desktop配置文件中。根据您首选的LLM提供商选择以下配置之一:

Azure OpenAI配置

{
  "mcpServers": {
    "prompt-saver": {
      "command": "uv",
      "args": ["run", "python", "-m", "prompt_saver_mcp.server", "stdio"],
      "cwd": "/path/to/your/prompt-saver-mcp",
      "env": {
        "MONGODB_URI": "mongodb+srv://username:password@cluster.mongodb.net/",
        "MONGODB_DATABASE": "prompt_saver",
        "VOYAGE_AI_API_KEY": "your_voyage_ai_api_key_here",
        "LLM_PROVIDER": "azure_openai",
        "AZURE_OPENAI_API_KEY": "your_azure_openai_api_key_here",
        "AZURE_OPENAI_ENDPOINT": "https://your-resource.openai.azure.com/",
        "AZURE_OPENAI_MODEL": "gpt-4o"
      }
    }
  }
}

OpenAI配置

{
  "mcpServers": {
    "prompt-saver": {
      "command": "uv",
      "args": ["run", "python", "-m", "prompt_saver_mcp.server", "stdio"],
      "cwd": "/path/to/your/prompt-saver-mcp",
      "env": {
        "MONGODB_URI": "mongodb+srv://username:password@cluster.mongodb.net/",
        "MONGODB_DATABASE": "prompt_saver",
        "VOYAGE_AI_API_KEY": "your_voyage_ai_api_key_here",
        "LLM_PROVIDER": "openai",
        "OPENAI_API_KEY": "your_openai_api_key_here",
        "OPENAI_MODEL": "gpt-4o"
      }
    }
  }
}

Anthropic配置

{
  "mcpServers": {
    "prompt-saver": {
      "command": "uv",
      "args": ["run", "python", "-m", "prompt_saver_mcp.server", "stdio"],
      "cwd": "/path/to/your/prompt-saver-mcp",
      "env": {
        "MONGODB_URI": "mongodb+srv://username:password@cluster.mongodb.net/",
        "MONGODB_DATABASE": "prompt_saver",
        "VOYAGE_AI_API_KEY": "your_voyage_ai_api_key_here",
        "LLM_PROVIDER": "anthropic",
        "ANTHROPIC_API_KEY": "your_anthropic_api_key_here",
        "ANTHROPIC_MODEL": "claude-sonnet-4-20250514"
      }
    }
  }
}

注意:对于Anthropic支持,安装anthropic包:pip install anthropic

使用示例

1. 保存提示

在完成复杂任务后,将对话保存为可重复使用的提示:

# 示例对话消息(JSON格式)
conversation = [
    {"role": "user", "content": "帮我创建一个解析CSV文件的Python函数"},
    {"role": "assistant", "content": "我将帮助您创建一个健壮的CSV解析器..."},
    # ... 更多对话
]

# 保存提示
save_prompt(
    conversation_messages=json.dumps(conversation),
    task_description="创建CSV解析器函数",
    context_info="成功创建了带错误处理的解析器"
)

2. 查找并使用提示

在开始新任务时查找相关提示:

# 搜索提示
result = search_prompts("我需要帮助在Python中处理数据")

# 工具将返回最相关的提示并要求您选择一个

3. 更新提示

在使用提示后,根据您的经验更新它:

update_prompt(
    prompt_id="prompt_id_here",
    change_description="增加了错误处理示例",
    prompt_template="更新模板,增加更好的错误处理..."
)

4. 获取提示详情

检索特定提示的全部细节:

# 获取完整的提示信息
result = get_prompt_details("prompt_id_here")
print(result["prompt"]["prompt_template"])  # 查看完整的模板

5. 使用反馈改进提示

利用AI自动根据反馈改进提示:

improve_prompt_from_feedback(
    prompt_id="prompt_id_here",
    feedback="该提示效果很好,但可以增加更多针对边缘情况的具体示例",
    conversation_context="用于调试复杂的API集成问题"
)

6. 按用例搜索

查找特定类型任务的提示:

# 查找所有代码生成提示
result = search_prompts_by_use_case("code-gen", limit=5)

# 查找数据分析提示
result = search_prompts_by_use_case("data-analysis", limit=3)

数据库模式

每个提示存储如下结构:

{
    "_id": ObjectId,
    "use_case": str,  # "code-gen", "text-gen", "data-analysis", "creative", "general"
    "summary": str,   # 提示及其用例的摘要
    "prompt_template": str,  # 普遍的问题解决提示模板
    "history": str,   # 执行步骤和最终结果的摘要
    "embedding": List[float],  # 摘要的向量嵌入
    "last_updated": datetime,
    "num_updates": int,
    "changelog": List[str]  # 对此提示所做的更改列表
}

许可证

MIT许可证 - 详见LICENSE文件。