基于MCP协议的提示词管理服务,支持HTTP流传输、Web管理界面和桌面应用程序。它可以将静态提示词模板转换成可以通过API调用的动态服务。
# 全局安装
npm install -g @becrafter/prompt-manager
# 或作为项目依赖安装
npm install @becrafter/prompt-manager
# 使用默认配置启动
prompt-manager
# 指定提示词目录
prompt-manager --prompts-dir ./my-prompts
# 指定端口
prompt-manager --port 5621
默认情况下,服务将在
~/.prompt-manager/prompts创建并读取提示词目录。首次启动时,仓库中的examples/prompts将同步过去,以便快速体验。
核心功能已被封装为独立库,可以在其他项目中使用:
# 安装核心库
npm install @becrafter/prompt-manager-core
在项目中使用:
import { startServer, stopServer, promptManager } from '@becrafter/prompt-manager-core';
async function main() {
// 启动服务器
await startServer({
configOverrides: {
promptsDir: './my-prompts',
port: 3000
}
});
// 加载提示词
await promptManager.loadPrompts();
}
main();
新的命令行逻辑已集中到 app/cli 中,支持扩展命令分布。常见用法不变:
# 默认等价于 prompt-manager start
prompt-manager
# 显式使用 start/run 命令
prompt-manager start --port 6000
prompt-manager run --prompts-dir ./examples/prompts
# 获取帮助/版本信息
prompt-manager --help
prompt-manager --version
如果需要在未来添加自定义子命令,只需在 app/cli/commands 下添加相应实现,并在 app/cli/index.js 注册即可。
为了方便非技术人员运行服务,仓库中增加了一个位于 app/desktop 的Electron菜单栏应用。打包的应用将包括Node.js运行时,将 prompt-manager 的代码和依赖一起打包,无需额外的环境配置。
app/desktop/main.js:Electron主进程,负责托盘UI、服务生命周期和升级过程app/desktop/assets/:托盘、安装图标和其他资源app/desktop/package.json:单独的桌面项目配置和 electron-builder 打包描述startServer/stopServerhttp://127.0.0.1:<port> 地址,便于分享或调试/admin 前端,可以直接登录管理提示词examples/prompts 示例内容(实际数据位于) ~/.prompt-manager/prompts 不受影响# 安装依赖(仓库根目录已经装好 server 依赖)
cd app/desktop
npm install
# 启动托盘应用(也可使用根目录脚本 npm run desktop:dev)
npm run dev
启动后,系统托盘中只会出现一个图标,所有交互都在菜单中完成。
# 在仓库根目录执行,会调用 app/desktop 内的 electron-builder
npm run desktop:build
electron-builder 可以输出macOS .dmg、Windows .exe(NSIS) 和Linux .AppImage 安装包,extraResources 包括 prompt-manager 的源代码和依赖,确保离线可用性。
菜单中的“检查更新”选项会:
app.getPath('userData')/prompt-manager/package.json)npm install --omit=dev 在沙盒目录重新安装依赖examples/prompts 目录(如有),用户自定义数据保存在 ~/.prompt-manager/prompts 无需额外迁移整个过程不需要系统级别的node/npm,真正实现了“即装即用”。
| 参数 | 缩写 | 描述 |
|---|---|---|
--prompts-dir <目录> | -p | 指定提示词文件所在的目录 |
--port <端口> | -P | 指定服务器端口(默认:5621) |
--help | -h | 显示帮助信息 |
--version | -v | 显示版本信息 |
| 环境变量 | 描述 | 默认值 |
|---|---|---|
MCP_SERVER_NAME | 服务器名称 | prompt-manager |
SERVER_PORT | 服务器端口 | 5621 |
PROMPTS_DIR | 提示词目录路径 | ~/.prompt-manager/prompts |
MCP_SERVER_VERSION | 服务器版本 | 0.0.19 |
LOG_LEVEL | 日志级别(error, warn, info, debug) | info |
MAX_PROMPTS | 最大提示词数量限制 | 100 |
RECURSIVE_SCAN | 是否启用子目录递归扫描 | true |
ADMIN_ENABLE | 是否启用管理界面 | true |
ADMIN_PATH | 管理界面路径 | /admin |
ADMIN_USERNAME | 管理员用户名 | admin |
ADMIN_PASSWORD | 管理员密码 | admin |
安装或首次运行时,会自动将
env.example内容写入~/.prompt-manager/.env,如果文件不存在,便于在系统内共享配置。
服务器实现了MCP协议,支持以下工具:
search_prompts:搜索提示词get_prompt:获取指定提示词的完整内容reload_prompts:重新加载所有提示词GET /prompts[?search=关键词]
返回所有可用提示词的列表,支持搜索功能。
GET /api/prompts/:name[?path=文件路径]
返回指定名称的提示词的详细信息。
POST /api/prompts
创建或更新提示词文件。
请求体示例:
{
"name": "my-prompt",
"group": "default",
"yaml": "name: my-prompt\ndescription: 我的自定义提示词\nmessages:\n - role: user\n content:\n text: 这是一个{{参数}}示例\n"
}
DELETE /api/prompts/:name[?path=文件路径]
删除指定的提示词文件。
POST /api/prompts/:name/toggle[?path=文件路径]
切换提示词的启用/禁用状态。
POST /process
处理指定的提示词,并支持参数替换。
请求体示例:
{
"promptName": "code-review",
"arguments": {
"language": "JavaScript",
"code": "function hello() { console.log('Hello'); }"
}
}
GET /api/groups
获取所有分组的列表。
POST /api/groups
创建一个新的分组。
PATCH /api/groups/rename
重命名分组。
PATCH /api/groups/status
更新分组激活状态。
DELETE /api/groups?path=分组路径
删除分组(仅当分组为空时)。
提示词文件应为YAML格式,并包含以下基本结构:
name: prompt-name
description: 提示词描述
messages:
- role: user
content:
text: 提示词内容,支持 {{参数名}} 格式的参数替换
arguments:
- name: 参数名
description: 参数描述
type: string|number|boolean
required: true|false
enabled: true|false # 是否启用该提示词
prompt-manager/
├── app/
│ ├── cli/ # 命令行命令分发与共享工具
│ └── desktop/ # Electron 菜单应用
├── packages/
│ ├── admin-ui/ # 内置管理后台静态资源
│ ├── server/ # 服务端核心逻辑
│ └── server/ # 核心库(@becrafter/prompt-manager-core)
├── examples/
│ └── prompts/ # 随包示例提示词(首次启动会同步到 ~/.prompt-manager/prompts)
├── scripts/ # 安装/维护脚本(如 env 同步)
├── bin/ # 可执行入口
└── package.json
核心服务功能已被封装为独立库,位于 packages/server,可以按以下方式使用:
# 在其他项目中安装
npm install @becrafter/prompt-manager-core
该库提供了以下主要功能:
# 克隆仓库
git clone https://github.com/BeCrafter/prompt-manager.git
cd prompt-manager
# 安装依赖
npm install
# 启动开发服务器
npm run dev
MIT 许可证