使用说明
提示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.shcd scripts && ./test-prompts.sh- 可选替代:第二个arg=提示dir,第三个arg=命令,第四个arg=输入(用于
test-prompts.sh). - 脚本集
GOMODCACHE,GOPATH,以及GOCACHE在repo下,当这些env变量未设置时。
建筑
- 看
docs/architecture.md用于从CLI标志解析到提示加载到MCP响应的数据流。
文档
docs/architecture.mddocs/api.mddocs/modules.mddocs/setup.mddocs/research/docs/decisions.md
技术栈
- 转到1.23
- 基于stdio的JSON-RPC 2.0(模型上下文协议2024-11-05)
- zap用于日志记录
- 带YAML frontmatter的Markdown(用于frontmatter解析的gopk.in/YAML.v3)