Skip to main content
Glama
vasayxtx

mcp-prompt-engine

by vasayxtx

MCP 프롬프트 엔진

Go Report Card GitHub release (latest by date) License: MIT Go.Dev reference

우아하고 강력한 텍스트 템플릿 엔진을 사용하여 동적 프롬프트 템플릿을 관리하고 제공하기 위한 모델 제어 프로토콜(MCP) 서버입니다. 변수, 부분 템플릿(partial), 조건문을 사용하여 재사용 가능하고 논리 기반의 프롬프트를 생성할 수 있으며, Claude Code, Claude Desktop, Gemini CLI, Copilot이 포함된 VSCode 등 호환되는 MCP 클라이언트에 제공할 수 있습니다.

주요 기능

  • MCP 호환: 프롬프트를 지원하는 모든 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

첫 번째 줄 주석(`{{/* 설명 */}}`)은 프롬프트 설명으로 사용되며, 파일의 나머지 부분은 프롬프트 템플릿입니다.

부분 템플릿은 밑줄로 시작해야 하며(예: `_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) 파일을 참조하세요.
-
security - not tested
A
license - permissive license
-
quality - not tested

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