返回市场
自定义提示mcp

自定义提示mcp

作者:vasayxtx15 星标更新:2025-10-02

项目介绍

MCP Prompt Engine

Go 报告卡 GitHub 发布 MIT 许可证 Go.Dev 参考

这是一个使用优雅且强大的文本模板引擎来管理和提供动态提示模板的模型控制协议(MCP)服务器。创建可复用、基于逻辑的提示,其中包含变量、部分和条件语句,可以提供给任何兼容的MCP客户端,如Claude Code、Claude Desktop、Gemini CLI、带有Copilot的VSCode等。

主要功能

  • 兼容MCP:开箱即用,与支持提示的任何MCP客户端兼容。
  • 强大的Go模板:利用Go text/template语法的全部能力,包括变量、条件语句、循环等。
  • 可复用的部分:在部分模板中定义通用组件(例如,_header.tmpl),并在你的提示中复用它们。
  • 提示参数:所有模板变量都会自动暴露为MCP提示参数,允许客户端进行动态输入。
  • 热重载:自动检测提示文件的变化并重新加载,无需重启服务器。
  • 丰富的CLI:现代命令行界面,用于列出、验证和渲染模板,便于开发和测试。
  • 智能参数处理
    • 自动解析JSON参数(布尔值、数字、数组、对象)。
    • 注入环境变量作为模板参数的后备。
  • 容器化:全面支持Docker,便于部署和集成。

快速开始

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" }}
你是专门撰写清晰、简洁且符合常规的Git提交消息的专家程序员。
提交消息必须严格遵循Conventional Commits规范。

最终生成的提交消息必须按照以下格式:

```
<类型>:对更改的简短、命令式总结

[可选的更长描述,解释变更的原因。使用破折号点以提高清晰度。]
```
{{ if .type -}}
使用{{.type}}作为类型。
{{ end }}
{{ end }}
```

现在,创建一个主提示prompts/git_stage_commit.tmpl,使用这个部分: ```go {{- /* 提交当前暂存的更改 */ -}}

{{- template "_git_commit_role" . -}}

你的任务是提交所有当前暂存的更改。
为了理解上下文,请使用命令`git diff --staged`分析暂存的代码。
根据该分析,使用合适的提交消息提交暂存的更改。
```

3. 验证你的提示

验证你的提示,确保它没有语法错误:

mcp-prompt-engine validate git_stage_commit
✓ git_stage_commit.tmpl - 有效

4. 将MCP服务器连接到你的客户端

将MCP服务器添加到你的MCP客户端。请参阅连接到客户端以获取配置示例。

5. 使用你的提示

你的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

有一个预构建的Docker镜像可用。挂载你的本地promptslogs目录到容器。

# 从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参数解析

当可能时,服务器会自动将参数值解析为JSON,使模板中的数据类型丰富:

  • 布尔值truefalse → Go布尔值
  • 数字423.14 → Go数值
  • 数组["item1", "item2"] → Go切片,可用于{{range}}
  • 对象{"key": "value"} → Go映射,用于结构化数据
  • 字符串:无效的JSON将回退为字符串值

这允许进行高级模板操作,如:

{{range .items}}项目:{{.}}{{end}}
{{if .enabled}}功能已启用{{end}}
{{.config.timeout}}秒

要禁用JSON解析并将所有参数视为字符串,请在serverender命令中使用--disable-json-args标志。

CLI命令

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 Code:~/.claude.jsonmcpServers部分)
  • Claude Desktop:~/Library/Application\ Support/Claude/claude_desktop_config.jsonmcpServers部分)
  • Gemini CLI:~/.gemini/settings.jsonmcpServers部分)

预构建二进制文件示例:

{
  "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文件。