Skip to content

heimanba/PromptDiscovery

Repository files navigation

PromptDiscovery:基于 Nacos 的动态提示词 MCP 服务器

你是否也曾遇到这些痛点?

  • 团队里积累了大量优质Prompt,但难以共享和管理,散落在各自的文档或笔记里。
  • 每次想用某个Prompt,都需要费力地从文档库中搜索、复制、粘贴,效率低下。
  • 业务需求变化快,Prompt需要频繁更新,但每次更新都得修改代码、重启服务,流程繁琐。
  • 静态的Prompt无法满足动态需求,更无法根据使用情况进行智能推荐和排序。

如果这些问题让你感同身受,那么 PromptDiscovery 正是你需要的解决方案!

借助 Nacos 作为动态配置中心,将您的Prompt资产提升到了全新的高度:一个可集中管理、动态更新、智能推荐的“提示词即服务(Prompt as a Service)”平台

PromptDiscovery 的神奇效果

  • 告别手动管理:所有Prompt在Nacos配置中心统一管理,团队成员可以像维护配置一样轻松维护Prompt。
  • 动态热更新:在Nacos中修改Prompt后,服务无需重启即可实时生效。无论是新增、修改还是删除,所有连接的客户端(如Cursor、Raycast)都能立刻使用最新的Prompt。
  • 自然语言调用:通过自然语言对话,AI能自动理解你的意图,并从Nacos中发现最匹配的Prompt来执行任务。
  • 智能推荐与排序:内置强大的推荐算法,能根据你的编码上下文、历史使用频率和最近使用情况,智能推荐最相关的Prompt。
  • 高可用保障:集成了完善的本地缓存和断线重连机制。即使Nacos服务暂时不可用,依然能使用缓存的Prompt,保障开发流程不中断。

核心工作流:动态配置的实现

下图展示了 PromptDiscovery 如何与 Nacos 协作,实现提示词的动态管理和实时更新。

graph TD
    subgraph "客户端 (e.g., Cursor)"
        User[开发者]
    end
    
    subgraph "PromptDiscovery 服务"
        Server[MCP Server]
        NacosService[NacosService]
        Cache[内存/本地缓存]
    end

    subgraph "配置中心"
        Admin[管理员]
        Nacos[Nacos Server]
    end

    %% 流程一:工具调用
    User -- "1. 调用工具<br/>(e.g., searchPrompts)" --> Server
    Server -- "2. 转发请求" --> NacosService
    NacosService -- "3. 从缓存读取Prompts" --> Cache
    Cache -- "4. 返回结果" --> NacosService
    NacosService -- "5. 返回结果" --> Server
    Server -- "6. 响应用户" --> User

    %% 流程二:动态更新
    Admin -- "A. 在Nacos后台更新配置" --> Nacos
    Nacos -- "B. 推送配置变更" --> NacosService
    NacosService -- "C. 监听器接收变更<br/>并更新缓存" --> Cache

    style Admin fill:#EF8B4D,stroke:#333,stroke-width:2px
    style User fill:#3460F3,stroke:#333,stroke-width:2px
Loading

工作流解释:

  1. 工具调用流程 (左侧):

    • 开发者在Cursor等客户端中调用一个工具 (1)。
    • MCP服务器接收请求并交由 NacosService 处理 (2)。
    • NacosService 直接从内存或本地文件缓存中快速读取所有Prompt数据 (3, 4)。
    • 处理完毕后,将结果返回给客户端 (5, 6)。此过程不直接请求Nacos,保证了高并发和低延迟。
  2. 动态更新流程 (右侧):

    • 当管理员在Nacos控制台修改并发布Prompt配置时 (A),Nacos会主动推送一个变更通知 (B)。
    • NacosService 内置的监听器会捕获到这个通知。
    • 监听到变更后,NacosService会立刻重新从Nacos拉取最新的配置,并更新其管理的内存及本地文件缓存 (C)。
    • 这个过程对用户是完全透明的,下一次工具调用就会自动使用到最新的Prompt。

这个架构的核心优势在于读写分离:常规的读取操作通过高速缓存进行,而配置的写入和更新则通过Nacos的推送机制异步完成,既保证了性能,又实现了配置的动态热加载。


主要功能

  • 📦 Nacos动态配置:所有Prompt存储于Nacos,实现配置与代码分离,支持团队级协作和权限管理。
  • 🔄 实时热加载:监听Nacos配置变更,实现Prompt的动态、实时更新,无需重启服务。
  • 🧠 智能上下文推荐:强大的suggestPrompts工具,精准分析代码上下文,智能匹配最合适的Prompt。
  • 📊 使用情况追踪:通过trackPromptUsage工具记录Prompt的使用频率和最后使用时间,为智能推荐提供数据支持。
  • 🛠️ 标准MCP工具集:提供getAllPrompts, getPromptsByTags, getPromptById, searchPrompts等一系列标准化工具,方便查询和使用。
  • 🔌 即插即用:轻松与Cursor, Raycast, Windsurf等所有支持MCP的工具集成。
  • 🛡️ 强大的容错机制:即使在网络不佳或Nacos宕机的情况下,也能通过本地缓存提供服务,保证了系统的鲁棒性。

目录结构

PromptDiscovery/
├── src/
│   ├── index.ts                # MCP服务器主入口,负责工具注册和启动
│   └── services/
│       └── NacosService.ts     # 核心服务,负责与Nacos交互、缓存管理和推荐算法
├── .cache/                     # 本地缓存目录,存储Nacos配置的副本
├── package.json
└── README.md

快速开始

  1. 配置Nacos

    • 确保你有一个可用的Nacos服务。
    • 在Nacos中创建一个新的配置,例如:
      • Data ID: prompt_config
      • Group: DEFAULT_GROUP
      • 配置格式: JSON
      • 配置内容 (示例):
        [
          {
            "id": "xiaohongshu_writer",
            "title": "小红书文案生成助手",
            "description": "小红书文案生成助手",
            "tags": ["文案生成"],
            "content": "#角色\n\n你是一个小红书营销专家,擅长创作吸引年轻时尚受众的内容。你了解流行趋势、热门话题和小红书的平台特点,能够撰写真实、相关且符合平台风格的营销文案。
          },
          {
            "id": "translation_assistant",
            "title": "翻译助手",
            "description": "翻译助手",
            "tags": ["翻译"],
            "content": "#角色\n\n 你是一位翻译家,可以将不同语言的文字翻译成目标语言“英文”,同时保持原文的风格和语气。你需要准确地传达信息和文化内涵,避免直译,注重目标语言的表达效果。"
          }
        ]
  2. 安装依赖

    npm install
  3. 配置服务

    • 打开 src/index.ts 文件。
    • 修改 NacosService 的构造函数参数,填入你的Nacos服务器地址和认证信息。
      const nacosService = new NacosService({
        serverAddr: '你的Nacos地址:8848', // e.g., '127.0.0.1:8848'
        username: 'nacos', // Nacos用户名
        password: 'nacos', // Nacos密码
        group: 'DEFAULT_GROUP',
        configId: 'prompt_config',
      });
  4. 启动服务器

    npm start

    启动后,PromptDiscovery 会自动连接Nacos,获取最新的Prompt列表,并作为MCP工具对外提供服务。


如何使用

与 Cursor 集成

  1. 打开 Cursor 的 mcp.json 文件 (通常位于 ~/.cursor/mcp.json)。
  2. 添加以下配置,请将路径替换为你项目的绝对路径
    {
      "mcpServers": {
        "PromptDiscovery": {
          "command": "npx",
          "args":[
            "prompt-discovery-mcp"
          ],
          "env":{
            "NACOS_ADDR": "<NACOS-ADDR>, optional, default is 127.0.0.1:8848",
            "NACOS_USERNAME": "<NACOS-USERNAME>, optional, default is nacos",
            "NACOS_PASSWORD": "<NACOS-PASSWORD>, required",
            "NACOS_GROUP":"<NACOS-USERNAME>, optional, default is DEFAULT_GROUP",
            "NACOS_DATA_ID": "<NACOS_DATA_ID>, required",
          }
        }
      }
    }
  3. 重启Cursor,你就可以在对话中通过 @PromptDiscovery 或直接调用其工具了。

端到端使用场景 (In Cursor)

以下是一些在Cursor中使用PromptDiscovery的真实工作流示例。

场景一:智能推荐 - “小红书内容生成”

假设你正在为小红书平台创作一篇关于“旅行攻略”的笔记。

  1. 选中主题:在Cursor编辑器中,选中你想要生成内容的主题或关键词(例如“巴厘岛旅行攻略”)。

  2. 打开聊天,提出请求

    @PromptDiscovery 请为我选中的主题生成一篇小红书风格的旅行攻略。

  3. 背后发生了什么

    • Cursor将你的请求和选中的主题(上下文)发送给PromptDiscovery
    • PromptDiscoverysuggestPrompts工具被自动调用。
    • 推荐算法分析上下文中的“小红书”、“旅行攻略”等关键词,并匹配到Nacos中预设的xiaohongshu-travel-guide这个Prompt。
    • PromptDiscovery返回填充好内容的完整Prompt给Cursor的AI。
  4. 结果:AI会根据这个高质量的Prompt,为你生成一篇符合小红书风格、吸引人的旅行攻略内容。

场景二:动态更新与验证 - “新增一个旅游助手Prompt”

团队拓展了业务范围,需要一个能规划旅游行程的助手。这个场景将演示如何添加一个新Prompt并立即在客户端验证其效果。

  1. 管理员操作:在Nacos添加新Prompt

    • 登录Nacos控制台,找到prompt_config配置并编辑。
    • 在JSON数组的末尾添加新的Prompt对象。根据规范,我们为它补充title字段:
      {
        "id": "travel_assistant",
        "title": "自驾游小助手",
        "description": "自驾游小助手",
        "tags": ["旅游"],
        "content": "## 角色 \n\n 你是一位自驾游顾问专家,专注于根据特定目的地为用户量身定制深度自驾游攻略。"
      }
    • 点击“发布”保存。PromptDiscovery服务会自动监测到变更并热加载。
  2. 开发者验证:在Cursor中搜索新Prompt

    • 无需任何重启操作
    • 回到Cursor聊天窗口,使用searchPrompts工具通过关键词进行搜索:

    @PromptDiscovery searchPrompts keyword: "旅游"

  3. 结果与反馈

    • PromptDiscovery服务会立即返回包含travel_assistant这个Prompt的搜索结果。
    • 这证明了从Nacos配置更新到客户端实时生效的完整端到端流程是成功的。接下来,你就可以直接使用这个新Prompt了。

这个流程充分体现了配置即服务的强大之处:Prompt的管理与使用完全分离,实现了真正的动态化和团队协作。


如何扩展和管理Prompt

这是 PromptDiscovery 最强大的地方!

你再也不需要修改任何代码来管理Prompt了。

  1. 登录Nacos控制台
  2. 找到你配置的 prompt_config
  3. 直接在控制台的编辑器中新增、修改或删除JSON数组中的Prompt对象。
  4. 点击“发布”。

完成了! PromptDiscovery 服务会自动接收到更新,所有客户端都能立刻使用到最新的Prompt。这个过程是完全无缝的,真正实现了提示词的动态化、服务化管理。


核心工具详解

  • suggestPrompts: 你的日常主力工具。在你编码时,只需 @PromptDiscovery 并描述你的需求,它会自动推荐最相关的Prompt。
  • searchPrompts: 当你有明确的关键词时,用它来快速搜索Prompt。
  • getAllPrompts: 获取当前所有可用的Prompt列表。
  • trackPromptUsage: 该工具通常由其他工具(如suggestPrompts)自动调用,用于优化推荐结果,你也可以手动调用它来影响排序。

贡献与反馈

如果你对这个项目有任何建议、发现了Bug,或者有新的想法,欢迎提交Issue或Pull Request!


About

利用 Nacos 实现企业级 Prompt 动态管理与服务化

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors