这是一个使用优雅且强大的文本模板引擎来管理和提供动态提示模板的模型控制协议(MCP)服务器。创建可复用、基于逻辑的提示,其中包含变量、部分和条件语句,可以提供给任何兼容的MCP客户端,如Claude Code、Claude Desktop、Gemini CLI、带有Copilot的VSCode等。
_header.tmpl),并在你的提示中复用它们。使用Go安装:
go install github.com/vasayxtx/mcp-prompt-engine@latest
(对于其他方法,如Docker或预构建二进制文件,请参阅下面的安装部分。)
创建一个prompts目录,并添加一个模板文件。让我们创建一个帮助编写Git提交消息的提示。
首先,创建一个可复用的部分,命名为prompts/_git_commit_role.tmpl:
```go
{{ define "_git_commit_role" }}
你是专门撰写清晰、简洁且符合常规的Git提交消息的专家程序员。
提交消息必须严格遵循Conventional Commits规范。
最终生成的提交消息必须按照以下格式:
```
<类型>:对更改的简短、命令式总结
[可选的更长描述,解释变更的原因。使用破折号点以提高清晰度。]
```
{{ if .type -}}
使用{{.type}}作为类型。
{{ end }}
{{ end }}
```
现在,创建一个主提示prompts/git_stage_commit.tmpl,使用这个部分:
```go
{{- /* 提交当前暂存的更改 */ -}}
{{- template "_git_commit_role" . -}}
你的任务是提交所有当前暂存的更改。
为了理解上下文,请使用命令`git diff --staged`分析暂存的代码。
根据该分析,使用合适的提交消息提交暂存的更改。
```
验证你的提示,确保它没有语法错误:
mcp-prompt-engine validate git_stage_commit
✓ git_stage_commit.tmpl - 有效
将MCP服务器添加到你的MCP客户端。请参阅连接到客户端以获取配置示例。
你的git_stage_commit提示现在可以在你的客户端中使用!
例如,在Claude Desktop中,你可以选择git_stage_commit提示,提供type MCP提示参数,并获得一个生成的提示,这将帮助你完成一个完美的提交消息。
在Claude Code或Gemini CLI中,你可以开始键入/git_stage_commit,它会建议带有提供的参数的提示,选择后即可执行。
从GitHub Releases页面下载适用于你操作系统的最新版本。
git clone https://github.com/vasayxtx/mcp-prompt-engine.git
cd mcp-prompt-engine
make build
有一个预构建的Docker镜像可用。挂载你的本地prompts和logs目录到容器。
# 从GHCR拉取并运行预构建的镜像
docker run -i --rm \
-v /path/to/your/prompts:/app/prompts:ro \
-v /path/to/your/logs:/app/logs \
ghcr.io/vasayxtx/mcp-prompt-engine
你也可以使用make docker-build本地构建镜像。
创建一个目录来存储你的提示模板。每个模板应该是一个.tmpl文件,使用Go的text/template语法,格式如下:
{{/* 提示的简要描述 */}}
你的提示文本在这里,包含{{.template_variable}}占位符。
第一行注释({{/* 描述 */}})用作提示描述,其余部分是提示模板。
部分模板应以前缀下划线命名(例如,_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文档。
当可能时,服务器会自动将参数值解析为JSON,使模板中的数据类型丰富:
true,false → Go布尔值42,3.14 → Go数值["item1", "item2"] → Go切片,可用于{{range}}{"key": "value"} → Go映射,用于结构化数据这允许进行高级模板操作,如:
{{range .items}}项目:{{.}}{{end}}
{{if .enabled}}功能已启用{{end}}
{{.config.timeout}}秒
要禁用JSON解析并将所有参数视为字符串,请在serve和render命令中使用--disable-json-args标志。
CLI是你管理测试模板的主要工具。
默认情况下,它会在./prompts目录中查找模板,但你可以使用--prompts标志指定不同的目录。
1. 列出模板
# 查看可用提示的简单列表
mcp-prompt-engine list
# 查看带有描述和变量的详细视图
m
mcp-prompt-engine list --verbose
2. 渲染模板
直接在终端中渲染提示,使用-a或--arg标志提供参数。
它会自动注入环境变量作为任何缺失参数的后备。例如,如果你有环境变量TYPE=fix,它将被注入到模板中作为{{.type}}。
# 渲染Git提交提示,提供'type'变量
mcp-prompt-engine render git_stage_commit --arg type=feat
3. 验证模板
检查所有模板是否有语法错误。如果任何模板无效,命令将返回错误。
# 验证目录中的所有模板
mcp-prompt-engine validate
# 验证单个模板
mcp-prompt-engine validate git_stage_commit
4. 启动服务器
运行MCP服务器,使你的提示可供客户端使用。
# 使用默认设置运行(查找./prompts)
mcp-prompt-engine serve
# 指定不同的提示目录和日志文件
mcp-prompt-engine --prompts /path/to/prompts serve --log-file ./server.log
要使用此引擎与支持MCP提示的任何客户端一起使用,请在其MCP服务器配置中添加新条目。
全局配置位置(MacOS):
~/.claude.json(mcpServers部分)~/Library/Application\ Support/Claude/claude_desktop_config.json(mcpServers部分)~/.gemini/settings.json(mcpServers部分)预构建二进制文件示例:
{
"prompts": {
"command": "/path/to/your/mcp-prompt-engine",
"args": [
"--prompts", "/path/to/your/prompts",
"serve",
"--quiet"
]
}
}
Docker示例:
{
"mcp-prompt-engine-docker": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-v", "/path/to/your/prompts:/app/prompts:ro",
"-v", "/path/to/your/logs:/app/logs",
"ghcr.io/vasayxtx/mcp-prompt-engine"
]
}
}
本项目采用MIT许可证 - 详情请参阅LICENSE文件。