Files
prompt-optimizer/docs/archives/mcp-template-parameter-improvement.md
linshen 1a55a5e719 feat(server): 集成 MCP 服务器
本次提交主要集成了 MCP 服务器,为系统增加了用户提示词优化工具,并通过优化部署流程,提升了整体易用性。

具体变更内容包括:

* **功能增强:**
    * 集成 MCP 服务器,提供用户和系统提示词优化工具,支持 stdio 和 HTTP 两种传输方式,并集成了 Claude Desktop。
    * 实现基于会话的 HTTP 传输,允许多客户端连接,并为每个会话创建独立的 MCP 服务器实例,确保会话间的隔离性。

* **部署优化:**
    * 将 MCP 服务器端口变更为与 Web 界面共享 80 端口,通过路径区分,简化了 Docker 部署配置,降低了部署复杂度。
    * 优化 Docker 部署流程,使用 Supervisor 进行进程管理,并改进模板参数(使用枚举类型 + 默认值),同时提供了包含 MCP 服务器使用说明的 Docker 部署文档。

* **代码优化与重构:**
    * 优化模型选择逻辑,提高模型选择的准确性。
    * 优化日志记录功能,支持更灵活的日志级别设置,并添加了详细的错误提示和调试信息,方便问题排查。
    * 重构代码,分离构建和启动入口,优化环境变量加载和模型初始化逻辑,提高了代码的可维护性和可扩展性,并解决了构建副作用问题。

* **文档更新:**
    * 更新工具描述和使用说明,提供了用户和系统提示词工具的具体示例,并补充了迭代提示词工具的改进需求描述和使用场景。
    * 更新 Docker 部署方案,包含了 `docker-compose.yml`、`Dockerfile` 和 `env.local.example` 配置示例,并更新了 README 文档以明确连接方式。
    * 更新 `nginx.conf`,使用环境变量 `NGINX_PORT`,修改 `start-services.sh`,增加 nginx 配置处理,更新 `supervisord.conf`,调整 MCP 服务器启动方式,优化 `Dockerfile`,安装额外依赖并调整工作目录,调整环境变量加载机制,使用 `preload-env.cjs`。

* **其他:**
    * 提供快速开始指南、环境变量配置和问题排除等文档,更新了相关文档链接和获取帮助指引,并完成了基础测试用例和开发/设计文档。

本次更新旨在提升用户在提示词优化方面的能力,并简化部署流程,提高系统的整体可用性和可维护性。
2025-07-27 00:31:23 +08:00

109 lines
3.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# MCP服务器模板参数改进
## 问题描述
MCP服务器的工具参数中的`template`参数原本是可选的字符串类型,用户不知道可以填写什么值,也没有默认值。这导致用户体验不佳,因为:
1. 用户不知道有哪些可用的模板选项
2. 没有默认值,用户必须猜测或查看文档
3. 容易输入错误的模板ID导致错误
## 解决方案
将`template`参数改为枚举类型,并提供默认值:
### 1. 新增模板选项获取函数
在`packages/mcp-server/src/config/templates.ts`中添加了`getTemplateOptions`函数:
```typescript
export async function getTemplateOptions(
templateManager: TemplateManager,
templateType: 'optimize' | 'userOptimize' | 'iterate'
): Promise<Array<{value: string, label: string, description?: string}>>
```
该函数:
- 根据模板类型获取所有可用模板
- 返回格式化的选项数组,包含value、label和description
- 确保默认模板始终在选项列表中
- 提供错误处理和回退机制
### 2. 修改工具定义
在`packages/mcp-server/src/index.ts`中修改了三个工具的`inputSchema`:
#### optimize-user-prompt
```json
{
"template": {
"type": "string",
"description": "选择优化模板。不同模板有不同的优化策略和风格。",
"enum": ["user-prompt-professional", "user-prompt-basic", "user-prompt-planning"],
"default": "user-prompt-basic"
}
}
```
#### optimize-system-prompt
```json
{
"template": {
"type": "string",
"description": "选择优化模板。不同模板有不同的优化策略和风格。",
"enum": ["general-optimize", "output-format-optimize", "analytical-optimize"],
"default": "general-optimize"
}
}
```
#### iterate-prompt
```json
{
"template": {
"type": "string",
"description": "选择迭代优化模板。不同模板有不同的迭代策略。",
"enum": ["iterate"],
"default": "iterate"
}
}
```
### 3. 添加CoreServicesManager方法
在`packages/mcp-server/src/adapters/core-services.ts`中添加了`getTemplateManager()`方法,用于获取模板管理器实例。
## 改进效果
1. **用户友好**:用户现在可以看到所有可用的模板选项,不需要猜测
2. **有默认值**:每个工具都有合理的默认模板,用户可以直接使用
3. **类型安全**:枚举类型防止用户输入无效的模板ID
4. **描述清晰**:每个参数都有详细的描述说明其用途
5. **动态获取**:模板选项是动态获取的,支持未来添加新模板
## 测试验证
通过测试验证了:
- MCP服务器能够正常启动
- 所有工具都正确注册
- 模板参数包含正确的枚举值和默认值
- 不同类型的模板被正确分类和映射
## 技术细节
- 使用了模板类型映射来处理Core模块和MCP服务器之间的类型差异
- 实现了错误处理和回退机制,确保即使模板加载失败也能提供基本功能
- 过滤掉了MCP服务器特有的`-default`后缀模板,只显示真正的内置模板
- 修改了默认模板ID映射,使用内置模板而不是MCP服务器的简化模板
- 保持了向后兼容性,现有的模板ID仍然有效
## 最终结果
修复后的模板选项:
- **用户优化**: `user-prompt-professional`, `user-prompt-basic`, `user-prompt-planning` (默认: `user-prompt-basic`)
- **系统优化**: `general-optimize`, `output-format-optimize`, `analytical-optimize` (默认: `general-optimize`)
- **迭代优化**: `iterate` (默认: `iterate`)
所有模板ID都是真实存在的内置模板,用户可以放心使用。