内容
# prompt-mcp
本地的MCP服务器,为Claude提供8种Claude原生提示工程工具——脚手架、改进、批评、评估、链式、生成示例、应用技术、查找概念——支持55个文件知识库,来源于[dair-ai/Prompt-Engineering-Guide](https://github.com/dair-ai/Prompt-Engineering-Guide)和[Anthropic的提示工程文档](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/)。
**默认情况下无需API密钥**。工具使用**MCP采样**调用同一个Claude会话(Claude Code或Desktop)。可选的Azure OpenAI备用方案,适用于不支持采样的环境。
```text
┌──────────────────────┐ ┌─────────────────────┐
│ Claude Code │ stdio │ │ sampling/createMessage
│ Claude Desktop │◀────────│ prompt-mcp │◀──────────┐
└─────┬────────────────┘ │ (Node, local) │ │
│ │ │ │
│ 用户输入“为...构建脚手架” │ 8种工具 │ │
│ 提示... │ 55个文件知识库 │ │
▼ └─────────────────────┘ │
工具调用 ─────────────────────────────────────────────────────────┘
(工具要求主机Claude执行LLM工作 — 零额外成本)
```
---
## 为什么存在
大多数提示工程工具是通用的。Claude具有特定的杠杆——XML标签、`<thinking>`块、预填充、文档优先排序、扩展思考——而通用工具会削弱这些杠杆。该服务器中的8种工具针对这些杠杆进行了调优,知识库(KB)为每种技术都注释了`claude_notes`。
工具调用Claude(或任何模型 — 见[providers](#provider-setup))。MCP层位于编辑器和提示之间,以便您可以脚手架 → 批评 → 改进 → 评估而无需离开聊天。
---
## 何时使用(以及何时不使用)
> 构建该工具的人的诚实看法:**大多数提示应该保持自由范围**。只有当您已经输入了相同的提示3次以上,并且每次都得到了略微不同的输出时,才使用prompt-mcp。
**默认自由范围**。只需输入您想对Claude说的内容。
- 一次性任务
- 探索(“我还不确定我想要什么”)
- 快速问答,总结,重写
- 创造性写作,惊喜很重要
- 任何Claude的澄清问题都有用
**在以下情况下使用prompt-mcp:**
- 您将运行任务 **3次以上**
- 其他人需要运行它并获得 *相同形状* 的输出
- 输出被另一个工具解析或使用(评估运行器,文档生成器,下游提示)
- **失败有实际成本** (投资者文件,客户电子邮件,法律审查,财务检查)
- 您想 **安排或自动化** 它
- 您已经感受到尝试之间的提示漂移
### 具体例子
| 任务 | 是否模板化? |
|---|---|
| “以较少的公司风格重写此段落” | 否 — 自由范围,一次性 |
| “系列B合作伙伴可能提出的三个最大异议是什么?” | 否 — 探索 |
| 每周投资者更新 | 是 — 定期 + 多利益相关者 |
| 发现呼叫准备 | 是 — 定期,团队使用 |
| 每月Fireflies呼叫审查 | 是 — 多步骤 + 可解析合同 |
| 客户介绍一页纸 | 是 — 您将发送N个 |
| 财务模型压力测试 | 是 — 高风险 + 证据规则要求 |
| 数据室DD审计 | 是 — 每个投资者重复 + 一致性很重要 |
| “为系列B推介叙事集思广益” | 否 — 创造性,探索性 |
| 候选人拒绝电子邮件 | 是,如果您每周拒绝> 2个,否则否 |
> 工具的最大风险是成为工程剧院。为一次完成的任务构建完美的提示是拖延。价值体现在第二次、第五次、第十次运行中。
>
> **不要过早模板化。不要自由范围化您每周都做的事情。**
---
## 8种工具
| 斜杠调用 | 工具名称 | 目的 | 调用LLM? |
|---|---|---|---|
| “为...搭建一个提示” | `scaffold_prompt` | 从一行任务中生成一个结构化的Claude原生提示。 | 是 |
| “改进这个提示...” | `improve_prompt` | 批评然后重写现有的提示。 | 是 |
| “批评这个提示...” | `critique_prompt` | 静态lint + LLM检查清单审查。 | 是 |
| “应用`cot` / `xml-tags` / ...” | `apply_technique` | 10种确定性变换之一。 | 否 |
| “为...生成示例” | `generate_examples` | n个多示例(带有边缘和负面示例)。 | 是 |
| “为...构建评估” | `build_eval` | 6–20个案例评估套件 + 评分标准 + YAML。 | 是 |
| “为...设计链” | `design_chain` | 将一个艰难的任务分解为2–10个提示步骤 + 流程图。 | 是 |
| “解释`extended-thinking`” | `explain_concept` | 知识库参考卡查找。 | 否 |
LLM工具每次调用大约需要5–40秒(`gpt-5.5`推理模型)。输入磁盘缓存,因此重新运行是即时的。参见[EXAMPLES.md](./EXAMPLES.md)以获取每种工具的示例。
---
## 快速开始
### 1. 克隆并安装
```bash
git clone https://github.com/rtalari-ruby/prompt-mcp.git
cd prompt-mcp
npm install
npm run build
```
这就是默认流程的全部内容。 **无需`.env`设置** — 工具将使用MCP采样通过您的正在运行的Claude会话。跳到步骤2。
### 2. 连接到您的Claude客户端 — 选择一个
### A. Claude Code(CLI / VS Code)
一条命令:
```bash
claude mcp add --scope user prompt node $(pwd)/dist/server.js
```
验证:
```bash
claude mcp list
# → prompt: node /path/to/prompt-mcp/dist/server.js - ✓ 已连接
```
现在,所有项目都可以使用这些工具。重启任何打开的Claude Code会话以获取它们。
### B. Claude Desktop(macOS聊天应用)
编辑`~/Library/Application Support/Claude/claude_desktop_config.json`(如果它不存在,则创建它):
```json
{
"mcpServers": {
"prompt": {
"command": "node",
"args": ["<prompt-mcp绝对路径>/dist/server.js"]
}
}
}
```
重启Claude Desktop。这些工具将出现在斜杠命令调色板中。
### C. claude.ai网页(浏览器聊天)
需要HTTP传输和OAuth包装器 — 参见[REMOTE.md](./REMOTE.md)。对于大多数用户,Claude Desktop是更容易的路径和相同的体验。
---
## 烟雾测试
连接后,在一个新的聊天中:
> “从提示知识库中解释`chain-of-thought`。”
您应该获得一张参考卡,包含TL;DR、何时使用、何时不使用、Claude特定注释、模式和示例。这调用了`explain_concept` — 知识库查找,无LLM,立即。如果您看到这个,连接是好的。
然后尝试:
> “使用`scaffold_prompt`构建一个提示,提取支持调用记录中的前3个客户痛点。”
第一次运行:~25秒(`gpt-5.5`推理)。缓存后。
---
## 真实示例:从材料中构建一页纸
任何公司简介、客户介绍文档或投资者资料的可重复工作流程:
1. 在Claude Code或Desktop中,询问:
> “使用`scaffold_prompt`构建一个提示,获取附件材料(幻灯片,网站,FAQ),并生成一个包含钩子,问题,解决方案,ICP,证明点,询问和联系方式的一页Markdown简介。 防伪:仅声明材料中存在的内容。”
2. 工具返回一个完整的提示,包含`{{materials}}`,`{{audience}}`占位符,XML结构,输出合同和逃生口。
3. 将提示保存为模板(我们为此保留[templates/](./templates/))。
4. 在新的聊天中:拖入材料,粘贴带有变量填充的模板,发送。
一个有效版本 — `templates/relvino-customer-intro-1pager.md` — 随存储库一起作为具体示例提供。
---
## 知识库
55个Markdown文件,按类别组织:
```
kb/
├── techniques/ (25个文件:cot,few-shot,react,tot,rag,prompt-chaining,...)
├── claude-specific/ (10个文件:xml-tags,prefilling,extended-thinking,...)
├── failure-modes/ (6个文件:vague-instructions,missing-output-contract,...)
├── checklists/ (2个文件:prompt-review,eval-design)
├── applications/ (9个文件:coding,function-calling,generating,...)
└── risks/ (3个文件:adversarial,biases,factuality)
```
每个文件都有前置信息(`id`,`title`,`category`,`tags`,`sources`,`when_to_use`,`when_not_to_use`,`claude_notes`,`related`)和Markdown正文。
重新拉取来源:
```bash
npm run scrape # dair-ai + Anthropic
npx tsx scripts/enrich-kb.ts # LLM填充任何TODO前置信息(~$0.50一次)
```
添加您自己的技术?将`kb/<category>/your-technique.md`放入其中,并带有前置信息。加载器在下一次服务器重启时获取它。
---
## LLM工具如何获取模型
两种后端,在调用时自动选择:
### 默认:MCP采样(无需设置,无密钥)
当工具在Claude Code或Claude Desktop内运行时,它通过MCP传输调用`sampling/createMessage`。主机Claude使用会话正在运行的模型执行LLM工作。工具获取响应并渲染它。
- **成本:** 计入您现有的Claude订阅。 无单独的API支出。
- **密钥:** 无需密钥。
- **模型:** 会话中运行的模型(Opus / Sonnet / Haiku)。
- **UX注意:** 主机可能会显示每个会话的一次性批准(“提示服务器想要询问Claude执行X — 允许?”)。 批准一次;它会记住。
### 备用:Azure OpenAI(或任何聊天完成API)
对于没有采样支持的环境(直接命中HTTP服务器,像`enrich-kb.ts`这样的脚本,原始MCP客户端),服务器会退回到`.env`中配置的内容:
```bash
LLM_PROVIDER=azure-openai
AZURE_OPENAI_ENDPOINT=https://YOUR-RESOURCE.cognitiveservices.azure.com/
AZURE_OPENAI_API_KEY=...
AZURE_OPENAI_DEPLOYMENT=gpt-5.5-3
AZURE_OPENAI_API_VERSION=2024-12-01-preview
```
Azure后端直接通过`fetch`使用聊天完成REST API — 无需SDK,无需提供商抽象。
### 成本(仅适用于备用路径)
- 知识库工具(`explain_concept`,`apply_technique`):免费,立即无论哪种方式。
- 单次调用LLM工具:`gpt-5.5`每次调用约0.005-0.05美元。
- 重型LLM工具:最高约0.10美元。
- 所有磁盘缓存输入 — 重新运行免费。
当使用采样时,您的工具调用显示在您的Claude使用情况中。 无新账单。
### 使用Anthropic作为备用
替换`src/llm/client.ts`(~150行)。 保留相同的`chat(messages, opts)`签名。 在下面使用`@anthropic-ai/sdk`的`messages.create()`。 所有下游内容都是提供者无关的。
---
## 故障排除
| 问题 | 原因/修复 |
|---|---|
| `/mcp`未显示`prompt` | 服务器启动失败。手动运行`node dist/server.js < /dev/null` — 它应该将`prompt-mcp ready (8 tools, stdio)`打印到stderr。 错误将告诉您缺少什么。 |
| “没有采样功能的主机和环境中没有AZURE_OPENAI_*” | 您的MCP客户端不支持采样,并且您没有设置Azure备用。 升级Claude Code/Desktop,或在`.env`中添加`AZURE_OPENAI_*`。 |
| 每次采样许可提示 | 一些主机每次会话都会询问,一些主机每次都会询问。 在Claude Code设置中查找“信任此MCP服务器的采样”切换开关。 |
| 第一次LLM调用很慢 | 预期。 主机的推理模型可能需要5–40秒来完成重型工具。 随后的相同调用会命中磁盘缓存并立即返回。 |
| 工具返回JSON解析错误 | 罕见。 模型偶尔会在散文中包装JSON。 只需重新运行 — 缓存会错过下一个措辞。 |
| 想要清除缓存 | `rm -rf .cache/llm`。 下一次运行将直接命中LLM。 |
| 知识库更改但服务器未看到 | 重启Claude Code/Desktop。 知识库在启动时加载一次。 |
---
## 开发
```bash
npm run dev # tsx,无构建 — 最快迭代stdio
npm run dev:http # tsx用于HTTP传输
npm run build # tsc → dist/
npm test # 构建 + 烟雾测试
# 个别烟雾测试
npx tsx scripts/smoke/run-all.ts # MCP服务器列出8种工具
npx tsx scripts/smoke/kb.ts # 知识库索引有效
npx tsx scripts/smoke/technique.ts # 所有10种确定性变换
npx tsx scripts/smoke/llm-tools.ts # 所有6种LLM工具(第一次运行后使用缓存)
```
项目布局:
```
prompt-mcp/
├── src/
│ ├── server.ts # stdio入口
│ ├── http-server.ts # HTTP入口(claude.ai / 远程)
│ ├── build-server.ts # 共享工具注册
│ ├── tools/ # 8种工具实现
│ ├── kb/ # 加载器 + 内存索引
│ └── llm/ # 提供者客户端 + .env加载器
├── kb/ # 55个Markdown文件(知识库)
├── templates/ # 可立即使用的提示模板
├── scripts/
│ ├── scrape-*.ts # 一次性知识库爬取器
│ ├── enrich-kb.ts # LLM填充TODO前置信息
│ └── smoke/ # 阶段烟雾测试
├── README.md # 本文
├── EXAMPLES.md # 每个工具的示例
├── REMOTE.md # HTTP传输 / ngrok / claude.ai网页
└── .mcp.json # Claude Code代码片段模板
```
---
## 安全
- **从不提交`.env`。** 它在`.gitignore`中。 Azure密钥和承载令牌存放在那里。
- HTTP服务器拒绝在没有`PROMPT_MCP_TOKEN`的情况下启动(无匿名公共访问)。 使用`openssl rand -hex 24`生成一个。
- 如果您分叉此项目并运行公共实例,请定期轮换令牌并监视您的LLM配额 — 令牌是互联网和API支出之间的唯一东西。
- 所有LLM响应都缓存在磁盘上(`.cache/llm/`)。 这些缓存可能包含您审查过的提示。 它们被gitignore,但请注意。
---
## 现成模板
[`templates/`](./templates)下的即用提示 — 复制,填充`{{vars}}`,发送。 每个都是由`scaffold_prompt`(或`scaffold` → `improve`)生成的,并使用[EXAMPLES.md](./EXAMPLES.md)中的模式强化。
- 📞 **[`fireflies-call-analysis.md`](./templates/fireflies-call-analysis.md)** — 审计Fireflies会议记录中的每个记录。 将每个记录分类为销售/客户/内部/其他,评估销售+客户记录在5个质量维度上的得分,并提供每个记录的行动项,然后汇总为团队级记分卡,列出顶级系统性差距和5项优先的团队范围内的行动。
- 🤝 **[`relvino-customer-intro-1pager.md`](./templates/relvino-customer-intro-1pager.md)** — 一页客户介绍简介,投资者将转发给其网络中的公司。 防伪:仅声明实际材料中的内容。 逃生口如果材料不充分。
- 💰 **[`financial-model-pressure-test.md`](./templates/financial-model-pressure-test.md)** — 对财务模型和对它的分析师书面反馈进行无偏见的CFO级压力测试。 证据引用的通过/有条件通过/失败判决,重要性排名的发现,最大5个子弹/节,三个置信级别,输入不可解析时的逃生口。
- 🗄️ **[`relvino-data-room-audit.md`](./templates/relvino-data-room-audit.md)** — 对数据室文件夹进行全面尽职调查审计。 10个类别的G/Y/R记分卡,文件引用的差距和风险,尽职阻碍者列表,快速修复列表(≤1周),以及预先提出的“管理层开放问题”。
添加您自己的 — 它们只是markdown。 模式是:`<system>`角色 + `<documents>`块 + `<task>` + `<constraints>` + `<output_contract>` + `<escape_hatch>`。
### 如何使用一个
1. 打开Claude Code或Claude Desktop。
2. 拖入任何源材料(PDF,文档,电子表格)。
3. 打开模板文件,复制三反勾之间的部分 labeled “The prompt”。
4. 粘贴到Claude中。 替换每个`{{var}}`为您的输入(或写入“请参阅附件文件”)。
5. 发送。
对于迭代模板(加强语气,添加章节,修改评估标准),请输入:
> “使用`critique_prompt`评估此提示,然后`improve_prompt`。专注于`<您的关注点>`。”
您将获得更改的内容以及更改的原因。
---
## 致谢
- 知识库技术:[dair-ai/Prompt-Engineering-Guide](https://github.com/dair-ai/Prompt-Engineering-Guide)(MIT)。 重新组织为Claude感知的参考卡。
- Claude特定模式:[Anthropic的提示工程文档](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/)。 在本存储库的知识库中总结和注释为Claude注释。
- MCP SDK:[@modelcontextprotocol/sdk](https://github.com/modelcontextprotocol/typescript-sdk)。
---
## 许可
MIT。 参见 [LICENSE](./LICENSE)。