# EXA MCP Server 项目需求文档 (PRD)
## 1. 项目概述
### 1.1 背景
本项目是一个基于 Docker 的 MCP (Model Context Protocol) 服务器,需要在 Mac Mini 2 ARM 架构环境中运行,系统分配 5GB 内存给 Docker 服务。
### 1.2 目标
- 优化现有 docker-compose.yml 配置,适配 ARM 架构
- 在有限的 5GB 内存资源下实现最优性能
- 确保服务稳定运行,避免端口冲突
- 添加企业级配置(健康检查、日志管理等)
## 2. 环境分析
### 2.1 硬件环境
- **设备**: Mac Mini 2
- **架构**: ARM64
- **内存分配**: 5GB 给 Docker
- **操作系统**: macOS
### 2.2 当前端口占用情况
- **已占用端口**: 8080 (nginx), 6379 (redis-server)
- **可用端口**: 3000, 5000, 5432, 27017, 3111 (当前使用)
### 2.3 现有配置分析
当前 docker-compose.yml 使用:
- 版本: 3.8
- 服务: mcp-server
- 端口: 3111:3111
- 内存限制: 2GB (占总内存 40%)
- 重启策略: always
- 包含 API 密钥配置
## 3. 优化需求
### 3.1 ARM 架构适配
- 使用 ARM64 兼容的 Docker 镜像
- 确保镜像在 Apple Silicon 上高效运行
- 考虑多架构支持(ARM64/x86_64)
### 3.2 内存优化
- 在 5GB 总内存限制下合理分配
- 当前 2GB 限制较为合理,可考虑动态调整
- 添加内存监控和告警
### 3.3 企业级功能
- **健康检查**: 自动检测服务状态
- **日志管理**: 结构化日志输出和持久化
- **资源监控**: CPU、内存、网络使用情况
- **网络优化**: 配置合适的网络模式
- **安全加固**: 移除硬编码密钥,使用环境变量
## 4. 技术规格
### 4.1 Docker 配置要求
- **版本**: 3.8 或更高
- **架构**: ARM64 优先
- **内存**: 1.5-2.5GB 动态范围
- **CPU**: 合理的核心数限制
- **存储**: 适当的卷挂载和持久化
### 4.2 服务配置
- **端口**: 保持 3111 或选择其他可用端口
- **环境变量**: 通过 .env 文件管理
- **重启策略**: 优化重启条件和间隔
- **依赖管理**: 明确服务启动顺序
### 4.3 监控和日志
- **健康检查端点**: /health 或自定义
- **日志级别**: 可配置的日志输出
- **日志格式**: JSON 格式便于分析
- **指标收集**: Prometheus 或自定义指标
## 5. 交付物
### 5.1 文档
- [x] PRD 文档 (本文件)
- [ ] 任务拆解文档 (task.md)
- [ ] 详细任务清单 (todolist.md)
- [ ] 工作总结报告
- [ ] 测试验证文档
### 5.2 配置文件
- [ ] 优化后的 docker-compose.yml
- [ ] .env 环境变量配置
- [ ] Dockerfile(如果需要)
### 5.3 脚本
- [ ] 服务启动/停止脚本
- [ ] 健康检查脚本
- [ ] 日志分析脚本
## 6. 验收标准
### 6.1 功能验证
- [ ] 服务能在 ARM 架构上正常启动
- [ ] 内存使用在合理范围内(≤2.5GB)
- [ ] 端口无冲突,服务可正常访问
- [ ] 健康检查功能正常工作
### 6.2 性能验证
- [ ] 服务启动时间 < 30秒
- [ ] 响应时间 < 100ms
- [ ] 内存使用稳定,无泄漏
- [ ] CPU 使用率在合理范围
### 6.3 稳定性验证
- [ ] 服务能自动重启
- [ ] 日志正常输出且可查询
- [ ] 在高负载下仍能稳定运行
- [ ] 资源使用不超过限制
## 7. 风险和依赖
### 7.1 技术风险
- ARM 架构兼容性问题
- 内存限制可能影响性能
- Docker 版本兼容性
### 7.2 依赖项
- Docker Desktop for Mac
- 适当的基础镜像
- 外部 API 服务可用性
### 7.3 缓解措施
- 使用官方 ARM64 镜像
- 实施监控和告警
- 准备回滚方案
## 8. 时间线
预计完成时间:1-2个工作日
- 配置优化:半天
- 测试验证:半天
- 文档编写:半天
---
**文档版本**: 1.0
**创建日期**: 2025-09-28
**最后更新**: 2025-09-28
**负责人**: Claude AI