本次提交主要集成了 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`。
* **其他:**
* 提供快速开始指南、环境变量配置和问题排除等文档,更新了相关文档链接和获取帮助指引,并完成了基础测试用例和开发/设计文档。
本次更新旨在提升用户在提示词优化方面的能力,并简化部署流程,提高系统的整体可用性和可维护性。
109 lines
3.5 KiB
Markdown
109 lines
3.5 KiB
Markdown
# 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都是真实存在的内置模板,用户可以放心使用。
|