Files
prompt-optimizer/docs/deployment/docker-mcp-integration.md
T
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

2.8 KiB
Raw Blame History

Docker中的MCP服务器集成

概述

现在Docker容器同时运行两个服务:

  1. Web应用 (Nginx) - 端口80
  2. MCP服务器 (Node.js) - 端口3000

使用Supervisor管理多个进程,确保服务的稳定运行。

架构图

Docker容器
├── Nginx (端口80)
│   ├── Web应用 (/)
│   └── MCP代理 (/mcp -> localhost:3000)
├── MCP服务器 (端口3000)
└── Supervisor (进程管理)

端口映射

  • 8081:80 - Web应用访问端口
  • 3000:3000 - MCP服务器直接访问端口(可选)

环境变量配置

Web应用配置

VITE_OPENAI_API_KEY=sk-your-key
VITE_GEMINI_API_KEY=your-key
# ... 其他Web应用API配置

MCP服务器配置

# 基础配置
MCP_HTTP_PORT=3000
MCP_LOG_LEVEL=info
MCP_ENABLE_CORS=true
MCP_ALLOWED_ORIGINS=*

# 模型配置(必需)
MCP_DEFAULT_MODEL_PROVIDER=openai
MCP_DEFAULT_MODEL_NAME=gpt-4
MCP_DEFAULT_MODEL_API_KEY=sk-your-key
MCP_DEFAULT_MODEL_BASE_URL=

使用方法

1. 配置环境变量

cp .env.docker.example .env
# 编辑.env文件,填入实际的API密钥

2. 启动服务

docker-compose up -d

3. 访问服务

4. 健康检查

# 检查容器状态
docker-compose ps

# 查看日志
docker-compose logs -f

# 查看MCP服务器日志
docker-compose exec prompt-optimizer supervisorctl tail -f mcp-server

MCP服务器API

获取工具列表

curl -X POST http://localhost:8081/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}'

调用工具

curl -X POST http://localhost:8081/mcp \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "optimize-user-prompt",
      "arguments": {
        "prompt": "写一个故事",
        "template": "user-prompt-basic"
      }
    }
  }'

故障排除

查看服务状态

docker-compose exec prompt-optimizer supervisorctl status

重启MCP服务器

docker-compose exec prompt-optimizer supervisorctl restart mcp-server

查看详细日志

# Nginx日志
docker-compose exec prompt-optimizer tail -f /var/log/nginx/error.log

# MCP服务器日志
docker-compose exec prompt-optimizer tail -f /var/log/supervisor/mcp-server.out.log

开发模式

如果需要在开发模式下运行,可以修改docker-compose.yml:

services:
  prompt-optimizer:
    build:
      context: .
      dockerfile: Dockerfile
    # ... 其他配置

然后重新构建:

docker-compose up --build -d