prompt-optimizer MCP 集成指南:3 步部署并接入 Claude Desktop
【免费下载链接】prompt-optimizerAn AI prompt optimizer for writing better prompts and getting better AI results.项目地址: https://gitcode.com/GitHub_Trending/pro/prompt-optimizer
你正在 Claude Desktop 里写提示词,"你是一个助手"这种一句话设定效果不佳,想请专业工具优化——但手边没有,只能切到浏览器,打开 prompt-optimizer 网页版,复制、粘贴、再复制回来。prompt-optimizer 把核心优化能力封装成了 MCP 服务器(MCP 协议,Model Context Protocol,可以理解为给 AI 助手装上"手",让它能实际调用你部署的工具),你读完本文可以:用 Docker 5 分钟部署 MCP 服务器,再花 3 步把 Claude Desktop 接入 MCP 服务器,之后优化提示词就只是在对话里说一句话的事。
🎬 为什么需要 MCP 集成
传统做法是"人肉搬运":复制提示词到优化工具、等结果、再复制回对话窗口。每优化一轮就要切一次应用,打断写作节奏,长提示词来回粘贴还容易漏内容。MCP 协议的价值在于省掉了这个搬运步骤:Claude 在对话中直接发起工具调用,优化结果直接回到上下文里,你可以立刻基于结果继续对话。
🧩 它到底怎么工作的
MCP 协议在这里是中间人:Claude Desktop 发出优化请求,MCP 服务器校验参数后交给 Core 优化服务处理,结果原路返回对话。
三条设计要点(详见 MCP 服务器模块说明):
- 零侵入:MCP 层只调用现有 Core 模块 API,不改动核心代码。
- 无状态:使用内存存储,每次请求独立处理,服务重启不依赖本地文件。
- 标准协议:走标准 MCP HTTP Streamable 传输,任何兼容 MCP 的客户端都能连,不限于 Claude Desktop。
🐳 从零到跑通:Docker 部署 MCP 插件
最快路径(预计耗时 ≤ 5 分钟)。一条命令同时起 Web 界面和 MCP 服务器,MCP 端点通过/mcp路径暴露在同一个端口上:
# 基础部署:Web 界面在 8081,MCP 端点为 http://localhost:8081/mcp docker run -d -p 8081:80 \ -e VITE_OPENAI_API_KEY=你的OpenAI密钥 \ -e MCP_DEFAULT_MODEL_PROVIDER=openai \ --name prompt-optimizer \ linshen/prompt-optimizer国内拉取镜像慢时,换成阿里云镜像源:
docker run -d -p 8081:80 \ -e VITE_OPENAI_API_KEY=你的OpenAI密钥 \ --name prompt-optimizer \ registry.cn-guangzhou.aliyuncs.com/prompt-optimizer/prompt-optimizer灵活路径:需要多模型或自定义参数时用 Docker Compose,下面只列关键项,可选配置按需取消注释:
services: prompt-optimizer: image: linshen/prompt-optimizer:latest container_name: prompt-optimizer restart: unless-stopped ports: - "8081:80" # Web 界面 + MCP 共用端口 environment: - VITE_OPENAI_API_KEY=你的OpenAI密钥 # 必填:至少一个 API 密钥 # - VITE_DEEPSEEK_API_KEY=你的DeepSeek密钥 # 按需取消注释:追加第二个模型 # - MCP_DEFAULT_MODEL_PROVIDER=deepseek # 按需取消注释:指定首选模型提供商 # - MCP_LOG_LEVEL=info # 按需取消注释:生产日志级别 - MCP_DEFAULT_LANGUAGE=zh核心环境变量一览(完整说明见 MCP 服务器用户指南):
| 变量名 | 必填 | 默认值 | 说明 |
|---|---|---|---|
VITE_OPENAI_API_KEY | 是 | 无 | 至少配置一个 API 密钥,服务器靠它调用 LLM |
MCP_DEFAULT_MODEL_PROVIDER | 否 | openai | 配了多个密钥时指定首选提供商 |
MCP_LOG_LEVEL | 否 | debug | 日志级别:debug/info/warn/error |
MCP_DEFAULT_LANGUAGE | 否 | zh | 优化结果的默认输出语言 |
VITE_DEEPSEEK_API_KEY | 否 | 无 | 可选追加的模型密钥 |
VITE_CUSTOM_API_BASE_URL | 否 | 无 | 自定义 API 端点,如本地 Ollama |
🖥️ 接入 Claude Desktop 三步走
服务器跑起来后,装完之后的第一件事是把 Claude Desktop 接进来。
步骤 1:定位配置文件
先找到 Claude Desktop 的配置目录,三个平台位置如下:
| 操作系统 | 配置目录 |
|---|---|
| Windows | %APPDATA%\Claude\services |
| macOS | ~/Library/Application Support/Claude/services |
| Linux | ~/.config/Claude/services |
步骤 2:写入 JSON 配置
在配置目录中创建或编辑services.json,最小可用片段如下:
{ "services": [ { "name": "Prompt Optimizer", // 工具组显示名称,随意起 "url": "http://localhost:8081/mcp" // MCP 服务器地址,Docker 部署为 8081 } ] }注意:如果你是开发者本地部署(pnpm mcp:dev,端口 3000),把 URL 改成http://localhost:3000/mcp。
步骤 3:重启并验证
改完配置,完全退出并重启 Claude Desktop。建议先用浏览器打开http://localhost:8081/healthz确认服务器存活,然后在 Claude 对话里输入/tools,应该能看到 3 个工具:
optimize-user-promptoptimize-system-promptiterate-prompt
看到这三个名字,接入就完成了。
🧪 拿真实任务试一把
三个工具对应三类任务,你只需在对话里描述需求,Claude 会自动选工具填参数。
场景 A:一段日常对话提示词——什么时候用到:随手提问太含糊,想让回答更靠谱。
optimize-user-prompt({ prompt: "帮我写篇文章", // 必填:待优化的原始提示词 // template: 可选,优化模板;省略时自动用内置默认模板 });| 优化前 | 优化后 |
|---|---|
| "帮我写篇文章" | "请撰写一篇 1500 字左右的 AI 医疗应用技术文章,包含真实案例,分点组织结构,语言专业但通俗易懂" |
场景 B:给 AI 定义一个专业角色——什么时候用到:要搭一个自定义助手或专家角色,需要规范的系统提示词。
optimize-system-prompt({ prompt: "你是一个医疗助手", // 必填:当前简陋的角色设定 // template: 可选,不同模板的优化侧重不同,见 /tools 里的参数说明 });| 优化前 | 优化后 |
|---|---|
| "你是一个医疗助手" | "你是一位严谨的医疗信息助手:先澄清症状与病史,再给出参考建议;明确标注不能替代医生诊断,涉及急症时立即建议就医,并遵守隐私与安全边界" |
场景 C:已有提示词想微调——什么时候用到:提示词已经能用,但输出有具体毛病,只改毛病、不动其余。
iterate-prompt({ prompt: "现有提示词全文", // 必填:正在使用的完整提示词 requirements: "输出格式不稳定,要求固定为 JSON", // 必填:具体的改进需求 // template: 可选,迭代策略模板 });| 优化前 | 优化后 |
|---|---|
| "提取以下文本的实体和关系" | 保留了原有抽取逻辑,追加了"仅输出 JSON、字段为 entities/relations、无匹配时返回空数组"等格式约束 |
优化结果大致长这样(下图为项目中一个优化后的提示词展示):
🔧 配置调优:多模型、Ollama 与日志
多模型切换
docker run -d -p 8081:80 \ -e VITE_OPENAI_API_KEY=你的OpenAI密钥 \ -e VITE_DEEPSEEK_API_KEY=你的DeepSeek密钥 \ -e MCP_DEFAULT_MODEL_PROVIDER=deepseek \ --name prompt-optimizer \ linshen/prompt-optimizer配了多个密钥时,用MCP_DEFAULT_MODEL_PROVIDER指定首选,提供商名称必须小写且与密钥类型一致(openai不是OpenAI)。匹配不到时会回退到第一个可用模型。
自定义 API 端点(以 Ollama 为例)
docker run -d -p 8081:80 \ -e VITE_CUSTOM_API_KEY=任意占位值 \ -e VITE_CUSTOM_API_BASE_URL=http://host.docker.internal:11434/v1 \ -e VITE_CUSTOM_API_MODEL=qwen2.5:7b \ -e MCP_DEFAULT_MODEL_PROVIDER=custom \ --name prompt-optimizer \ linshen/prompt-optimizerOllama 不校验密钥,VITE_CUSTOM_API_KEY填任意值即可;容器里访问宿主机服务要用host.docker.internal代替localhost。完整的变量格式参考 env.local.example 中VITE_CUSTOM_API_*一节的注释。
日志级别
docker run -d -p 8081:80 \ -e VITE_OPENAI_API_KEY=你的OpenAI密钥 \ -e MCP_LOG_LEVEL=info \ --name prompt-optimizer \ linshen/prompt-optimizerMCP_LOG_LEVEL支持 debug/info/warn/error 四档,级别越高打印越少。生产环境建议开 info 级别,排查问题再临时切到 debug。
🐞 踩坑速查:MCP 工具调用失败排查
症状:启动报Error: listen EADDRINUSE: address already in use原因:端口被占用(本地开发模式默认 3000,容器映射端口冲突同理)。 修复:换个端口再起,例如MCP_HTTP_PORT=3001 pnpm mcp:dev,或docker run时改映射端口。
症状:启动即报No enabled models found原因:没有任何有效 API 密钥被传入容器,或变量名拼错。 修复:核对docker run的-e参数,确认至少一个VITE_*_API_KEY存在且拼写正确。
症状:工具调用返回 "MCP default model is not configured"原因:MCP_DEFAULT_MODEL_PROVIDER与你实际配置的密钥类型对不上。 修复:把它改成与已配置密钥一致的提供商名,小写拼写。
症状:Claude Desktop 一直连不上原因:URL 端口写错(8081 与 3000 混用)、JSON 格式不合法,或防火墙拦截。 修复:先浏览器访问http://localhost:8081/healthz确认服务器存活,再检查services.json能否被正常解析。
如果以上都没解决,带着MCP_LOG_LEVEL=debug下的日志去项目 issue 区搜索或提问,日志里会标明失败发生在协议层还是模型调用层。
🗺️ 推荐工作流
一套"从草稿到定型"的 5 步循环:
- 初稿:把想法用最直白的话写出来,别纠结措辞。
- 优化:按提示词类型选对工具,让 Claude 在对话里跑一轮优化。
- 测试:拿优化后的提示词真实跑几个用例,看输出是否达标。
- 迭代:把具体毛病写成 requirements,用
iterate-prompt定向修补,不动其余部分。 - 固化:效果满意后存进 prompt-optimizer 的模板库或 Claude 的记忆,下次直接复用。
选择逻辑一目了然:
模板参数不用背:/tools里每个工具的template字段描述里列了全部可选值,不确定就省略它,用内置默认模板。
📌 现在就能做三件事
读完本文,你已经具备这些能力:
- ✅ 用一条 Docker 命令把 prompt-optimizer 的 MCP 服务器部署起来,Web 界面和
/mcp端点同时可用 - ✅ 完成 Claude Desktop 接入 MCP 服务器的三步配置,并确认 3 个工具注册成功
- ✅ 区分三个工具各自的适用场景,知道什么时候该用
iterate-prompt而不是整段重写 - ✅ 遇到"工具调用失败排查"类问题时,能按症状定位到密钥、端口、提供商名三个最常见原因
行动清单:
- 部署:复制本文的
docker run命令,填入你的密钥,跑起服务器。 - 接入:编辑
services.json,重启 Claude Desktop,用/tools确认 3 个工具在列。 - 试用:挑一段你最近写过、效果不理想的提示词,在对话里让 Claude 优化一遍,感受"不切应用"的差别。
【免费下载链接】prompt-optimizerAn AI prompt optimizer for writing better prompts and getting better AI results.项目地址: https://gitcode.com/GitHub_Trending/pro/prompt-optimizer
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考