提示模板服务

一个基于Go的小型MCP服务器,从Markdown文件中读取带有YAML frontmatter的提示模板,并通过JSON-RPC 2.0工具在stdio上公开它们。

  • by kevincatino
  • Go
  • 本地部署
  • 更新于
在 GitHub 查看 kevincatino/prompts-mcp

使用说明

提示mcp

小型Go MCP服务器,使用YAML frontmatter从Markdown文件中读取提示模板,并使用JSON-RPC 2.0工具通过stdio公开它们。

概述

  • 提供两个MCP工具: list_prompts (列出Markdown提示文件)和 expand_prompt (返回提示符 {{input}} 如果没有占位符则附加输入)。
  • 接受绝对 --prompts-dir 指向包含以下内容的目录 .md 使用YAML frontmatter提示定义。
  • 提供示例提示和bash脚本,以在stdio上运行MCP服务器。

项目结构

  • cmd/prompts/ --CLI入口点;连接标志、日志记录、验证、服务器。
  • internal/ --核心包:
    • logging/ --zap生产记录器设置。
    • mcp/ --JSON-RPC处理、MCP工具、stdio服务器。
    • prompts/ --提示模型和Markdown frontmatter支持的存储库。
    • validate/ --路径验证助手和测试。
  • examples/prompts/ --示例提示Markdown文件。
  • scripts/ --用于列出/调用服务器工具的辅助脚本。
  • Makefile --构建/测试/审查目标。

安装和设置

  • 先决条件:达到1.23+。
  • 安装依赖项: go mod download
  • 构建: go build -o prompts ./cmd/prompts (或 make build)
  • 测试: go test ./... (或 make test)
  • 静态分析: make vet
  • 确保您有一个包含以下内容的提示目录 .md 包含YAML frontmatter的文件,并将其绝对路径传递给 --prompts-dir.

用法

  • 通过stdio启动服务器,提供一个绝对提示目录:
    • go run ./cmd/prompts --prompts-dir /absolute/path/to/prompts
  • JSON-RPC交互示例(每行一个):
    • {"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}
    • {"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"list_prompts","arguments":{}}}
    • {"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"expand_prompt","arguments":{"command":"research","input":"Example topic"}}}
  • 辅助脚本(从运行 scripts/;默认为 ../examples/prompts):
    • cd scripts && ./test-tools-list.sh
    • cd scripts && ./test-prompts.sh
    • 可选替代:第二个arg=提示dir,第三个arg=命令,第四个arg=输入(用于 test-prompts.sh).
    • 脚本集 GOMODCACHE, GOPATH,以及 GOCACHE 在repo下,当这些env变量未设置时。

建筑

  • 看 docs/architecture.md 用于从CLI标志解析到提示加载到MCP响应的数据流。

文档

  • docs/architecture.md
  • docs/api.md
  • docs/modules.md
  • docs/setup.md
  • docs/research/
  • docs/decisions.md

技术栈

  • 转到1.23
  • 基于stdio的JSON-RPC 2.0(模型上下文协议2024-11-05)
  • zap用于日志记录
  • 带YAML frontmatter的Markdown(用于frontmatter解析的gopk.in/YAML.v3)