提示词管理系统

MCP Prompt Manager是一个用于AI模型的提示词管理系统,提供创建、检索、更新、删除提示词的功能,支持高级搜索、分类标签、模板处理和版本控制。

  • by Tae4an
  • JavaScript
  • 本地部署
  • 5 星标
  • 更新于
在 GitHub 查看 Tae4an/mcp-prompt-manager

使用说明

MCP提示管理器

经MCP审查认证

该项目已获得官方认证 MCP审查.

MCP(模型上下文协议)提示管理器是一个服务器,它使像Claude这样的AI模型能够访问本地提示文件。它提供了创建、检索、更新和删除提示的功能,允许对常用提示进行高效管理。

主要特点

核心功能

  • 列出所有提示
  • 检索特定提示内容
  • 创建新提示
  • 更新提示内容
  • 删除提示

高级功能

  • 智能搜索:采用多种算法的高级模糊搜索(Levenshtein、Jaro Winkler、n-gram相似度)
  • 类别和标签系统:使用类别和标签组织提示
  • 模板处理:使用变量替换 {{variable}} 语法和高级条件句
  • 模板库:内置模板库,包含5个类别的12个专业模板
  • 收藏夹管理:将常用提示标记为收藏夹
  • 元数据管理:增强组织的自动元数据跟踪
  • 版本管理:具有历史跟踪、差异比较和回滚功能的完整版本控制
  • 进出口系统:JSON格式的备份和还原提示,包括元数据和版本历史记录
  • 安全与验证:全面的输入净化、速率限制和错误处理
  • 缓存系统:智能缓存可提高性能
  • 结构化日志记录:具有多级和文件输出的高级日志记录

安装

先决条件

  • Node.js v18或更高版本
  • npm

安装步骤

  1. 克隆存储库

    git clone https://github.com/Tae4an/mcp-prompt-manager.git
    cd mcp-prompt-manager
    
  2. 安装依赖项

    npm install
    
  3. 授予执行权限

    chmod +x server.js
    

集装箱化运行

使用Docker运行

docker build -t mcp-prompt-manager:local .
docker run --rm \
  -e NODE_ENV=production \
  -e LOG_DIR=/var/log/mcp \
  -e PROMPTS_DIR=/data/prompts \
  -v $(pwd)/prompts:/data/prompts \
  -v $(pwd)/logs:/var/log/mcp \
  mcp-prompt-manager:local

使用Docker Compose运行

docker compose up -d --build

环境变量

  • PROMPTS_DIR:存储提示的目录(默认:项目 prompts)
  • LOG_DIR:文件日志记录目录(默认: ./logs)
  • 缓存TTL/大小:
    • FILE_CACHE_TTL,FILE_CACHE_MAX_SIZE
    • SEARCH_CACHE_TTL,SEARCH_CACHE_MAX_SIZE
    • 元数据缓存_TTL,元数据缓存_MAX_SIZE
    • TEMPLATE_CACHE_TTL,TEMPLATE_CACHE_MAX_SIZE
  • 速率限制预设:
    • 速率限制标准窗口,速率限制标准最大值
    • RATE_LIMIT_STRICT_WINDOW_MS,RATE_LIMIT_STRICT_MAX
    • RATE_LIMIT_LENIENT_WINDOW_MS,RATE_LIMIT_LENIENT_MAX
    • RATE_LIMIT_UPLOAD_WINDOW_MS,RATE_LIMIT-UPLOAD_MAX
  • 策略/权限:
    • READ_ONLY(true/false):禁用写入操作
    • DISABLE_IMPORT(true/false):阻止导入
    • DISABLE_EXPORT(true/false):阻止导出
    • DISABLE_VERSION_ROLLBACK(true/false):块回滚

连接到克劳德桌面

  1. 安装Claude Desktop(如果尚未安装)

  2. 打开Claude Desktop配置文件:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • 窗户: %APPDATA%\Claude\claude_desktop_config.json
  3. 将以下内容添加到配置文件中:

    {
      "mcpServers": {
        "promptManager": {
          "command": "node",
          "args": ["absolute_path_to_cloned_repository/server.js"]
        }
      }
    }
    

    例子:

    {
      "mcpServers": {
        "promptManager": {
          "command": "node",
          "args": ["/Users/username/projects/mcp-prompt-manager/server.js"]
        }
      }
    }
    
  4. 重新启动克劳德桌面

用法

在Claude Desktop中,单击工具图标(🛠️) 访问以下MCP工具:

核心工具

列表提示

检索所有提示的列表。

  • 参数:无

获取提示

检索特定提示的内容。

  • 参数: filename -要检索的提示文件的名称

创建提示

创建新提示。

  • 参数:
    • filename -要创建的提示文件的名称(例如my prompt.txt)
    • content -提示内容

更新提示

更新现有提示的内容。

  • 参数:
    • filename -要更新的提示文件的名称
    • content -新提示内容

删除提示

删除提示(自动删除关联的元数据)。

  • 参数: filename -要删除的提示文件的名称

高级工具

搜索提示

通过文件名或内容进行高级模糊搜索提示,并具有智能排名功能。

  • 参数:
    • query -搜索查询字符串
    • searchInContent -(可选)在提示内容中搜索的布尔值(默认值:false)
    • limit -(可选)要返回的最大结果数(默认值:10)
    • threshold -(可选)最小相似性阈值(0.0-1.0,默认值:0.3)

标签提示

在提示中添加标签,以便更好地组织。

  • 参数:
    • filename -要标记的提示文件的名称
    • tags -标签字符串数组

分类提示

为提示设置类别。

  • 参数:
    • filename -要分类的提示文件的名称
    • category -类别名称字符串

按类别列出

列出按类别组织的提示。

  • 参数:
    • category -(可选)要筛选的特定类别

流程模板

使用变量替换处理提示模板。

  • 参数:
    • filename -模板提示文件的名称
    • variables -以变量名为键、替换值为值的对象
  • 注:使用 {{variable}} 模板中的格式

列出模板变量

列出在模板提示中找到的所有变量。

  • 参数:
    • filename -要分析的模板提示文件的名称

最喜欢的提示

在收藏夹中添加或删除提示。

  • 参数:
    • filename -提示文件的名称
    • action -“添加”或“删除”

列出收藏夹

列出所有最喜欢的提示及其详细信息。

  • 参数:无

版本管理工具

列出提示版本

列出特定提示的所有版本,包括时间戳和操作。

  • 参数:
    • filename -获取版本历史记录的提示文件的名称

比较提示版本

比较提示的两个版本,并显示详细的差异。

  • 参数:
    • filename -要比较的提示文件的名称
    • fromVersion -要比较的源版本号
    • toVersion -要比较的目标版本号

回滚提示

将提示回滚到特定的早期版本。

  • 参数:
    • filename -要回滚的提示文件的名称
    • version -要回滚到的版本号

获取提示版本

获取特定版本提示的内容。

  • 参数:
    • filename -提示文件的名称
    • version -要检索的版本号

获取提示版本统计信息

获取提示版本历史的统计信息,包括总版本、操作细分和大小历史。

  • 参数:
    • filename -要获取统计信息的提示文件的名称

模板库工具

内置模板库包括5个类别的12个专业模板:

可用模板类别:

  • 🖥️ 编码与开发 (3个模板):代码审查、调试帮助、API文档
  • 🌐 翻译与语言 (2个模板):文本翻译、语法检查
  • 📝 公文写作 (2个模板):文件摘要、会议纪要
  • 📊 分析与研究 (2个模板):SWOT分析、竞争分析
  • 🎓 教育与学习 (3个模板):课程计划、测验生成

列出模板类别

列出所有可用的模板类别,包括描述和模板计数。

  • 参数:无

按类别列出模板

列出特定类别中的所有模板。

  • 参数:
    • categoryId -用于列出模板的类别ID

获取模板详细信息

获取特定模板的详细信息,包括变量和用法。

  • 参数:
    • templateId -模板ID(格式:类别。模板名称)

搜索模板

使用模糊匹配在模板库中搜索。

  • 参数:
    • query -搜索查询字符串
    • category -(可选)按特定类别筛选
    • tags -(可选)要筛选的标签数组
    • limit -(可选)最大结果数(默认值:10)

渲染模板

使用提供的变量渲染模板并获取处理后的内容。

  • 参数:
    • templateId -要渲染的模板ID
    • variables -具有变量名和值的对象
    • sanitizeOutput -(可选)启用输出净化(默认值:true)

验证模板

验证模板语法并检查潜在问题。

  • 参数:
    • templateId -要验证的模板ID

获取流行模板

根据使用模式获取最受欢迎的模板列表。

  • 参数:
    • limit -(可选)要返回的模板数(默认值:5)

获取相关模板

根据标签和类别获取与特定模板相关的模板。

  • 参数:
    • templateId -用于查找相关模板的模板ID
    • limit -(可选)相关模板的数量(默认值:3)

获取模板库统计信息

获取有关模板库的全面统计信息。

  • 参数:无

从模板创建提示

使用具有变量替换的模板创建新的提示文件。

  • 参数:
    • templateId -要使用的模板ID
    • filename -新提示文件的名称
    • variables -带有模板变量的对象
    • addMetadata -(可选)将模板元数据添加到文件中(默认值:true)

导入/导出工具

导出提示

将提示导出为JSON格式以进行备份或共享。

  • 参数:
    • format -(可选)导出格式:“json”(默认:json)
    • includeMetadata -(可选)在导出中包含元数据(默认值:true)
    • includeVersionHistory -(可选)包含版本历史记录(默认值:false)
    • filterByTags -(可选)用于筛选提示的标签数组
    • filterByCategory -(可选)筛选提示的类别
    • compress -(可选)压缩导出数据(默认值:false)

导入提示

从JSON格式导入带有验证和冲突解决功能的提示。

  • 参数:
    • importData -以导出格式导入数据对象
    • overwriteExisting -(可选)覆盖现有文件(默认值:false)
    • skipDuplicates -(可选)跳过重复文件(默认值:true)
    • validateChecksums -(可选)验证文件校验和(默认值:true)
    • createBackup -(可选)导入前创建备份(默认值:true)
    • mergeMetadata -(可选)与现有元数据合并(默认值:true)

获取进出口状态

获取导入/导出系统状态和功能。

  • 参数:无

操作/监控工具

获取服务器统计信息

获取进程/服务器运行时统计数据(正常运行时间、内存、策略标志、缓存信息)。

  • 参数:无

获取策略状态

获取从环境变量派生的当前策略/权限标志。

  • 参数:无

获取缓存统计信息

读取文件/元数据/搜索/模板的缓存统计信息(大小、命中/未命中、内存使用情况)。

  • 参数:无

获取速率限制状态

获取标准/严格/上传预设的当前速率限制器统计数据。

  • 参数:无

技术特性

安全与性能

  • 输入消毒:全面的XSS和注入攻击防御
  • 速率限制:滑动窗口算法可配置速率限制
  • 缓存系统:多级LRU缓存,支持TTL,可提高性能
  • 错误处理:高级错误恢复和记录系统
  • 文件验证:SHA-256校验和和完整性验证

高级模板引擎

  • 条件逻辑:支持 {{#if}}, {{#unless}}, {{#each}} 构建
  • 循环处理:迭代模板中的数组和对象
  • 函数调用:用于格式化和处理的内置辅助函数
  • 嵌套变量:支持复杂的对象结构
  • 错误恢复:巧妙地处理缺失的变量和格式错误的模板

模糊搜索算法

  • 编辑距离:基于字符的相似性匹配
  • Jaro-Winkler距离:针对前缀匹配进行了优化
  • N-gram相似性:子字符串模式匹配
  • 智能排名:具有可定制阈值的多因素评分
  • 高亮:突出显示搜索结果以获得更好的用户体验

数据管理

  • 版本控制:通过差异比较完成历史跟踪
  • 元数据系统:自动标记、分类和收藏夹
  • 备份系统:导入操作期间自动创建备份
  • 导出格式:JSON,可选压缩和过滤
  • 文件组织:具有隐藏元数据目录的结构化存储

高级配置

更改提示存储路径

默认情况下,提示存储在 prompts 服务器文件所在目录中的文件夹。您可以使用环境变量更改路径:

PROMPTS_DIR=/desired/path node server.js

或者在claude_desktop_config.json中设置环境变量:

{
  "mcpServers": {
    "promptManager": {
      "command": "node",
      "args": ["/absolute/path/mcp-prompt-manager/server.js"],
      "env": {
        "PROMPTS_DIR": "/desired/path"
      }
    }
  }
}

例子

基本用法

  1. 创建新提示:

    • 工具: create-prompt
    • 文件名: greeting.txt
    • 内容: You are a friendly and helpful AI assistant. Please respond politely to user questions.
  2. 列表提示:

    • 工具: list-prompts
  3. 正在检索提示内容:

    • 工具: get-prompt
    • 文件名: greeting.txt

高级用法

  1. 创建模板提示:

    • 工具: create-prompt
    • 文件名: email-template.txt
    • 内容: Dear {{name}}, Thank you for your interest in {{product}}. Best regards, {{sender}}
  2. 正在处理模板:

    • 工具: process-template
    • 文件名: email-template.txt
    • 变量: {"name": "John", "product": "MCP Server", "sender": "Support Team"}
  3. 组织提示:

    • 工具: categorize-prompt

    • 文件名: greeting.txt

    • 类别: customer-service

    • 工具: tag-prompt

    • 文件名: greeting.txt

    • 标签: ["polite", "professional", "greeting"]

  4. 搜索提示:

    • 工具: search-prompts
    • 查询: assistant
    • 搜索内容: true
  5. 管理收藏夹:

    • 工具: favorite-prompt
    • 文件名: greeting.txt
    • 行动: add

版本管理使用

  1. 查看版本历史记录:

    • 工具: list-prompt-versions
    • 文件名: greeting.txt
  2. 比较版本:

    • 工具: compare-prompt-versions
    • 文件名: greeting.txt
    • 起始版本: 1
    • ToVersion: 3
  3. 回滚到以前的版本:

    • 工具: rollback-prompt
    • 文件名: greeting.txt
    • 版本: 2
  4. 获取版本统计信息:

    • 工具: get-prompt-version-stats
    • 文件名: greeting.txt

模板库使用

  1. 浏览模板类别:

    • 工具: list-template-categories
  2. 使用模板:

    • 工具: render-template
    • 模板ID : coding.code-review
    • 变量: {"code": "function hello() { console.log('Hello'); }", "language": "javascript"}
  3. 从模板创建提示:

    • 工具: create-prompt-from-template
    • 模板ID : writing.meeting-minutes
    • 文件名: weekly-standup.txt
    • 变量: {"meeting_title": "Weekly Standup", "date": "2024-08-04", "attendees": "Team Alpha"}
  4. 搜索模板:

    • 工具: search-templates
    • 查询: code review
    • 类别: coding

导入/导出使用

  1. 导出备份提示:

    • 工具: export-prompts
    • 包含元数据: true
    • 包含版本历史: false
    • FilterBy标签: ["important", "production"]
  2. 从备份导入提示:

    • 工具: import-prompts
    • 进口数据: {exported data object}
    • 创建备份: true
    • 超重存在: false
  3. 检查导入/导出状态:

    • 工具: get-import-export-status

高级搜索使用

  1. 带参数的模糊搜索:
    • 工具: search-prompts
    • 查询: custmer servce (故意拼写错误)
    • 搜索内容: true
    • 门槛: 0.6
    • 限制: 15

故障排除

如果MCP服务器未连接

  • 验证服务器文件路径是否正确
  • 检查服务器是否具有执行权限
  • 确保Node.js版本为v18或更高版本

如果工具没有出现

  • 尝试重新启动Claude Desktop
  • 确认 claude_desktop_config.json 文件配置正确

文件访问权限问题

  • 确保您对提示目录具有读/写权限

许可证

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

贡献

欢迎投稿!请随时提交拉取请求。

支持

如果您遇到任何问题或有疑问,请在 GitHub存储库.