mcpField
M
Mcp Prompt Manager

Mcp Prompt Manager

本地服务
github.com/CarlLee1983云与基础设施045 周前更新

关于 Mcp Prompt Manager

Mcp Prompt Manager 是一个以 Git 为数据源的 MCP 服务,用于集中管理并向 AI 编辑器提供提示词模板。它支持 Handlebars 动态模板、分组筛选和无需重启的热加载,适合需要协作维护提示词的团队。

主要功能

  1. 01从 Git 仓库同步提示词
  2. 02Handlebars 模板与 Partials
  3. 03提示词热加载
  4. 04按组筛选提示词
  5. 05本地缓存与过期清理
  6. 06版本与状态管理

适用场景

  1. 01团队通过 Git 统一维护提示词
  2. 02在 Cursor 等客户端使用动态模板
  3. 03更新提示词而不重启服务

MCP 相关

它向 MCP 客户端提供 Git 仓库中的提示词模板,并支持通过客户端列出和使用提示词。README 提及 Cursor、Claude Desktop、VS Code 等客户端。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

MCP 提示词管理器(Git 驱动)

用于管理和提供提示词模板的 Git 驱动 Model Context Protocol(MCP)服务

CI CodeQL codecov License: ISC TypeScript MCP SDK Coverage

English | 繁體中文

📋 简介

这是一个由 Git 驱动的 Model Context Protocol(MCP)服务,旨在管理和提供提示词模板。它允许你将提示词存储在单独的 Git 仓库中,并通过 MCP 协议直接在 Cursor、Claude Desktop 等 AI 编辑器中使用。

主要优势:

  • 🔄 团队协作:通过 Git 版本控制,确保团队使用统一的提示词版本
  • 🎯 动态模板:支持 Handlebars 语法,可创建可复用的动态提示词
  • 🚀 零停机重载:支持热重载,无需重启即可更新提示词
  • 🔍 智能管理:内置提示词版本管理、状态跟踪和分组筛选
  • 📊 完整监控:系统健康状态和提示词统计

✨ 功能特性

  • Git 同步:直接从指定的 Git 仓库同步提示词,确保团队使用统一的提示词版本。
  • Handlebars 模板:支持强大的 Handlebars 语法,可创建动态、可复用的提示词模板。
  • Partials 支持:支持 Handlebars Partials,用于拆分和复用提示词片段(例如角色设定、输出格式)。
  • 本地缓存:自动将 Git 仓库内容缓存到本地 .prompts_cache 目录,以加快读取速度。
  • 缓存过期策略:定期自动清理过期缓存项,防止内存泄漏并确保数据一致性。
  • 分组筛选:支持按分组筛选提示词,只加载所需内容。
  • 错误处理:提供完整的错误统计和报告,便于跟踪问题。
  • 重试机制:自动重试 Git 操作,提升可靠性。
  • 类型安全:使用 Zod 验证配置和提示词定义,确保类型安全。
  • 专业日志记录:使用 pino 日志系统,支持结构化日志和多个日志级别。

🚀 快速开始

选项 1:从市场安装(最简单)

如果你从 MCP 市场(例如 mcp.so)安装,请遵循市场的安装说明。通常,你需要:

  1. 通过市场安装:使用市场的安装界面
  2. 配置你的 MCP 客户端:将服务配置添加到你的 MCP 客户端
前置条件

安装前,请确保你已具备:

  • 已安装 Node.js(版本 18.0.0 或更高)
  • pnpm 包管理器(版本 8.0.0 或更高)
  • 一个包含提示词的 Git 仓库(或提示词的本地路径)
  • 一个 兼容 MCP 的客户端(Cursor、Claude Desktop、VS Code 等)
安装步骤
  1. 从 Marketplace 安装:

    • 访问你首选的 MCP marketplace
    • 搜索 "mcp-prompt-manager"
    • 按照 marketplace 的安装说明操作
    • 记下服务的安装路径
  2. 查找安装路径:

    • 从 marketplace 安装后,找到 dist/index.js 所在的位置
    • 通常位于全局 node_modules 目录或专用安装文件夹中
    • 配置时需要使用此文件的绝对路径
  3. 配置 MCP 客户端:

    • 打开 MCP 客户端的配置文件(文件位置请参阅配置部分)
    • 添加服务配置(请参阅下方示例)
    • 重要:使用绝对路径,而非相对路径
配置示例

安装后,使用以下配置来配置 MCP 客户端(Cursor、Claude Desktop 等):

适用于 Cursor(~/Library/Application Support/Cursor/User/globalStorage/cursor.mcp/mcp.json):

{
    "mcpServers": {
        "mcp-prompt-manager": {
            "command": "node",
            "args": ["/absolute/path/to/mcp-prompt-manager/dist/index.js"],
            "env": {
                "PROMPT_REPO_URL": "https://github.com/yourusername/your-prompts-repo.git",
                "MCP_LANGUAGE": "en",
                "MCP_GROUPS": "common",
                "LOG_LEVEL": "info"
            }
        }
    }
}

注意:将 /absolute/path/to/mcp-prompt-manager/dist/index.js 替换为 marketplace 安装服务时使用的实际绝对路径。

提示:完整的配置模板请参阅 mcp.json.example。

查找安装路径

如果你不确定 marketplace 将服务安装在了哪里:

macOS/Linux:

# Search for the installed file
find ~ -name "index.js" -path "*/mcp-prompt-manager/dist/index.js" 2>/dev/null

# Or check common installation locations
ls -la ~/.local/share/mcp-prompt-manager/dist/index.js
ls -la /usr/local/lib/node_modules/mcp-prompt-manager/dist/index.js

Windows:

# Search for the installed file
Get-ChildItem -Path $env:USERPROFILE -Filter "index.js" -Recurse -ErrorAction SilentlyContinue | Where-Object { $_.FullName -like "*mcp-prompt-manager\dist\index.js" }
验证

配置完成后:

  1. 完全重启 MCP 客户端
  2. 检查服务状态:
    • 在 Cursor 中:按 Cmd/Ctrl + Shift + P,搜索 "MCP: Show servers"
    • 在 Claude Desktop 中:在设置里的 MCP 服务列表中检查
  3. 确认提示词已加载:使用客户端的 MCP 工具列出可用提示词

不同 MCP 客户端的详细配置说明请参阅下方的配置部分。

选项 2:Docker 部署(推荐)

使用 Docker 是最简单的入门方式:

# 1. Clone the repository
git clone <project URL>
cd mcp-prompt-manager

# 2. Copy environment variables example
cp .env.docker.example .env

# 3. Edit .env and set your Git repository URL
# PROMPT_REPO_URL=https://github.com/yourusername/your-prompts-repo.git

# 4. Start with Docker Compose
docker-compose up -d

# 5. View logs
docker-compose logs -f

Docker 部署的详细说明请参阅 DOCKER.md。

选项 3:本地安装

此选项推荐用于开发,或希望完全掌控安装过程的情况。

前置条件
  • Node.js 18.0.0 或更高版本
  • pnpm 8.0.0 或更高版本(必需,npm/yarn 将无法使用)
  • Git(用于克隆仓库)
安装步骤
  1. 克隆仓库:
git clone https://github.com/CarlLee1983/mcp-prompt-manager.git
cd mcp-prompt-manager
  1. 安装依赖:
# Use pnpm (required - npm/yarn will fail)
pnpm install

注意:安装必须使用 pnpm;由于预安装检查,npm/yarn 将无法使用。

  1. 构建项目:
pnpm run build

此操作会将 TypeScript 编译为 JavaScript,并输出到 dist/ 目录。

  1. 配置环境变量:

复制示例配置文件并创建 .env:

cp .env.example .env

编辑 .env 文件,设置 Prompt Git Repository 的路径或 URL:

# Git Repository source (required)
# Local path example
PROMPT_REPO_URL=/Users/yourname/Desktop/my-local-prompts

# Or remote Git URL examples
# PROMPT_REPO_URL=https://github.com/yourusername/my-prompts.git
# [email protected]:yourusername/my-prompts.git

# Output language setting (optional, default: en)
MCP_LANGUAGE=en  # or zh

# Group filter setting (optional, defaults to loading only common group when not set)
# Example: MCP_GROUPS="laravel,vue,react"
# Note: When not set, the system will explicitly prompt in logs about using default groups
MCP_GROUPS=laravel,vue

# Custom storage directory (optional, default: .prompts_cache)
STORAGE_DIR=/custom/path

# Git branch (optional, default: main)
GIT_BRANCH=main

# Git retry count (optional, default: 3)
GIT_MAX_RETRIES=3

# Cache cleanup interval (optional, default: 10000 milliseconds)
# Set the interval time (in milliseconds) for periodic cleanup of expired cache items
# Default is 10 seconds (CACHE_TTL * 2) to ensure expired items are cleaned up promptly
# Recommended values: 5000-30000 milliseconds, adjust based on usage frequency
CACHE_CLEANUP_INTERVAL=10000

# Log level (optional)
# Options: fatal, error, warn, info, debug, trace, silent
# Notes:
# - stderr only outputs warn/error/fatal level logs (to avoid being marked as error)
# - info/debug/trace level logs only output to file (if LOG_FILE is set)
# - If LOG_FILE is not set, info level logs are completely suppressed (to avoid confusion)
# - Production environment defaults to warn (only warnings and errors), development defaults to info
# - Setting silent completely disables log output
LOG_LEVEL=info

# Log file path (optional, strongly recommended)
# After setting this variable, all level logs will be written to file (JSON format)
# stderr still only outputs warn/error/fatal (to avoid being marked as error)
# Can be absolute or relative path (relative to project root)
# Examples:
# LOG_FILE=/tmp/mcp-prompt-manager.log
# LOG_FILE=logs/mcp.log
# Note: File is written in append mode, will not overwrite existing content
# Recommendation: Set this variable to view complete logs (including info level)
LOG_FILE=logs/mcp.log
  1. 配置 MCP 客户端:

构建完成后,需要配置 MCP 客户端以使用本地安装的服务。路径如下:

/path/to/mcp-prompt-manager/dist/index.js

将 /path/to/mcp-prompt-manager 替换为克隆仓库时使用的实际绝对路径。

不同客户端的详细配置说明请参阅下方的配置部分。

快速开始(开发)

开发时,可以使用以下命令:

# Install dependencies
pnpm install

# Build the project
pnpm run build

# Start development server with Inspector
pnpm dev

# Run tests
pnpm test:run

# Lint code
pnpm lint

🛠️ 使用方法

使用 Inspector 测试

我们提供了一个便捷命令,用于启动 MCP Inspector 进行测试:

基本用法

重要:Inspector 运行的是编译后的 dist/index.js,因此如果你修改了源代码,需要先编译:

# 1. Compile first (if source code was modified)
pnpm run build

# 2. Start Inspector
pnpm run inspector
快速开发模式

开发时,可以使用组合命令,在启动 Inspector 前自动进行编译:

pnpm run inspector:dev

此命令会自动运行 build,然后启动 Inspector,确保你测试的是最新编译的代码。

Inspector 功能

Inspector 会启动一个 Web 界面,你可以在其中:

  • 查看所有已加载的提示词
  • 测试提示词输出
  • 查看错误消息
  • 验证环境变量设置
在 Cursor 中使用
配置文件位置

macOS:

~/Library/Application Support/Cursor/User/globalStorage/cursor.mcp/mcp.json

Windows:

%APPDATA%\Cursor\User\globalStorage\cursor.mcp\mcp.json

Linux:

~/.config/Cursor/User/globalStorage/cursor.mcp/mcp.json
配置步骤
  1. 找到配置文件:

    • 方法 1:在 Cursor 中,按下 Cmd/Ctrl + Shift + P,搜索 “MCP: Add server”
    • 方法 2:直接编辑上述路径中的 mcp.json 文件
  2. 编辑配置文件:

{
    "mcpServers": {
        "mcp-prompt-manager": {
            "command": "node",
            "args": ["/path/to/mcp-prompt-manager/dist/index.js"],
            "env": {
                "PROMPT_REPO_URL": "/Users/yourname/Desktop/my-local-prompts",
                "MCP_LANGUAGE": "zh",
                "MCP_GROUPS": "laravel,vue"
            }
        }
    }
}
  1. 重要配置说明:

    • command:使用 node 执行编译后的 JavaScript 文件
    • args:必须是指向 dist/index.js 的绝对路径
    • env:环境变量(可选,如果已在 .env 中设置)
  2. 验证配置:

    • 重启 Cursor
    • 在 Cursor 中,按下 Cmd/Ctrl + Shift + P,搜索 “MCP: Show servers”
    • 确认 mcp-prompt-manager 显示为已连接

注意:

  • 将 /path/to/mcp-prompt-manager 替换为此项目的实际绝对路径
  • 如果环境变量已在 .env 中设置,可以省略 env 块,但直接在 JSON 中指定通常更可靠
  • 如果配置文件不存在,则需要先创建 mcp.json 文件
在 Claude Desktop 中使用
配置文件位置

macOS:

~/Library/Application Support/Claude/claude_desktop_config.json

Windows:

%APPDATA%\Claude\claude_desktop_config.json

Linux:

~/.config/Claude/claude_desktop_config.json
配置步骤
  1. 创建或编辑配置文件:

如果文件不存在,请先创建:

# macOS/Linux
mkdir -p ~/Library/Application\ Support/Claude
touch ~/Library/Application\ Support/Claude/claude_desktop_config.json
  1. 编辑配置文件:
{
    "mcpServers": {
        "mcp-prompt-manager": {
            "command": "node",
            "args": ["/path/to/mcp-prompt-manager/dist/index.js"],
            "env": {
                "PROMPT_REPO_URL": "/Users/yourname/Desktop/my-local-prompts",
                "MCP_LANGUAGE": "zh",
                "MCP_GROUPS": "laravel,vue"
            }
        }
    }
}
  1. 验证配置:
    • 完全关闭 Claude Desktop(确保所有窗口都已关闭)
    • 重启 Claude Desktop
    • 在对话中,Claude 应该能够使用你定义的提示词

注意:

  • 配置文件必须采用有效的 JSON 格式
  • 路径必须使用绝对路径
  • 修改配置文件后,必须完全重启 Claude Desktop
在 VS Code 中使用(通过扩展)

VS Code 可通过 MCP 扩展使用 MCP 服务。

配置步骤
  1. 安装 MCP 扩展:

    • 在 VS Code 扩展市场中搜索 “MCP” 或 “Model Context Protocol”
    • 安装相应的扩展
  2. 配置 MCP 服务:

    • 打开 VS Code 设置(Cmd/Ctrl + ,)
    • 搜索与 “MCP” 相关的设置
    • 或编辑 settings.json:
{
    "mcp.servers": {
        "mcp-prompt-manager": {
            "command": "node",
            "args": ["/absolute/path/to/mcp-prompt-manager/dist/index.js"],
            "env": {
                "PROMPT_REPO_URL": "/path/to/your/repo",
                "MCP_LANGUAGE": "zh",
                "MCP_GROUPS": "laravel,vue"
            }
        }
    }
}
在 Continue 中使用

Continue 是一款支持 MCP 的开源 AI 编码助手。

配置文件位置

macOS:

~/.continue/config.json

Windows:

%APPDATA%\Continue\config.json

Linux:

~/.config/Continue/config.json
配置步骤

编辑 config.json:

{
    "mcpServers": {
        "mcp-prompt-manager": {
            "command": "node",
            "args": ["/absolute/path/to/mcp-prompt-manager/dist/index.js"],
            "env": {
                "PROMPT_REPO_URL": "/path/to/your/repo",
                "MCP_LANGUAGE": "zh",
                "MCP_GROUPS": "laravel,vue"
            }
        }
    }
}
在 Aider 中使用

Aider 是一款支持 MCP 的 AI 代码编辑器。

配置方法

在 Aider 的配置文件中(通常为 ~/.aider/config.json,也可以通过环境变量配置):

{
    "mcp_servers": {
        "mcp-prompt-manager": {
            "command": "node",
            "args": ["/absolute/path/to/mcp-prompt-manager/dist/index.js"],
            "env": {
                "PROMPT_REPO_URL": "/path/to/your/repo"
            }
        }
    }
}
在自定义应用中使用(编程方式)

如果你正在开发自己的应用并希望集成 MCP 服务,可以使用 MCP SDK:

TypeScript/JavaScript 示例
import { Client } from "@modelcontextprotocol/sdk/client/index.js"
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js"
import { spawn } from "child_process"

// Create MCP Client
const client = new Client(
    {
        name: "my-app",
        version: "1.0.0",
    },
    {
        capabilities: {},
    }
)

// Create transport (using stdio)
const transport = new StdioClientTransport({
    command: "node",
    args: ["/path/to/mcp-prompt-manager/dist/index.js"],
    env: {
        PROMPT_REPO_URL: "/path/to/repo",
        MCP_LANGUAGE: "en",
    },
})

// Connect
await client.connect(transport)

// List available prompts
const prompts = await client.listPrompts()
console.log("Available prompts:", prompts)

// Get specific prompt
const prompt = await client.getPrompt({
    name: "code-review",
    arguments: {
        code: "const x = 1",
        language: "TypeScript",
    },
})
Python 示例
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client

async def main():
    # Configure server parameters
    server_params = StdioServerParameters(
        command="node",
        args=["/path/to/mcp-prompt-manager/dist/index.js"],
        env={
            "PROMPT_REPO_URL": "/path/to/repo",
            "MCP_LANGUAGE": "en"
        }
    )

    # Create session
    async with stdio_client(server_params) as (read, write):
        async with ClientSession(read, write) as session:
            # Initialize
            await session.initialize()

            # List prompts
            prompts = await session.list_prompts()
            print(f"Available prompts: {prompts}")

            # Get prompt
            prompt = await session.get_prompt(
                name="code-review",
                arguments={
                    "code": "const x = 1",
                    "language": "TypeScript"
                }
            )
            print(f"Prompt result: {prompt}")
MCP 客户端快速参考
客户端配置文件位置配置格式备注
Cursor~/Library/Application Support/Cursor/User/globalStorage/cursor.mcp/mcp.json (macOS)mcpServers支持通过 UI 配置
Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.json (macOS)mcpServers需要完全重启
VS Codesettings.jsonmcp.servers需要 MCP 扩展
Continue~/.continue/config.jsonmcpServers开源 AI 助手
Aider~/.aider/config.jsonmcp_serversAI 代码编辑器

注意:路径中的 ~ 表示用户主目录,展开后为:

  • macOS/Linux:/Users/username 或 /home/username
  • Windows:C:\Users\username
通用配置格式

所有兼容 MCP 的客户端都遵循相同的配置格式:

{
    "mcpServers": {
        "mcp-prompt-manager": {
            "command": "node",
            "args": ["/absolute/path/to/mcp-prompt-manager/dist/index.js"],
            "env": {
                "PROMPT_REPO_URL": "your-repo-url-or-path",
                "MCP_LANGUAGE": "en",
                "MCP_GROUPS": "common",
                "LOG_LEVEL": "info"
            }
        }
    }
}
📝 环境变量参考
变量必填默认值说明
PROMPT_REPO_URL是*-主 Git 仓库 URL 或本地路径。(*如果未设置 PROMPT_REPO_URLS,则必填)
PROMPT_REPO_URLS否-以逗号分隔的多个仓库 URL 列表(例如 url1,url2)。
SYSTEM_REPO_URL否-用于系统级提示词(例如通用提示词)的独立仓库 URL。
MCP_LANGUAGE否en输出语言。可选项:en、zh。
MCP_GROUPS否-要加载的提示词组列表,以逗号分隔(例如 laravel,vue)。如果未设置,则检查 System Repo 或使用默认行为。
TRANSPORT_TYPE否stdio通信方式。可选项:stdio、http、sse。
LOG_LEVEL否info日志详细程度。可选项:debug、info、warn、error、silent。
LOG_FILE否-日志文件写入路径(例如 logs/mcp.log)。强烈建议用于调试。
STORAGE_DIR否.prompts_cache用于存储克隆仓库的目录。
GIT_BRANCH否main要克隆的默认 Git 分支。
GIT_MAX_RETRIES否3Git 操作失败时的重试次数。
GIT_POLLING_INTERVAL否300000在 WATCH_MODE=true 时检查更新的间隔(毫秒)。
WATCH_MODE否false检测到仓库变更时启用自动重新加载。
CACHE_PROVIDER否local缓存机制。可选项:local、redis。
CACHE_TTL否-缓存项的生存时间(可选)。
CACHE_CLEANUP_INTERVAL否10000清理过期缓存项的间隔(毫秒)。

安全注意事项:

  1. 切勿将 .env 文件提交到版本控制中。.env.example 文件仅作为模板提供。
  2. 避免在 PROMPT_REPO_URL 中硬编码敏感凭据(密码、令牌)。
  3. 使用 SSH 密钥([email protected]...)进行安全的无密码身份验证。
  4. 在生产环境中,请使用 Docker Secrets 或平台的密钥管理系统。
重要配置说明
  1. 绝对路径:配置 Cursor/Claude 等客户端时,dist/index.js 的路径必须是绝对路径。
  2. JSON 格式:确保配置文件是有效的 JSON(末尾不能有逗号)。
  3. 优先级:客户端配置 JSON 中定义的 env 会覆盖 .env 文件。
  4. 重启:更改配置后,务必重启 AI 编辑器/客户端。
验证 MCP 服务是否正常运行
方法 1:使用 MCP Inspector
cd /path/to/mcp-prompt-manager

# If source code was modified, compile first
pnpm run build

# Start Inspector (or use inspector:dev for auto-compile)
pnpm run inspector
# or
pnpm run inspector:dev

这会启动一个 Web 界面,你可以在其中:

  • 查看所有已加载的提示词
  • 测试提示词输出
  • 查看错误消息

注意:Inspector 会运行 dist/index.js,因此修改源代码后,必须先运行 build,才能看到最新更改。

方法 2:检查日志

在配置文件中添加环境变量,以查看详细日志:

{
    "mcpServers": {
        "mcp-prompt-manager": {
            "command": "node",
            "args": ["/path/to/mcp-prompt-manager/dist/index.js"],
            "env": {
                "PROMPT_REPO_URL": "/path/to/repo",
                "LOG_LEVEL": "debug"
            }
        }
    }
}

然后查看客户端的日志输出(Cursor 的输出面板或 Claude Desktop 的日志)。

方法 3:检查文件系统

确认 Git 仓库已成功同步:

ls -la /path/to/mcp-prompt-manager/.prompts_cache

你应该能看到从 Git 仓库克隆的文件。

常见配置问题
问题 1:找不到配置文件

解决方案:

  • 确认应用至少启动过一次(应用会自动创建配置目录)
  • 手动创建配置文件和目录
  • 检查路径是否正确(注意区分大小写和空格)
问题 2:JSON 格式错误

解决方案:

  • 使用 JSON 验证工具检查格式(例如,JSONLint)
  • 确保所有字符串都使用双引号
  • 确保最后一项后没有逗号
问题 3:服务无法启动

解决方案:

  1. 确认 dist/index.js 文件存在
  2. 确认路径是绝对路径
  3. 确认已安装 Node.js,且版本 >= 18
  4. 检查环境变量是否正确
  5. 检查客户端错误日志
问题 4:未找到提示词

解决方案:

  1. 确认 PROMPT_REPO_URL 正确
  2. 检查 MCP_GROUPS 设置是否包含你需要的分组
    • 注意:如果未设置 MCP_GROUPS,系统默认只加载 common 分组
    • 检查日志消息,确认是否正在使用默认分组
    • 设置 MCP_GROUPS=laravel,vue 等以加载其他分组
  3. 确认 Git 仓库包含 .yaml 或 .yml 文件
  4. 使用 LOG_LEVEL=debug 查看详细日志,并确认加载了哪些分组

📂 提示词仓库结构

你的提示词仓库(PROMPT_REPO_URL 指向的位置)应具有以下结构:

my-prompts/
├── partials/              # Store Handlebars partials (.hbs)
│   ├── role-expert.hbs
│   └── output-format.hbs
├── common/                # common group (always loaded)
│   ├── common-prompt.yaml
│   └── partials/
│       └── common-partial.hbs
├── laravel/               # laravel group (must be specified in MCP_GROUPS)
│   └── laravel-prompt.yaml
├── vue/                   # vue group (must be specified in MCP_GROUPS)
│   └── vue-prompt.yaml
├── root-prompt.yaml       # Root directory (always loaded)
└── another-prompt.yml
分组筛选规则
  • 根目录(/):始终加载
  • common 分组(common/):始终加载
  • 其他分组:仅在 MCP_GROUPS 环境变量中指定时加载
默认行为

当未设置 MCP_GROUPS 时:

  • 系统自动加载 common 分组(以及根目录中的提示词)
  • 启动日志会明确提示正在使用默认分组
  • 日志会提示设置 MCP_GROUPS 以加载更多分组
示例
  • MCP_GROUPS=laravel,vue → 加载根目录、common、laravel、vue
  • MCP_GROUPS= 或未设置 → 仅加载根目录和 common(系统会提示正在使用默认分组)
提示词定义文件示例(.yaml)
id: "code-review"
title: "Code Review"
description: "Help me review code"
args:
    code:
        type: "string"
        description: "Code to review"
    language:
        type: "string"
        description: "Programming language"
template: |
    {{> role-expert }}

    You are a senior {{language}} engineer.
    Please review the following code:

{{ code }}

参数类型

提示词支持三种参数类型:

  • string:字符串类型(默认)
  • number:数字类型
  • boolean:布尔类型
注册表功能(可选)

你可以在提示词仓库的根目录中创建 registry.yaml 文件,以集中管理提示词的可见性和弃用状态。

注册表文件格式
prompts:
    - id: "code-review"
      group: "common"
      visibility: "public" # public, private, internal
      deprecated: false
    - id: "old-prompt"
      visibility: "private"
      deprecated: true
注册表字段说明
  • id:提示词 ID(必填)
  • group:分组名称(可选)
  • visibility:可见性设置
    • public:公开(默认)
    • private:私有
    • internal:内部使用
  • deprecated:是否已弃用(默认值为 false)
注册表用途
  • 集中管理:在单个文件中管理所有提示词的可见性和弃用状态
  • 覆盖默认值:可覆盖提示词定义文件中的默认设置
  • 版本控制:通过 Git 跟踪提示词生命周期

注意:registry.yaml 是可选的。如果该文件不存在,系统将使用提示词定义文件中的默认值。

提示词运行时状态

每个提示词都有一个运行时状态(runtime_state),用于指示提示词当前是否可用:

  • active:活跃状态,提示词正常工作,可作为 MCP 工具使用
  • legacy:旧版状态,提示词仍可用,但标记为旧版本,建议使用新版本
  • invalid:无效状态,提示词定义存在问题(例如缺少必填字段、模板错误等),无法使用
  • disabled:已禁用,提示词已明确禁用(例如在注册表中标记为弃用)
  • warning:警告状态,提示词可以正常工作,但存在一些警告(例如版本过旧)
提示词来源

每个提示词都有一个来源(source)标签,用于指示元数据的来源:

  • embedded:元数据嵌入在提示词定义文件中(使用 metadata: 块)
  • registry:来自 registry.yaml 的设置
  • legacy:旧版模式,没有元数据,使用默认值
提示词状态

每个提示词都有一个状态(status),用于指示其开发阶段:

  • draft:草稿,正在开发中
  • stable:稳定版本,可正常使用
  • deprecated:已弃用,不建议使用
  • legacy:旧版,仍可用,但建议升级

🔧 MCP 工具和资源

此项目提供多个 MCP 工具和资源,用于管理和查询提示词。

MCP 工具
1. mcp.reload / mcp.reload_prompts

无需重启服务即可重新加载所有提示词(热重载)。

  • 功能:从 Git 仓库拉取最新更改、清除缓存,并重新加载所有 Handlebars 局部模板和提示词
  • 参数:无
  • 使用示例:
    {
        "tool": "mcp.reload",
        "arguments": {}
    }
    
2. mcp.stats / mcp.prompt.stats

获取提示词统计信息。

  • 功能:返回所有提示词的统计信息,包括按运行时状态分类的数量(active、legacy、invalid、disabled、warning)
  • 参数:无
  • 返回内容:
    • total:总数
    • active:活跃状态数量
    • legacy:旧版状态数量
    • invalid:无效状态数量
    • disabled:已禁用数量
    • warning:警告状态数量
3. mcp.list / mcp.prompt.list

使用多种筛选选项列出所有提示词。

  • 功能:列出所有提示词运行时及其完整元数据信息
  • 参数(可选):
    • status:按状态筛选(draft、stable、deprecated、legacy)
    • group:按组名筛选
    • tag:按标签筛选(提示词必须包含此标签)
    • runtime_state:按运行时状态筛选(active、legacy、invalid、disabled、warning)
  • 使用示例:
    {
        "tool": "mcp.list",
        "arguments": {
            "group": "laravel",
            "runtime_state": "active"
        }
    }
    
4. mcp.inspect

检查特定提示词的详细运行时信息。

  • 功能:根据提示词 ID 获取完整的运行时元数据,包括状态、来源、版本、标签和用例
  • 参数:
    • id:提示词 ID(必填)
  • 使用示例:
    {
        "tool": "mcp.inspect",
        "arguments": {
            "id": "code-review"
        }
    }
    
5. mcp.repo.switch

切换到其他 Prompt 仓库并重新加载(零停机)。

  • 功能:切换到新的 Git 仓库并重新加载所有提示词
  • 参数:
    • repo_url:仓库 URL(必需)
    • branch:分支名称(可选)
  • 使用示例:
    {
        "tool": "mcp.repo.switch",
        "arguments": {
            "repo_url": "/path/to/new/repo",
            "branch": "main"
        }
    }
    
6. preview_prompt

使用给定参数预览/渲染提示词模板,而不执行它(调试工具)。

  • 功能:使用给定参数渲染提示词模板,显示最终文本,但不会将其发送给大模型。可用于验证模板逻辑。
  • 参数:
    • promptId:提示词 ID(必需,例如 'laravel:code-review')
    • args:包含模板参数/变量的 JSON 对象(必需)
  • 返回值:
    • success:表示成功或失败的布尔值
    • renderedText:渲染后的提示词文本
    • highlightedText:以 Markdown 粗体突出显示变量的渲染文本
    • statistics:包含 renderedLength(字符数)和 estimatedTokens(预估词元数)的对象
    • warnings:架构验证警告数组(例如,缺少建议字段)
  • 使用示例:
    {
        "tool": "preview_prompt",
        "arguments": {
            "promptId": "laravel:code-review",
            "args": {
                "code": "function test() { return true; }",
                "language": "php"
            }
        }
    }
    
  • 高级功能:
    • 架构验证:根据提示词的 Zod 架构严格验证参数
    • 词元估算:估算词元数量(支持英文和中文文本)
    • 变量突出显示:使用 Markdown 粗体格式突出显示动态替换的变量
    • 架构警告:检测并报告缺少的必需或建议字段
MCP 资源
1. system://health

系统运行状况资源。

  • URI:system://health
  • MIME 类型:application/json
  • 内容:包含以下信息:
    • git:Git 仓库信息(URL、路径、HEAD 提交)
    • prompts:提示词统计信息(总数、各状态数量、已加载数量、分组列表)
    • registry:注册表状态(已启用、来源)
    • cache:缓存信息(大小、清理间隔)
    • system:系统信息(运行时间、内存使用情况)
2. prompts://list

提示词列表资源。

  • URI:prompts://list
  • MIME 类型:application/json
  • 内容:所有提示词的完整元数据列表,包括:
    • id:提示词 ID
    • title:标题
    • version:版本
    • status:状态
    • runtime_state:运行时状态
    • source:来源
    • tags:标签数组
    • use_cases:用例数组
    • group:分组名称
    • visibility:可见性
工具使用建议
  • 开发期间:使用 mcp.reload 快速重新加载提示词,无需重启服务
  • 调试期间:使用 mcp.inspect 检查特定提示词的详细信息,或使用 preview_prompt 测试模板渲染效果
  • 监控期间:使用 mcp.stats 和 system://health 资源监控系统状态
  • 查询期间:使用带筛选条件的 mcp.list 查找特定提示词
  • 测试期间:使用 preview_prompt 验证模板逻辑、检查词元数量,并在实际执行前查看变量替换结果

💻 开发指南

架构概览

MCP Prompt Manager 采用模块化架构,各部分职责划分清晰:

核心组件
  1. 仓库接口(src/repositories/strategy.ts)

    • 不同仓库类型(Git、本地)的抽象接口
    • 支持多个仓库策略,并按优先级加载
    • 处理仓库同步和文件监视
  2. 源管理器(src/services/sourceManager.ts)

    • 使用单例模式管理提示词生命周期
    • 处理提示词的加载、缓存和注册
    • 在加载时编译 Handlebars 模板,以提升性能
    • 管理提示词运行时状态和元数据
  3. 缓存层(src/cache/)

    • 支持本地缓存和 Redis(未来)的抽象缓存提供程序接口
    • 支持 LRU 淘汰和 TTL 的本地缓存
    • 自动清理过期缓存项
提示词存储流程
┌─────────────────────────────────────────────────────────────┐
│                    Git Repository                            │
│  (Remote URL or Local Path)                                 │
└────────────────────┬───────────────────────────────────────┘
                      │
                      ▼
┌─────────────────────────────────────────────────────────────┐
│              Repository Strategy                            │
│  • GitRepositoryStrategy: Clone/Pull from remote           │
│  • LocalRepositoryStrategy: Watch local file system         │
└────────────────────┬───────────────────────────────────────┘
                      │
                      ▼
┌─────────────────────────────────────────────────────────────┐
│              Local Storage (.prompts_cache)                 │
│  • Cached repository files                                   │
│  • File system cache (TTL-based)                             │
└────────────────────┬───────────────────────────────────────┘
                      │
                      ▼
┌─────────────────────────────────────────────────────────────┐
│              Source Manager                                  │
│  1. Scan YAML files                                          │
│  2. Parse prompt definitions                                 │
│  3. Compile Handlebars templates                             │
│  4. Validate with Zod schemas                                │
│  5. Cache compiled templates                                 │
└────────────────────┬───────────────────────────────────────┘
                      │
                      ▼
┌─────────────────────────────────────────────────────────────┐
│              MCP Server                                      │
│  • Register prompts as MCP Tools                            │
│  • Provide MCP Resources (health, list)                      │
│  • Handle tool invocations                                   │
└────────────────────┬───────────────────────────────────────┘
                      │
                      ▼
┌─────────────────────────────────────────────────────────────┐
│              MCP Clients                                     │
│  (Cursor, Claude Desktop, etc.)                              │
└─────────────────────────────────────────────────────────────┘
关键模块
  • 仓库接口:用于 Git 和本地仓库的抽象策略模式
  • 源管理器:集中管理提示词生命周期并提供缓存
  • 缓存提供程序:可插拔的缓存系统(本地内存或 Redis)
  • 加载器:用于加载提示词和局部模板的高级 API
  • MCP 工具:根据已加载的提示词动态注册工具
项目结构
mcp-prompt-manager/
├── src/
│   ├── index.ts              # Main entry point
│   ├── config/
│   │   └── env.ts            # Environment variable configuration and validation
│   ├── services/
│   │   ├── control.ts        # MCP control tool handlers
│   │   ├── git.ts            # Git sync service
│   │   ├── health.ts         # Health status service
│   │   ├── loaders.ts        # Prompt and Partials loader
│   │   └── sourceManager.ts  # Core prompt lifecycle manager
│   ├── repositories/
│   │   ├── strategy.ts        # Repository interface
│   │   ├── gitStrategy.ts    # Git repository strategy
│   │   ├── localStrategy.ts  # Local file system strategy
│   │   └── repoManager.ts    # Repository manager
│   ├── cache/
│   │   ├── cacheProvider.ts  # Cache interface
│   │   ├── localCache.ts     # Local memory cache
│   │   └── cacheFactory.ts  # Cache factory
│   ├── types/
│   │   ├── prompt.ts         # Prompt type definitions
│   │   ├── promptMetadata.ts # Prompt metadata types
│   │   ├── promptRuntime.ts  # Prompt runtime types
│   │   └── registry.ts       # Registry type definitions
│   └── utils/
│       ├── fileSystem.ts     # File system utilities (with cache)
│       ├── logger.ts         # Logging utilities
│       ├── errorFormatter.ts # Error formatting utilities
│       └── repoConfig.ts     # Repository configuration utilities
├── test/                      # Test files
│   ├── config.test.ts
│   ├── loaders.test.ts
│   ├── sourceManager.test.ts
│   ├── cache.test.ts
│   ├── fileSystem.test.ts
│   └── integration.test.ts  # Integration tests
├── dist/                      # Compiled output
├── package.json
├── tsconfig.json
└── vitest.config.ts
常用命令
# Compile TypeScript
npm run build
# or
pnpm run build

# Start MCP Inspector for debugging
# Note: Need to run build first, or use inspector:dev for auto-compile
pnpm run build && pnpm run inspector
# or use development mode (auto-compile)
pnpm run inspector:dev

# Run tests
npm run test
# or
pnpm test

# Run tests (once)
npm run test:run
# or
pnpm test:run

# Open test UI
npm run test:ui
# or
pnpm test:ui

# Format code
npm run format
# or
pnpm format

# Check code format
npm run format:check
# or
pnpm format:check
开发工作流
  1. 在 src/ 目录中修改代码。
  2. 运行 pnpm run build 重新编译(或使用 pnpm run inspector:dev 自动编译并测试)。
  3. 运行 pnpm run test 执行测试。
  4. 使用 pnpm run inspector:dev 验证更改(该命令会自动编译并启动 Inspector)。
  5. 在 Cursor 或 Claude Desktop 中重启 MCP Server 以应用更改。

重要说明:

  • inspector 命令运行的是 dist/index.js(编译后的文件)
  • 修改源代码后,必须先运行 build 才能看到最新更改
  • 使用 inspector:dev 可自动编译并启动,适合开发
提示词仓库验证

建议使用 @carllee1983/prompt-toolkit,在部署到 MCP Prompt Manager 之前验证提示词仓库。这有助于确保提示词质量,并在开发早期发现错误。

安装
# Install globally
npm install -g @carllee1983/prompt-toolkit
# or
pnpm add -g @carllee1983/prompt-toolkit
带验证的开发工作流
  1. 开发提示词:在仓库中创建和编辑提示词
  2. 本地验证:使用工具包在提交前进行验证
    prompt-toolkit validate repo
    
  3. CI/CD 验证:在 CI/CD 流水线中自动验证
    prompt-toolkit validate repo --exit-code --severity error
    
  4. 部署到 MCP Prompt Manager:MCP Prompt Manager 加载已验证的提示词
快速验证命令
# Validate entire repository
prompt-toolkit validate repo

# Validate with specific severity (show warnings and errors)
prompt-toolkit validate repo --severity warning

# Validate and exit with error code (for CI/CD)
prompt-toolkit validate repo --exit-code

# Validate single prompt file
prompt-toolkit validate file path/to/prompt.yaml

# Validate registry file
prompt-toolkit validate registry --repo-root /path/to/repo

# Validate partials directory
prompt-toolkit validate partials --partials-path partials
CI/CD 集成

将验证添加到 CI/CD 流水线中,以便在部署前发现错误:

# .github/workflows/validate-prompts.yml
name: Validate Prompts

on:
    push:
        branches: [main]
    pull_request:
        branches: [main]

jobs:
    validate:
        runs-on: ubuntu-latest
        steps:
            - uses: actions/checkout@v4

            - name: Setup Node.js
              uses: actions/setup-node@v4
              with:
                  node-version: 20

            - name: Install prompt-toolkit
              run: npm install -g @carllee1983/prompt-toolkit

            - name: Validate repository
              run: prompt-toolkit validate repo --exit-code --severity error
最佳实践
  • ✅ 提交前验证:推送更改前在本地运行验证
  • ✅ 使用 CI/CD:在 CI/CD 流水线中自动验证,以发现错误
  • ✅ 监控结果:跟踪验证结果,维护仓库健康
  • ✅ 按严重性筛选:使用 --severity 选项聚焦关键问题
  • ✅ JSON 输出:在 CI/CD 中使用 --format json 输出机器可读的结果
编程式用法

也可以在脚本中以编程方式使用该工具包:

import { validatePromptRepo } from "@carllee1983/prompt-toolkit"

const result = validatePromptRepo("/path/to/prompt-repo")

if (result.success) {
    console.log("Repository validation passed!")
} else {
    console.error("Validation errors:", result.errors)
}

更多信息请参阅 prompt-toolkit 文档。

🧪 测试

项目包含一套完整的测试:

  • 单元测试:多个测试文件覆盖所有核心功能
  • 集成测试:针对提示词加载和 MCP 工具的端到端测试
  • 总计:107 项测试,全部通过

运行测试:

# Watch mode
pnpm test

# Run once
pnpm test:run

# Open UI
pnpm test:ui
测试覆盖率

本项目通过全面的测试覆盖率来维持高代码质量,覆盖率阈值如下:

  • 语句:≥ 80%
  • 行:≥ 75%
  • 函数:≥ 75%
  • 分支:≥ 70%

注意:覆盖率报告使用 @vitest/coverage-v8,该工具要求 Node.js 19+。为维持代码质量,项目会强制执行覆盖率阈值。如果覆盖率低于阈值,测试将失败,以确保达到质量标准。

查看覆盖率报告
  1. 本地开发:运行 pnpm test:coverage 生成覆盖率报告,或使用 pnpm test:coverage:view 在浏览器中自动打开 HTML 覆盖率报告。

  2. CI/CD:运行 pnpm test:coverage:ci 生成覆盖率报告并强制执行阈值。如果未达到覆盖率阈值,CI 流水线将失败,确保在合并或发布之前达到代码质量标准。

  3. 覆盖率报告:覆盖率报告以多种格式生成在 coverage/ 目录中:

    • coverage/index.html - 交互式 HTML 报告
    • coverage/coverage-final.json - 用于 CI 集成的 JSON 格式
    • coverage/lcov.info - 用于覆盖率服务的 LCOV 格式
覆盖率命令
# Generate coverage report (local development)
pnpm test:coverage

# Generate coverage report with threshold enforcement (CI)
pnpm test:coverage:ci

# Generate coverage report and open HTML report
pnpm test:coverage:view
代码质量与 CI/CD

本项目通过多层检查来确保代码质量:

提交前钩子

使用 Husky 和 lint-staged 在每次提交前自动运行 lint 和格式化:

  • ESLint:自动修复 TypeScript 文件中的 lint 问题
  • Prettier:自动格式化代码,确保风格一致
  • 类型安全:已启用 TypeScript 严格模式(tsconfig.json 中的 strict: true)

提交前钩子仅对暂存文件运行,在维持代码质量的同时确保提交迅速完成。

持续集成(CI)

GitHub Actions CI 工作流会在每次推送和拉取请求时运行:

  • Node.js 兼容性:针对 Node.js 16.x、18.x 和 20.x 运行测试
  • Lint:ESLint 检查代码质量和风格
  • 类型检查:TypeScript 类型检查(tsc --noEmit)
  • 测试:运行完整测试套件并生成覆盖率报告
  • 上传覆盖率报告:自动上传至 Codecov
拉取请求所需检查

为确保代码质量,合并 PR 前必须通过以下检查:

  1. Lint:必须通过所有 ESLint 规则检查
  2. 类型检查:TypeScript 编译必须成功且无错误
  3. 测试:所有测试必须通过,且达到覆盖率阈值

在 GitHub 中设置必需检查:

  1. 前往仓库设置
  2. 导航至 Branches → Branch protection rules
  3. 为主分支添加或编辑规则
  4. 在 Require status checks to pass before merging 下,启用:
    • Test (Node.js 16.x) 或 Test (Node.js 18.x) 或 Test (Node.js 20.x)(至少一项)
    • 这些检查将自动包含 lint、类型检查和测试步骤

如果其中任何检查失败,CI 工作流将自动失败,从而阻止合并不符合质量标准的代码。

🔧 配置

环境变量
变量名称必填默认值描述
PROMPT_REPO_URL✅-Git 仓库 URL 或本地路径
MCP_LANGUAGE❌en输出语言(en 或 zh)
MCP_GROUPS❌common要加载的分组(以逗号分隔);未设置时,系统会询问默认行为
STORAGE_DIR❌.prompts_cache本地缓存目录
GIT_BRANCH❌mainGit 分支名称
GIT_MAX_RETRIES❌3Git 操作的最大重试次数
CACHE_CLEANUP_INTERVAL❌10000缓存清理间隔(毫秒),用于定期清理过期的缓存项
LOG_LEVEL❌warn (prod) / info (dev)日志级别,生产环境默认仅输出警告和错误
缓存过期策略

系统使用基于 TTL 的定期清理机制管理文件列表缓存,以确保内存使用效率。

缓存机制
  • 缓存 TTL:5 秒(硬编码)
  • 清理间隔:默认 10 秒(CACHE_TTL * 2),可通过 CACHE_CLEANUP_INTERVAL 环境变量调整
  • 自动清理:应用启动时自动启动清理机制
  • 优雅关闭:应用关闭时自动停止清理计时器
工作原理
  1. 创建缓存:调用 getFilesRecursively() 时,扫描结果会缓存 5 秒
  2. 定期清理:每 10 秒(或按配置的间隔),自动扫描并删除过期缓存项
  3. 内存管理:防止缓存无限增长,避免内存泄漏
配置示例
# Set shorter cleanup interval (for testing)
CACHE_CLEANUP_INTERVAL=2000  # Cleanup every 2 seconds

# Set longer cleanup interval (for production, reduce cleanup frequency)
CACHE_CLEANUP_INTERVAL=30000  # Cleanup every 30 seconds
监控缓存状态

你可以通过日志查看缓存清理状态(需要设置 LOG_LEVEL=debug):

[DEBUG] Cache cleanup mechanism started { interval: 10000 }
[DEBUG] Cache cleanup completed { cleaned: 2 }
验证缓存机制

请参阅 CACHE_VERIFICATION.md,了解完整的验证方法和测试指南。

安全性
  • ✅ 输入验证:使用 Zod 验证所有环境变量
  • ✅ 路径安全:防止路径遍历攻击
  • ✅ 分组验证:验证分组名称格式(仅允许字母、数字、下划线和连字符)

📝 日志记录

项目使用 pino 作为日志系统,支持结构化日志记录。

日志级别
  • fatal:导致程序退出的致命错误
  • error:错误消息
  • warn:警告消息
  • info:常规信息
  • debug:调试消息
  • trace:跟踪消息
  • silent:完全禁用日志输出

默认行为:

  • 生产环境(未设置 NODE_ENV 或其值不是 development):默认为 warn,仅输出警告和错误
  • 开发环境(NODE_ENV=development):默认为 info,输出 info 级别及以上的所有日志
  • 可通过 LOG_LEVEL 环境变量覆盖默认值
设置日志级别
# Set in .env
LOG_LEVEL=debug

# Or set in environment variables
export LOG_LEVEL=debug

❓ 常见问题与故障排除

Q:如何安装 MCP Prompt Manager?

A:共有 3 种安装方式:

  1. 通过市场安装(最简单):从 mcp.so 等 MCP 市场安装
  2. Docker 部署(推荐用于生产环境):使用 Docker Compose 轻松部署
  3. 本地安装(用于开发):克隆仓库并在本地构建

详细说明请参阅快速入门部分。

Q:通过市场安装后,如何找到安装路径?

A:使用以下命令查找已安装的服务:

macOS/Linux:

find ~ -name "index.js" -path "*/mcp-prompt-manager/dist/index.js" 2>/dev/null

Windows:

Get-ChildItem -Path $env:USERPROFILE -Filter "index.js" -Recurse -ErrorAction SilentlyContinue | Where-Object { $_.FullName -like "*mcp-prompt-manager\dist\index.js" }
Q:为什么配置中必须使用绝对路径?

A:MCP 客户端会将服务作为独立进程执行,因此需要完整路径来定位可执行文件。相对路径无法使用,因为工作目录可能不同。

Q:配置后,MCP 客户端中没有显示该服务。

A:请尝试以下步骤:

  1. 确认路径为绝对路径:检查 args 是否包含完整的绝对路径,而不是相对路径
  2. 检查是否已安装 Node.js:运行 node --version,确认已安装 Node.js 18+
  3. 确认文件存在:确保指定路径下存在 dist/index.js
  4. 检查 JSON 语法:确认配置文件是有效的 JSON(没有尾随逗号)
  5. 完全重启:完全关闭并重启 MCP 客户端(而不仅仅是重新加载)
  6. 检查日志:在配置中启用 LOG_LEVEL=debug,以查看详细的错误消息
Q:如何在本地运行服务?

A:开发时可以使用 pnpm dev(带检查器),生产模式下可以使用 pnpm start。更多详情请参阅 package.json 中的脚本。

Q:我遇到了 Git 克隆错误(退出代码 128)。

A:这通常表示权限问题或 URL 无效。

  1. SSH 与 HTTPS:如果使用 SSH([email protected]...),请确保 SSH 密钥已正确挂载或可用。如果使用 HTTPS,请确认是否需要令牌(如需要,请提供令牌)。
  2. 已知主机:如果在 Docker 中运行,请确保已运行 ssh-keyscan,或已挂载 known_hosts 文件。
  3. 仓库有效性:在你的机器上手动尝试 git clone <URL>,以验证 URL。
问题:Git 同步失败(一般情况)

解决方案:

  1. 检查 PROMPT_REPO_URL 是否正确
  2. 确认网络连接正常
  3. 检查 Git 凭据是否正确
  4. 查看日志中的详细错误消息
问题:未加载提示词

解决方案:

  1. 检查 MCP_GROUPS 设置是否正确
  2. 确认提示词文件位于正确的目录结构中(prompts/<group>/...)
  3. 检查 YAML 文件格式是否正确
  4. 查看日志中的错误消息
问题:无法使用局部模板

解决方案:

  1. 确认局部模板文件的扩展名为 .hbs
  2. 确认局部模板位于 partials/ 目录中
  3. 检查局部模板文件内容是否正确
  4. 确认在模板中使用 {{> partial-name }} 语法

📦 主要依赖项

  • @modelcontextprotocol/sdk:MCP SDK,提供 MCP 服务核心功能
  • handlebars:Handlebars 模板引擎,支持动态生成提示词
  • simple-git:Git 操作库,用于同步 Git 仓库
  • js-yaml:YAML 解析器,用于解析提示词定义文件
  • zod:以 TypeScript 为先的架构验证库,用于配置和类型验证
  • pino:高性能结构化日志记录库
  • dotenv:环境变量加载工具

📚 相关资源

📄 许可证

ISC

🤝 参与贡献

欢迎提交 Issue 和 Pull Request!


版本:1.0.0
最后更新:2024-11-30

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。