# Solo MCP - 智能多角色协作平台
[](https://python.org)
[](LICENSE)
[](tests/)
[](https://github.com/psf/black)
[](CONTRIBUTING.md)
一个基于 Model Context Protocol (MCP) 的智能多角色协作系统,通过模拟不同专业角色的协作来提升项目开发效率。Solo MCP 让单人开发者能够获得团队协作的智慧,实现更高质量的软件开发。
## ✨ 核心特性
### 🎭 智能角色系统
- **多角色模拟**: 智能模拟产品经理、架构师、开发者、测试工程师等专业角色
- **动态角色分配**: 根据任务类型自动选择最适合的角色组合
- **角色协作**: 不同角色间的智能对话和决策协商
### 🧠 先进记忆管理
- **持久化存储**: 项目知识的长期记忆和快速检索
- **上下文感知**: 基于当前任务智能推荐相关历史信息
- **学习能力**: 从项目历史中学习最佳实践和常见模式
### 🔄 智能任务编排
- **自动任务分解**: 将复杂项目分解为可管理的子任务
- **冲突检测**: 识别和解决任务间的潜在冲突
- **优先级管理**: 基于项目目标智能排序任务优先级
### 📊 全面上下文分析
- **代码理解**: 深度分析项目结构、依赖关系和代码质量
- **文档解析**: 自动提取和整理项目文档信息
- **环境感知**: 识别开发环境、工具链和配置
### 🚀 标准化集成
- **MCP 协议**: 基于 Model Context Protocol 标准,确保兼容性
- **插件架构**: 支持自定义工具和扩展
- **API 友好**: 提供完整的 REST API 和 Python SDK
## 🚀 快速开始
### 环境要求
- Python 3.11+
- 8GB+ RAM (推荐)
- 支持的操作系统: Windows, macOS, Linux
### 安装
```bash
# 克隆项目
git clone https://github.com/your-username/solo-mcp.git
cd solo-mcp
# 创建虚拟环境 (推荐使用 Python 3.11)
python -m venv venv311
# 激活虚拟环境
# Windows
venv311\Scripts\activate
# macOS/Linux
source venv311/bin/activate
# 升级 pip
python -m pip install --upgrade pip
# 安装依赖
pip install -r requirements.txt
# 安装交互式反馈增强 MCP
pip install mcp-feedback-enhanced
# 验证安装
python -m pytest tests/test_basic.py
```
### 基本使用
```bash
# 启动 Solo MCP 服务
python -m solo_mcp
# 或者直接运行主模块
python solo_mcp/main.py
# 运行交互式示例
python examples/demo.py
```
## 📖 使用示例
### 1. 角色规划示例
```python
from solo_mcp.tools.roles import RolesTool
# 创建角色工具
roles_tool = RolesTool()
# 评估项目需要的角色
result = roles_tool.evaluate(
goal="开发一个电商网站",
stack="Python, FastAPI, React, PostgreSQL"
)
print(result) # 输出推荐的角色列表
```
### 2. 任务分配示例
```python
from solo_mcp.config import SoloConfig
from solo_mcp.tools.orchestrator import OrchestratorTool
# 加载配置
config = SoloConfig.load()
# 创建编排工具
orchestrator = OrchestratorTool(config)
# 运行一轮协作
result = orchestrator.run_round(
goal="实现用户认证功能",
stack="Python, FastAPI, JWT"
)
print(result) # 输出任务分配和执行结果
```
### 3. 记忆管理示例
```python
from solo_mcp.config import SoloConfig
from solo_mcp.tools.memory import MemoryTool
# 加载配置
config = SoloConfig.load()
# 创建记忆工具
memory_tool = MemoryTool(config)
# 存储项目信息
memory_id = memory_tool.store(
content="用户认证采用JWT token机制",
memory_type="technical",
context={"module": "authentication", "priority": "high"}
)
# 检索相关信息
result = memory_tool.load(
query="JWT认证",
memory_type="technical"
)
print(f"找到 {len(result)} 条相关记忆")
```
## 🏗️ 项目架构
```
solo_mcp/
├── tools/ # 核心工具模块
│ ├── roles.py # 角色规划与管理
│ ├── orchestrator.py # 多角色任务编排
│ ├── memory.py # 智能记忆管理
│ ├── context.py # 上下文收集与处理
│ ├── learning.py # 学习引擎
│ ├── adaptive.py # 自适应优化器
│ └── __init__.py
├── config.py # 配置管理
├── server.py # MCP 服务器
├── main.py # 主入口文件
└── __init__.py
tests/ # 测试文件
├── test_basic.py # 基础功能测试
├── test_roles.py # 角色系统测试
├── test_orchestrator.py # 编排系统测试
├── test_memory.py # 记忆系统测试
└── test_context.py # 上下文系统测试
memory/ # 持久化记忆存储
├── memories/ # 记忆数据文件
├── cache/ # 缓存文件
└── index/ # 索引文件
examples/ # 使用示例
├── demo.py # 基础演示
├── advanced_usage.py # 高级用法
└── integration_test.py # 集成测试
docs/ # 文档
├── api.md # API 文档
├── architecture.md # 架构说明
└── deployment.md # 部署指南
```
## 🧪 运行测试
```bash
# 运行所有测试
pytest
# 运行特定测试文件
pytest tests/test_roles.py
# 运行测试并显示覆盖率
pytest --cov=solo_mcp
```
## 🔧 配置
项目支持通过环境变量和配置文件进行配置:
### 环境变量配置
```bash
# 设置记忆存储路径
export SOLO_MCP_MEMORY_PATH="./custom_memory"
# 设置日志级别
export SOLO_MCP_LOG_LEVEL="DEBUG"
# 设置缓存大小
export SOLO_MCP_CACHE_SIZE="1000"
# 设置最大记忆数量
export SOLO_MCP_MAX_MEMORIES="10000"
# 设置学习引擎开关
export SOLO_MCP_ENABLE_LEARNING="true"
```
### 配置文件
创建 `config.json` 文件进行详细配置:
```json
{
"memory": {
"max_memories": 10000,
"cache_size": 1000,
"enable_learning": true,
"relevance_threshold": 0.3
},
"orchestrator": {
"max_concurrent_tasks": 5,
"conflict_detection": true,
"auto_optimization": true
},
"roles": {
"default_roles": ["analyst", "developer", "designer", "tester"],
"enable_dynamic_roles": true
}
}
```
#### 集成交互式反馈增强 MCP
在 `config.json` 中新增 `mcpServers` 配置以启用交互式反馈增强 MCP:
```json
"mcpServers": {
"mcp-feedback-enhanced": {
"command": "uvx",
"args": ["mcp-feedback-enhanced@latest"],
"timeout": 600,
"autoApprove": ["interactive_feedback"]
}
}
```
> 提示:`autoApprove` 可根据需求调整自动批准的工具列表。
## 🤝 贡献指南
我们欢迎所有形式的贡献!无论是报告 bug、提出新功能建议,还是提交代码改进。
### 开发环境设置
1. **Fork 并克隆仓库**
```bash
git clone https://github.com/your-username/solo-mcp.git
cd solo-mcp
```
2. **设置开发环境**
```bash
# 创建虚拟环境
python -m venv venv311
source venv311/bin/activate # Linux/macOS
# 或 venv311\Scripts\activate # Windows
# 安装开发依赖
pip install -r requirements.txt
pip install -r requirements-dev.txt # 如果存在
# 安装预提交钩子
pre-commit install
```
3. **运行测试**
```bash
# 运行所有测试
python -m pytest
# 运行特定测试
python -m pytest tests/test_basic.py
# 生成覆盖率报告
python -m pytest --cov=solo_mcp --cov-report=html
```
### 贡献流程
1. **创建 Issue**
- 报告 bug 或提出新功能建议
- 使用相应的 Issue 模板
- 提供详细的描述和复现步骤
2. **开发流程**
```bash
# 创建特性分支
git checkout -b feature/amazing-feature
# 进行开发...
# 运行测试确保代码质量
python -m pytest
# 提交更改
git add .
git commit -m "feat: add amazing feature"
# 推送到你的 fork
git push origin feature/amazing-feature
```
3. **提交 Pull Request**
- 使用清晰的标题和描述
- 关联相关的 Issue
- 确保所有测试通过
- 请求代码审查
### 代码规范
- **代码风格**: 遵循 PEP 8 标准
- **类型注解**: 使用 Python 类型提示
- **文档字符串**: 使用 Google 风格的 docstring
- **测试**: 新功能必须包含相应的测试
- **提交信息**: 使用 [Conventional Commits](https://www.conventionalcommits.org/) 格式
### 提交信息格式
```
type(scope): description
[optional body]
[optional footer]
```
类型包括:
- `feat`: 新功能
- `fix`: 修复 bug
- `docs`: 文档更新
- `style`: 代码格式化
- `refactor`: 代码重构
- `test`: 测试相关
- `chore`: 构建过程或辅助工具的变动
### 开发规范
- 使用 [Black](https://github.com/psf/black) 进行代码格式化
- 遵循 [PEP 8](https://www.python.org/dev/peps/pep-0008/) 编码规范
- 为新功能添加相应的测试
- 更新相关文档
### 代码格式化
```bash
# 格式化代码
black solo_mcp/ tests/
# 检查代码风格
black --check solo_mcp/ tests/
```
## 🗺️ 路线图
### 近期目标 (v1.1)
- [ ] 添加更多预定义角色类型
- [ ] 实现记忆系统的向量化搜索
- [ ] 优化任务调度算法
- [ ] 添加性能监控和指标
- [ ] 完善 API 文档
### 中期目标 (v1.5)
- [ ] 实现分布式记忆存储
- [ ] 添加 Web 管理界面
- [ ] 支持插件系统
- [ ] 集成更多 AI 模型
- [ ] 添加实时协作功能
### 长期目标 (v2.0)
- [ ] 支持多语言 SDK
- [ ] 云端部署方案
- [ ] 企业级安全特性
- [ ] 高级分析和报告
- [ ] 自动化 DevOps 集成
## 🐛 问题反馈
如果您发现任何问题或有改进建议,请:
1. 查看 [Issues](https://github.com/your-username/solo-mcp/issues) 是否已有相关问题
2. 如果没有,请创建新的 Issue 并提供详细信息:
- 问题描述
- 复现步骤
- 期望行为
- 系统环境信息
## 📄 许可证
本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。
## 🙏 致谢
- [Model Context Protocol](https://github.com/modelcontextprotocol) - 提供了强大的上下文协议基础
- [sentence-transformers](https://github.com/UKPLab/sentence-transformers) - 提供了优秀的文本嵌入能力
- 所有贡献者和使用者的支持
---
**Solo MCP** - 让AI协作开发变得简单而强大 🚀
Raw data
{
"_id": null,
"home_page": "https://github.com/your-username/solo-mcp",
"name": "solo-mcp",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.11",
"maintainer_email": "Solo MCP Team <contact@solo-mcp.dev>",
"keywords": "mcp, ai, agent, orchestration, memory, context",
"author": "Solo MCP Team",
"author_email": "Solo MCP Team <contact@solo-mcp.dev>",
"download_url": "https://files.pythonhosted.org/packages/43/d8/2922a8e346202ffc7ac373289ce2a8dc06e0516af31e836afeedb3d4b8ca/solo_mcp-0.1.1.tar.gz",
"platform": null,
"description": "# Solo MCP - \u667a\u80fd\u591a\u89d2\u8272\u534f\u4f5c\u5e73\u53f0\r\n\r\n[](https://python.org)\r\n[](LICENSE)\r\n[](tests/)\r\n[](https://github.com/psf/black)\r\n[](CONTRIBUTING.md)\r\n\r\n\u4e00\u4e2a\u57fa\u4e8e Model Context Protocol (MCP) \u7684\u667a\u80fd\u591a\u89d2\u8272\u534f\u4f5c\u7cfb\u7edf\uff0c\u901a\u8fc7\u6a21\u62df\u4e0d\u540c\u4e13\u4e1a\u89d2\u8272\u7684\u534f\u4f5c\u6765\u63d0\u5347\u9879\u76ee\u5f00\u53d1\u6548\u7387\u3002Solo MCP \u8ba9\u5355\u4eba\u5f00\u53d1\u8005\u80fd\u591f\u83b7\u5f97\u56e2\u961f\u534f\u4f5c\u7684\u667a\u6167\uff0c\u5b9e\u73b0\u66f4\u9ad8\u8d28\u91cf\u7684\u8f6f\u4ef6\u5f00\u53d1\u3002\r\n\r\n## \u2728 \u6838\u5fc3\u7279\u6027\r\n\r\n### \ud83c\udfad \u667a\u80fd\u89d2\u8272\u7cfb\u7edf\r\n- **\u591a\u89d2\u8272\u6a21\u62df**: \u667a\u80fd\u6a21\u62df\u4ea7\u54c1\u7ecf\u7406\u3001\u67b6\u6784\u5e08\u3001\u5f00\u53d1\u8005\u3001\u6d4b\u8bd5\u5de5\u7a0b\u5e08\u7b49\u4e13\u4e1a\u89d2\u8272\r\n- **\u52a8\u6001\u89d2\u8272\u5206\u914d**: \u6839\u636e\u4efb\u52a1\u7c7b\u578b\u81ea\u52a8\u9009\u62e9\u6700\u9002\u5408\u7684\u89d2\u8272\u7ec4\u5408\r\n- **\u89d2\u8272\u534f\u4f5c**: \u4e0d\u540c\u89d2\u8272\u95f4\u7684\u667a\u80fd\u5bf9\u8bdd\u548c\u51b3\u7b56\u534f\u5546\r\n\r\n### \ud83e\udde0 \u5148\u8fdb\u8bb0\u5fc6\u7ba1\u7406\r\n- **\u6301\u4e45\u5316\u5b58\u50a8**: \u9879\u76ee\u77e5\u8bc6\u7684\u957f\u671f\u8bb0\u5fc6\u548c\u5feb\u901f\u68c0\u7d22\r\n- **\u4e0a\u4e0b\u6587\u611f\u77e5**: \u57fa\u4e8e\u5f53\u524d\u4efb\u52a1\u667a\u80fd\u63a8\u8350\u76f8\u5173\u5386\u53f2\u4fe1\u606f\r\n- **\u5b66\u4e60\u80fd\u529b**: \u4ece\u9879\u76ee\u5386\u53f2\u4e2d\u5b66\u4e60\u6700\u4f73\u5b9e\u8df5\u548c\u5e38\u89c1\u6a21\u5f0f\r\n\r\n### \ud83d\udd04 \u667a\u80fd\u4efb\u52a1\u7f16\u6392\r\n- **\u81ea\u52a8\u4efb\u52a1\u5206\u89e3**: \u5c06\u590d\u6742\u9879\u76ee\u5206\u89e3\u4e3a\u53ef\u7ba1\u7406\u7684\u5b50\u4efb\u52a1\r\n- **\u51b2\u7a81\u68c0\u6d4b**: \u8bc6\u522b\u548c\u89e3\u51b3\u4efb\u52a1\u95f4\u7684\u6f5c\u5728\u51b2\u7a81\r\n- **\u4f18\u5148\u7ea7\u7ba1\u7406**: \u57fa\u4e8e\u9879\u76ee\u76ee\u6807\u667a\u80fd\u6392\u5e8f\u4efb\u52a1\u4f18\u5148\u7ea7\r\n\r\n### \ud83d\udcca \u5168\u9762\u4e0a\u4e0b\u6587\u5206\u6790\r\n- **\u4ee3\u7801\u7406\u89e3**: \u6df1\u5ea6\u5206\u6790\u9879\u76ee\u7ed3\u6784\u3001\u4f9d\u8d56\u5173\u7cfb\u548c\u4ee3\u7801\u8d28\u91cf\r\n- **\u6587\u6863\u89e3\u6790**: \u81ea\u52a8\u63d0\u53d6\u548c\u6574\u7406\u9879\u76ee\u6587\u6863\u4fe1\u606f\r\n- **\u73af\u5883\u611f\u77e5**: \u8bc6\u522b\u5f00\u53d1\u73af\u5883\u3001\u5de5\u5177\u94fe\u548c\u914d\u7f6e\r\n\r\n### \ud83d\ude80 \u6807\u51c6\u5316\u96c6\u6210\r\n- **MCP \u534f\u8bae**: \u57fa\u4e8e Model Context Protocol \u6807\u51c6\uff0c\u786e\u4fdd\u517c\u5bb9\u6027\r\n- **\u63d2\u4ef6\u67b6\u6784**: \u652f\u6301\u81ea\u5b9a\u4e49\u5de5\u5177\u548c\u6269\u5c55\r\n- **API \u53cb\u597d**: \u63d0\u4f9b\u5b8c\u6574\u7684 REST API \u548c Python SDK\r\n\r\n## \ud83d\ude80 \u5feb\u901f\u5f00\u59cb\r\n\r\n### \u73af\u5883\u8981\u6c42\r\n\r\n- Python 3.11+\r\n- 8GB+ RAM (\u63a8\u8350)\r\n- \u652f\u6301\u7684\u64cd\u4f5c\u7cfb\u7edf: Windows, macOS, Linux\r\n\r\n### \u5b89\u88c5\r\n\r\n```bash\r\n# \u514b\u9686\u9879\u76ee\r\ngit clone https://github.com/your-username/solo-mcp.git\r\ncd solo-mcp\r\n\r\n# \u521b\u5efa\u865a\u62df\u73af\u5883 (\u63a8\u8350\u4f7f\u7528 Python 3.11)\r\npython -m venv venv311\r\n\r\n# \u6fc0\u6d3b\u865a\u62df\u73af\u5883\r\n# Windows\r\nvenv311\\Scripts\\activate\r\n# macOS/Linux\r\nsource venv311/bin/activate\r\n\r\n# \u5347\u7ea7 pip\r\npython -m pip install --upgrade pip\r\n\r\n# \u5b89\u88c5\u4f9d\u8d56\r\npip install -r requirements.txt\r\n# \u5b89\u88c5\u4ea4\u4e92\u5f0f\u53cd\u9988\u589e\u5f3a MCP\r\npip install mcp-feedback-enhanced\r\n\r\n# \u9a8c\u8bc1\u5b89\u88c5\r\npython -m pytest tests/test_basic.py\r\n```\r\n\r\n### \u57fa\u672c\u4f7f\u7528\r\n\r\n```bash\r\n# \u542f\u52a8 Solo MCP \u670d\u52a1\r\npython -m solo_mcp\r\n\r\n# \u6216\u8005\u76f4\u63a5\u8fd0\u884c\u4e3b\u6a21\u5757\r\npython solo_mcp/main.py\r\n\r\n# \u8fd0\u884c\u4ea4\u4e92\u5f0f\u793a\u4f8b\r\npython examples/demo.py\r\n```\r\n\r\n## \ud83d\udcd6 \u4f7f\u7528\u793a\u4f8b\r\n\r\n### 1. \u89d2\u8272\u89c4\u5212\u793a\u4f8b\r\n\r\n```python\r\nfrom solo_mcp.tools.roles import RolesTool\r\n\r\n# \u521b\u5efa\u89d2\u8272\u5de5\u5177\r\nroles_tool = RolesTool()\r\n\r\n# \u8bc4\u4f30\u9879\u76ee\u9700\u8981\u7684\u89d2\u8272\r\nresult = roles_tool.evaluate(\r\n goal=\"\u5f00\u53d1\u4e00\u4e2a\u7535\u5546\u7f51\u7ad9\",\r\n stack=\"Python, FastAPI, React, PostgreSQL\"\r\n)\r\n\r\nprint(result) # \u8f93\u51fa\u63a8\u8350\u7684\u89d2\u8272\u5217\u8868\r\n```\r\n\r\n### 2. \u4efb\u52a1\u5206\u914d\u793a\u4f8b\r\n\r\n```python\r\nfrom solo_mcp.config import SoloConfig\r\nfrom solo_mcp.tools.orchestrator import OrchestratorTool\r\n\r\n# \u52a0\u8f7d\u914d\u7f6e\r\nconfig = SoloConfig.load()\r\n\r\n# \u521b\u5efa\u7f16\u6392\u5de5\u5177\r\norchestrator = OrchestratorTool(config)\r\n\r\n# \u8fd0\u884c\u4e00\u8f6e\u534f\u4f5c\r\nresult = orchestrator.run_round(\r\n goal=\"\u5b9e\u73b0\u7528\u6237\u8ba4\u8bc1\u529f\u80fd\",\r\n stack=\"Python, FastAPI, JWT\"\r\n)\r\n\r\nprint(result) # \u8f93\u51fa\u4efb\u52a1\u5206\u914d\u548c\u6267\u884c\u7ed3\u679c\r\n```\r\n\r\n### 3. \u8bb0\u5fc6\u7ba1\u7406\u793a\u4f8b\r\n\r\n```python\r\nfrom solo_mcp.config import SoloConfig\r\nfrom solo_mcp.tools.memory import MemoryTool\r\n\r\n# \u52a0\u8f7d\u914d\u7f6e\r\nconfig = SoloConfig.load()\r\n\r\n# \u521b\u5efa\u8bb0\u5fc6\u5de5\u5177\r\nmemory_tool = MemoryTool(config)\r\n\r\n# \u5b58\u50a8\u9879\u76ee\u4fe1\u606f\r\nmemory_id = memory_tool.store(\r\n content=\"\u7528\u6237\u8ba4\u8bc1\u91c7\u7528JWT token\u673a\u5236\",\r\n memory_type=\"technical\",\r\n context={\"module\": \"authentication\", \"priority\": \"high\"}\r\n)\r\n\r\n# \u68c0\u7d22\u76f8\u5173\u4fe1\u606f\r\nresult = memory_tool.load(\r\n query=\"JWT\u8ba4\u8bc1\",\r\n memory_type=\"technical\"\r\n)\r\n\r\nprint(f\"\u627e\u5230 {len(result)} \u6761\u76f8\u5173\u8bb0\u5fc6\")\r\n```\r\n\r\n## \ud83c\udfd7\ufe0f \u9879\u76ee\u67b6\u6784\r\n\r\n```\r\nsolo_mcp/\r\n\u251c\u2500\u2500 tools/ # \u6838\u5fc3\u5de5\u5177\u6a21\u5757\r\n\u2502 \u251c\u2500\u2500 roles.py # \u89d2\u8272\u89c4\u5212\u4e0e\u7ba1\u7406\r\n\u2502 \u251c\u2500\u2500 orchestrator.py # \u591a\u89d2\u8272\u4efb\u52a1\u7f16\u6392\r\n\u2502 \u251c\u2500\u2500 memory.py # \u667a\u80fd\u8bb0\u5fc6\u7ba1\u7406\r\n\u2502 \u251c\u2500\u2500 context.py # \u4e0a\u4e0b\u6587\u6536\u96c6\u4e0e\u5904\u7406\r\n\u2502 \u251c\u2500\u2500 learning.py # \u5b66\u4e60\u5f15\u64ce\r\n\u2502 \u251c\u2500\u2500 adaptive.py # \u81ea\u9002\u5e94\u4f18\u5316\u5668\r\n\u2502 \u2514\u2500\u2500 __init__.py\r\n\u251c\u2500\u2500 config.py # \u914d\u7f6e\u7ba1\u7406\r\n\u251c\u2500\u2500 server.py # MCP \u670d\u52a1\u5668\r\n\u251c\u2500\u2500 main.py # \u4e3b\u5165\u53e3\u6587\u4ef6\r\n\u2514\u2500\u2500 __init__.py\r\n\r\ntests/ # \u6d4b\u8bd5\u6587\u4ef6\r\n\u251c\u2500\u2500 test_basic.py # \u57fa\u7840\u529f\u80fd\u6d4b\u8bd5\r\n\u251c\u2500\u2500 test_roles.py # \u89d2\u8272\u7cfb\u7edf\u6d4b\u8bd5\r\n\u251c\u2500\u2500 test_orchestrator.py # \u7f16\u6392\u7cfb\u7edf\u6d4b\u8bd5\r\n\u251c\u2500\u2500 test_memory.py # \u8bb0\u5fc6\u7cfb\u7edf\u6d4b\u8bd5\r\n\u2514\u2500\u2500 test_context.py # \u4e0a\u4e0b\u6587\u7cfb\u7edf\u6d4b\u8bd5\r\n\r\nmemory/ # \u6301\u4e45\u5316\u8bb0\u5fc6\u5b58\u50a8\r\n\u251c\u2500\u2500 memories/ # \u8bb0\u5fc6\u6570\u636e\u6587\u4ef6\r\n\u251c\u2500\u2500 cache/ # \u7f13\u5b58\u6587\u4ef6\r\n\u2514\u2500\u2500 index/ # \u7d22\u5f15\u6587\u4ef6\r\n\r\nexamples/ # \u4f7f\u7528\u793a\u4f8b\r\n\u251c\u2500\u2500 demo.py # \u57fa\u7840\u6f14\u793a\r\n\u251c\u2500\u2500 advanced_usage.py # \u9ad8\u7ea7\u7528\u6cd5\r\n\u2514\u2500\u2500 integration_test.py # \u96c6\u6210\u6d4b\u8bd5\r\n\r\ndocs/ # \u6587\u6863\r\n\u251c\u2500\u2500 api.md # API \u6587\u6863\r\n\u251c\u2500\u2500 architecture.md # \u67b6\u6784\u8bf4\u660e\r\n\u2514\u2500\u2500 deployment.md # \u90e8\u7f72\u6307\u5357\r\n```\r\n\r\n## \ud83e\uddea \u8fd0\u884c\u6d4b\u8bd5\r\n\r\n```bash\r\n# \u8fd0\u884c\u6240\u6709\u6d4b\u8bd5\r\npytest\r\n\r\n# \u8fd0\u884c\u7279\u5b9a\u6d4b\u8bd5\u6587\u4ef6\r\npytest tests/test_roles.py\r\n\r\n# \u8fd0\u884c\u6d4b\u8bd5\u5e76\u663e\u793a\u8986\u76d6\u7387\r\npytest --cov=solo_mcp\r\n```\r\n\r\n## \ud83d\udd27 \u914d\u7f6e\r\n\r\n\u9879\u76ee\u652f\u6301\u901a\u8fc7\u73af\u5883\u53d8\u91cf\u548c\u914d\u7f6e\u6587\u4ef6\u8fdb\u884c\u914d\u7f6e:\r\n\r\n### \u73af\u5883\u53d8\u91cf\u914d\u7f6e\r\n\r\n```bash\r\n# \u8bbe\u7f6e\u8bb0\u5fc6\u5b58\u50a8\u8def\u5f84\r\nexport SOLO_MCP_MEMORY_PATH=\"./custom_memory\"\r\n\r\n# \u8bbe\u7f6e\u65e5\u5fd7\u7ea7\u522b\r\nexport SOLO_MCP_LOG_LEVEL=\"DEBUG\"\r\n\r\n# \u8bbe\u7f6e\u7f13\u5b58\u5927\u5c0f\r\nexport SOLO_MCP_CACHE_SIZE=\"1000\"\r\n\r\n# \u8bbe\u7f6e\u6700\u5927\u8bb0\u5fc6\u6570\u91cf\r\nexport SOLO_MCP_MAX_MEMORIES=\"10000\"\r\n\r\n# \u8bbe\u7f6e\u5b66\u4e60\u5f15\u64ce\u5f00\u5173\r\nexport SOLO_MCP_ENABLE_LEARNING=\"true\"\r\n```\r\n\r\n### \u914d\u7f6e\u6587\u4ef6\r\n\r\n\u521b\u5efa `config.json` \u6587\u4ef6\u8fdb\u884c\u8be6\u7ec6\u914d\u7f6e:\r\n\r\n```json\r\n{\r\n \"memory\": {\r\n \"max_memories\": 10000,\r\n \"cache_size\": 1000,\r\n \"enable_learning\": true,\r\n \"relevance_threshold\": 0.3\r\n },\r\n \"orchestrator\": {\r\n \"max_concurrent_tasks\": 5,\r\n \"conflict_detection\": true,\r\n \"auto_optimization\": true\r\n },\r\n \"roles\": {\r\n \"default_roles\": [\"analyst\", \"developer\", \"designer\", \"tester\"],\r\n \"enable_dynamic_roles\": true\r\n }\r\n}\r\n```\r\n\r\n#### \u96c6\u6210\u4ea4\u4e92\u5f0f\u53cd\u9988\u589e\u5f3a MCP\r\n\r\n\u5728 `config.json` \u4e2d\u65b0\u589e `mcpServers` \u914d\u7f6e\u4ee5\u542f\u7528\u4ea4\u4e92\u5f0f\u53cd\u9988\u589e\u5f3a MCP\uff1a\r\n\r\n```json\r\n \"mcpServers\": {\r\n \"mcp-feedback-enhanced\": {\r\n \"command\": \"uvx\",\r\n \"args\": [\"mcp-feedback-enhanced@latest\"],\r\n \"timeout\": 600,\r\n \"autoApprove\": [\"interactive_feedback\"]\r\n }\r\n }\r\n```\r\n\r\n> \u63d0\u793a\uff1a`autoApprove` \u53ef\u6839\u636e\u9700\u6c42\u8c03\u6574\u81ea\u52a8\u6279\u51c6\u7684\u5de5\u5177\u5217\u8868\u3002\r\n\r\n## \ud83e\udd1d \u8d21\u732e\u6307\u5357\r\n\r\n\u6211\u4eec\u6b22\u8fce\u6240\u6709\u5f62\u5f0f\u7684\u8d21\u732e\uff01\u65e0\u8bba\u662f\u62a5\u544a bug\u3001\u63d0\u51fa\u65b0\u529f\u80fd\u5efa\u8bae\uff0c\u8fd8\u662f\u63d0\u4ea4\u4ee3\u7801\u6539\u8fdb\u3002\r\n\r\n### \u5f00\u53d1\u73af\u5883\u8bbe\u7f6e\r\n\r\n1. **Fork \u5e76\u514b\u9686\u4ed3\u5e93**\r\n ```bash\r\n git clone https://github.com/your-username/solo-mcp.git\r\n cd solo-mcp\r\n ```\r\n\r\n2. **\u8bbe\u7f6e\u5f00\u53d1\u73af\u5883**\r\n ```bash\r\n # \u521b\u5efa\u865a\u62df\u73af\u5883\r\n python -m venv venv311\r\n source venv311/bin/activate # Linux/macOS\r\n # \u6216 venv311\\Scripts\\activate # Windows\r\n \r\n # \u5b89\u88c5\u5f00\u53d1\u4f9d\u8d56\r\n pip install -r requirements.txt\r\n pip install -r requirements-dev.txt # \u5982\u679c\u5b58\u5728\r\n \r\n # \u5b89\u88c5\u9884\u63d0\u4ea4\u94a9\u5b50\r\n pre-commit install\r\n ```\r\n\r\n3. **\u8fd0\u884c\u6d4b\u8bd5**\r\n ```bash\r\n # \u8fd0\u884c\u6240\u6709\u6d4b\u8bd5\r\n python -m pytest\r\n \r\n # \u8fd0\u884c\u7279\u5b9a\u6d4b\u8bd5\r\n python -m pytest tests/test_basic.py\r\n \r\n # \u751f\u6210\u8986\u76d6\u7387\u62a5\u544a\r\n python -m pytest --cov=solo_mcp --cov-report=html\r\n ```\r\n\r\n### \u8d21\u732e\u6d41\u7a0b\r\n\r\n1. **\u521b\u5efa Issue**\r\n - \u62a5\u544a bug \u6216\u63d0\u51fa\u65b0\u529f\u80fd\u5efa\u8bae\r\n - \u4f7f\u7528\u76f8\u5e94\u7684 Issue \u6a21\u677f\r\n - \u63d0\u4f9b\u8be6\u7ec6\u7684\u63cf\u8ff0\u548c\u590d\u73b0\u6b65\u9aa4\r\n\r\n2. **\u5f00\u53d1\u6d41\u7a0b**\r\n ```bash\r\n # \u521b\u5efa\u7279\u6027\u5206\u652f\r\n git checkout -b feature/amazing-feature\r\n \r\n # \u8fdb\u884c\u5f00\u53d1...\r\n \r\n # \u8fd0\u884c\u6d4b\u8bd5\u786e\u4fdd\u4ee3\u7801\u8d28\u91cf\r\n python -m pytest\r\n \r\n # \u63d0\u4ea4\u66f4\u6539\r\n git add .\r\n git commit -m \"feat: add amazing feature\"\r\n \r\n # \u63a8\u9001\u5230\u4f60\u7684 fork\r\n git push origin feature/amazing-feature\r\n ```\r\n\r\n3. **\u63d0\u4ea4 Pull Request**\r\n - \u4f7f\u7528\u6e05\u6670\u7684\u6807\u9898\u548c\u63cf\u8ff0\r\n - \u5173\u8054\u76f8\u5173\u7684 Issue\r\n - \u786e\u4fdd\u6240\u6709\u6d4b\u8bd5\u901a\u8fc7\r\n - \u8bf7\u6c42\u4ee3\u7801\u5ba1\u67e5\r\n\r\n### \u4ee3\u7801\u89c4\u8303\r\n\r\n- **\u4ee3\u7801\u98ce\u683c**: \u9075\u5faa PEP 8 \u6807\u51c6\r\n- **\u7c7b\u578b\u6ce8\u89e3**: \u4f7f\u7528 Python \u7c7b\u578b\u63d0\u793a\r\n- **\u6587\u6863\u5b57\u7b26\u4e32**: \u4f7f\u7528 Google \u98ce\u683c\u7684 docstring\r\n- **\u6d4b\u8bd5**: \u65b0\u529f\u80fd\u5fc5\u987b\u5305\u542b\u76f8\u5e94\u7684\u6d4b\u8bd5\r\n- **\u63d0\u4ea4\u4fe1\u606f**: \u4f7f\u7528 [Conventional Commits](https://www.conventionalcommits.org/) \u683c\u5f0f\r\n\r\n### \u63d0\u4ea4\u4fe1\u606f\u683c\u5f0f\r\n\r\n```\r\ntype(scope): description\r\n\r\n[optional body]\r\n\r\n[optional footer]\r\n```\r\n\r\n\u7c7b\u578b\u5305\u62ec\uff1a\r\n- `feat`: \u65b0\u529f\u80fd\r\n- `fix`: \u4fee\u590d bug\r\n- `docs`: \u6587\u6863\u66f4\u65b0\r\n- `style`: \u4ee3\u7801\u683c\u5f0f\u5316\r\n- `refactor`: \u4ee3\u7801\u91cd\u6784\r\n- `test`: \u6d4b\u8bd5\u76f8\u5173\r\n- `chore`: \u6784\u5efa\u8fc7\u7a0b\u6216\u8f85\u52a9\u5de5\u5177\u7684\u53d8\u52a8\r\n\r\n### \u5f00\u53d1\u89c4\u8303\r\n\r\n- \u4f7f\u7528 [Black](https://github.com/psf/black) \u8fdb\u884c\u4ee3\u7801\u683c\u5f0f\u5316\r\n- \u9075\u5faa [PEP 8](https://www.python.org/dev/peps/pep-0008/) \u7f16\u7801\u89c4\u8303\r\n- \u4e3a\u65b0\u529f\u80fd\u6dfb\u52a0\u76f8\u5e94\u7684\u6d4b\u8bd5\r\n- \u66f4\u65b0\u76f8\u5173\u6587\u6863\r\n\r\n### \u4ee3\u7801\u683c\u5f0f\u5316\r\n\r\n```bash\r\n# \u683c\u5f0f\u5316\u4ee3\u7801\r\nblack solo_mcp/ tests/\r\n\r\n# \u68c0\u67e5\u4ee3\u7801\u98ce\u683c\r\nblack --check solo_mcp/ tests/\r\n```\r\n\r\n## \ud83d\uddfa\ufe0f \u8def\u7ebf\u56fe\r\n\r\n### \u8fd1\u671f\u76ee\u6807 (v1.1)\r\n- [ ] \u6dfb\u52a0\u66f4\u591a\u9884\u5b9a\u4e49\u89d2\u8272\u7c7b\u578b\r\n- [ ] \u5b9e\u73b0\u8bb0\u5fc6\u7cfb\u7edf\u7684\u5411\u91cf\u5316\u641c\u7d22\r\n- [ ] \u4f18\u5316\u4efb\u52a1\u8c03\u5ea6\u7b97\u6cd5\r\n- [ ] \u6dfb\u52a0\u6027\u80fd\u76d1\u63a7\u548c\u6307\u6807\r\n- [ ] \u5b8c\u5584 API \u6587\u6863\r\n\r\n### \u4e2d\u671f\u76ee\u6807 (v1.5)\r\n- [ ] \u5b9e\u73b0\u5206\u5e03\u5f0f\u8bb0\u5fc6\u5b58\u50a8\r\n- [ ] \u6dfb\u52a0 Web \u7ba1\u7406\u754c\u9762\r\n- [ ] \u652f\u6301\u63d2\u4ef6\u7cfb\u7edf\r\n- [ ] \u96c6\u6210\u66f4\u591a AI \u6a21\u578b\r\n- [ ] \u6dfb\u52a0\u5b9e\u65f6\u534f\u4f5c\u529f\u80fd\r\n\r\n### \u957f\u671f\u76ee\u6807 (v2.0)\r\n- [ ] \u652f\u6301\u591a\u8bed\u8a00 SDK\r\n- [ ] \u4e91\u7aef\u90e8\u7f72\u65b9\u6848\r\n- [ ] \u4f01\u4e1a\u7ea7\u5b89\u5168\u7279\u6027\r\n- [ ] \u9ad8\u7ea7\u5206\u6790\u548c\u62a5\u544a\r\n- [ ] \u81ea\u52a8\u5316 DevOps \u96c6\u6210\r\n\r\n## \ud83d\udc1b \u95ee\u9898\u53cd\u9988\r\n\r\n\u5982\u679c\u60a8\u53d1\u73b0\u4efb\u4f55\u95ee\u9898\u6216\u6709\u6539\u8fdb\u5efa\u8bae\uff0c\u8bf7:\r\n\r\n1. \u67e5\u770b [Issues](https://github.com/your-username/solo-mcp/issues) \u662f\u5426\u5df2\u6709\u76f8\u5173\u95ee\u9898\r\n2. \u5982\u679c\u6ca1\u6709\uff0c\u8bf7\u521b\u5efa\u65b0\u7684 Issue \u5e76\u63d0\u4f9b\u8be6\u7ec6\u4fe1\u606f:\r\n - \u95ee\u9898\u63cf\u8ff0\r\n - \u590d\u73b0\u6b65\u9aa4\r\n - \u671f\u671b\u884c\u4e3a\r\n - \u7cfb\u7edf\u73af\u5883\u4fe1\u606f\r\n\r\n## \ud83d\udcc4 \u8bb8\u53ef\u8bc1\r\n\r\n\u672c\u9879\u76ee\u91c7\u7528 MIT \u8bb8\u53ef\u8bc1 - \u67e5\u770b [LICENSE](LICENSE) \u6587\u4ef6\u4e86\u89e3\u8be6\u60c5\u3002\r\n\r\n## \ud83d\ude4f \u81f4\u8c22\r\n\r\n- [Model Context Protocol](https://github.com/modelcontextprotocol) - \u63d0\u4f9b\u4e86\u5f3a\u5927\u7684\u4e0a\u4e0b\u6587\u534f\u8bae\u57fa\u7840\r\n- [sentence-transformers](https://github.com/UKPLab/sentence-transformers) - \u63d0\u4f9b\u4e86\u4f18\u79c0\u7684\u6587\u672c\u5d4c\u5165\u80fd\u529b\r\n- \u6240\u6709\u8d21\u732e\u8005\u548c\u4f7f\u7528\u8005\u7684\u652f\u6301\r\n\r\n---\r\n\r\n**Solo MCP** - \u8ba9AI\u534f\u4f5c\u5f00\u53d1\u53d8\u5f97\u7b80\u5355\u800c\u5f3a\u5927 \ud83d\ude80\r\n",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "\u667a\u80fd\u4ee3\u7406\u534f\u4f5c\u5e73\u53f0 - \u57fa\u4e8e MCP \u534f\u8bae\u7684\u591a\u89d2\u8272\u4efb\u52a1\u7f16\u6392\u7cfb\u7edf",
"version": "0.1.1",
"project_urls": {
"Bug Reports": "https://github.com/your-username/solo-mcp/issues",
"Documentation": "https://solo-mcp.readthedocs.io/",
"Homepage": "https://github.com/your-username/solo-mcp",
"Source": "https://github.com/your-username/solo-mcp"
},
"split_keywords": [
"mcp",
" ai",
" agent",
" orchestration",
" memory",
" context"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "aa681e21f6538c3a5cfc24ecd6b46aa0efd94560c7d8c9fa69bcecfccbd38e43",
"md5": "69423351de74aafb6f8de5823cbe0c0a",
"sha256": "291d525034ddaa9b6011d324310ab0bcd2d22c4836e3987c6ef14a89e2efecf0"
},
"downloads": -1,
"filename": "solo_mcp-0.1.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "69423351de74aafb6f8de5823cbe0c0a",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.11",
"size": 68851,
"upload_time": "2025-08-13T18:21:11",
"upload_time_iso_8601": "2025-08-13T18:21:11.367663Z",
"url": "https://files.pythonhosted.org/packages/aa/68/1e21f6538c3a5cfc24ecd6b46aa0efd94560c7d8c9fa69bcecfccbd38e43/solo_mcp-0.1.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "43d82922a8e346202ffc7ac373289ce2a8dc06e0516af31e836afeedb3d4b8ca",
"md5": "a8630804b7368a31c43c7e9fd9d19649",
"sha256": "2d90d01ab73005a2209743517a9661730a38e9998cbff00d61b83db83c780c51"
},
"downloads": -1,
"filename": "solo_mcp-0.1.1.tar.gz",
"has_sig": false,
"md5_digest": "a8630804b7368a31c43c7e9fd9d19649",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.11",
"size": 91521,
"upload_time": "2025-08-13T18:21:13",
"upload_time_iso_8601": "2025-08-13T18:21:13.086567Z",
"url": "https://files.pythonhosted.org/packages/43/d8/2922a8e346202ffc7ac373289ce2a8dc06e0516af31e836afeedb3d4b8ca/solo_mcp-0.1.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-13 18:21:13",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "your-username",
"github_project": "solo-mcp",
"github_not_found": true,
"lcname": "solo-mcp"
}