mcp-prompt-engine
MCP Prompt Engine
一个模型控制协议 (MCP) 服务器,用于使用优雅且强大的文本模板引擎来管理和提供动态提示词模板。 创建可重用、逻辑驱动的提示词,支持变量、局部模板和条件判断,可提供给任何兼容的 MCP 客户端(如 Claude Code、Claude Desktop、Gemini CLI、带有 Copilot 的 VSCode 等)使用。
主要特性
MCP 兼容:可直接与任何支持 提示词 (prompts) 的 MCP 客户端 开箱即用。
强大的 Go 模板:充分利用 Go text/template 语法的强大功能,包括变量、条件判断、循环等。
可重用局部模板:在局部模板(例如
_header.tmpl)中定义通用组件,并在多个提示词中重复使用。提示词参数:所有模板变量都会自动暴露为 MCP 提示词参数,允许客户端进行动态输入。
热重载:自动检测提示词文件的更改并重新加载,无需重启服务器。
丰富的 CLI:现代化的命令行界面,用于列出、验证和渲染模板,方便开发和测试。
智能参数处理:
自动解析 JSON 参数(布尔值、数字、数组、对象)。
将环境变量作为模板参数的后备值注入。
容器化:提供完整的 Docker 支持,便于部署和集成。
Related MCP server: MCP-YNU FastMCP Server
托管部署
可在 Fronteir AI 上进行托管部署。
入门指南
1. 安装
使用 Go 安装:
go install github.com/vasayxtx/mcp-prompt-engine@latest(有关 Docker 或预构建二进制文件等其他方法,请参阅下方的 安装部分。)
2. 创建提示词
创建一个 prompts 目录并添加一个模板文件。让我们创建一个帮助编写 Git 提交信息的提示词。
首先,创建一个名为 prompts/_git_commit_role.tmpl 的可重用局部模板:
```go
{{ define "_git_commit_role" }}
You are an expert programmer specializing in writing clear, concise, and conventional Git commit messages.
Commit message must strictly follow the Conventional Commits specification.
The final commit message you generate must be formatted exactly as follows:
```
<type>: A brief, imperative-tense summary of changes
[Optional longer description, explaining the "why" of the change. Use dash points for clarity.]
```
{{ if .type -}}
Use {{.type}} as a type.
{{ end }}
{{ end }}
```现在,创建一个使用此局部模板的主提示词 prompts/git_stage_commit.tmpl:
{{- /* 提交当前暂存的更改 */ -}}
GXP3
### 3. 验证提示词
验证您的提示词以确保没有语法错误:
GXP4
### 4. 将 MCP 服务器连接到您的客户端
将 MCP 服务器添加到您的 MCP 客户端。有关配置示例,请参阅 [连接到客户端](#connecting-to-clients)。
### 5. 使用您的提示词
您的 `git_stage_commit` 提示词现在可以在您的客户端中使用了!
例如,在 Claude Desktop 中,您可以选择 `git_stage_commit` 提示词,提供 `type` MCP 提示词参数,并获得一个生成的提示词,帮助您完成带有完美信息的提交。
在 Claude Code 或 Gemini CLI 中,您可以开始输入 `/git_stage_commit`,它将建议带有已提供参数的提示词,并在您选择后执行。
***
## 安装
### 预构建二进制文件
从 [GitHub 发布页面](https://github.com/vasayxtx/mcp-prompt-engine/releases) 下载适用于您操作系统的最新版本。
### 从源码构建
GXP5
### Docker
提供预构建的 Docker 镜像。将本地的 `prompts` 和 `logs` 目录挂载到容器中。
GXP6
您也可以使用 `make docker-build` 在本地构建镜像。
***
## 使用方法
### 创建提示词模板
创建一个目录来存储您的提示词模板。每个模板都应是一个使用 Go [text/template](https://pkg.go.dev/text/template) 语法的 `.tmpl` 文件,格式如下:
GXP7
第一行注释 (`{{/* description */}}`) 用作提示词描述,文件的其余部分是提示词模板。
局部模板应以底线开头(例如 `_header.tmpl`),并可以使用 `{{template "partial_name" .}}` 包含在其他模板中。
### 模板语法
服务器使用 Go 的 `text/template` 引擎,它提供了强大的模板功能:
* **变量**:`{{.variable_name}}` - 访问模板变量
* **内置变量**:
* `{{.date}}` - 当前日期和时间
* **条件判断**:`{{if .condition}}...{{end}}`, `{{if .condition}}...{{else}}...{{end}}`
* **逻辑运算符**:`{{if and .condition1 .condition2}}...{{end}}`, `{{if or .condition1 .condition2}}...{{end}}`
* **循环**:`{{range .items}}...{{end}}`
* **模板包含**:`{{template "partial_name" .}}` 或 `{{template "partial_name" dict "key" "value"}}`
有关语法和功能的更多详细信息,请参阅 [Go text/template 文档](https://pkg.go.dev/text/template)。
### JSON 参数解析
服务器在可能的情况下会自动将参数值解析为 JSON,从而在模板中实现丰富的数据类型:
* **布尔值**:`true`, `false` → Go 布尔值
* **数字**:`42`, `3.14` → Go 数值
* **数组**:`["item1", "item2"]` → 用于 `{{range}}` 的 Go 切片
* **对象**:`{"key": "value"}` → 用于结构化数据的 Go 映射
* **字符串**:无效的 JSON 将回退为字符串值
这允许进行高级模板操作,例如:
GXP8
要禁用 JSON 解析并将所有参数视为字符串,请在 `serve` 和 `render` 命令中使用 `--disable-json-args` 标志。
### CLI 命令
CLI 是您管理和测试模板的主要工具。
默认情况下,它会在 `./prompts` 目录中查找模板,但您可以使用 `--prompts` 标志指定不同的目录。
**1. 列出模板**
GXP9
**2. 渲染模板**
直接在终端中渲染提示词,使用 `-a` 或 `--arg` 标志提供参数。
它会自动注入环境变量作为任何缺失参数的后备值。例如,如果您有一个环境变量 `TYPE=fix`,它将被注入到模板中作为 `{{.type}}`。
GXP10
**3. 验证模板**
检查所有模板是否存在语法错误。如果任何模板无效,该命令将返回错误。
GXP11
**4. 启动服务器**
运行 MCP 服务器,使您的提示词可供客户端使用。
GXP12
***
## 连接到客户端
要将此引擎与任何支持 MCP 提示词的客户端一起使用,请在其 MCP 服务器配置中添加一个新条目。
全局配置位置 (MacOS):
* Claude Code: `~/.claude.json` (`mcpServers` 部分)
* Claude Desktop: `~/Library/Application\ Support/Claude/claude_desktop_config.json` (`mcpServers` 部分)
* Gemini CLI: `~/.gemini/settings.json` (`mcpServers` 部分)
**本地二进制文件示例:**
GXP13
**Docker 示例:**
GXP14
## 许可证
本项目采用 MIT 许可证 - 有关详细信息,请参阅 [LICENSE](./LICENSE) 文件。This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/vasayxtx/mcp-prompt-engine'
If you have feedback or need assistance with the MCP directory API, please join our Discord server