orchestry-mcp
Version:
Orchestry MCP Server for multi-session task management
276 lines (236 loc) β’ 8.28 kB
Markdown
# π Orchestry μν κΈ°λ° μν¬νλ‘μ°
## π μν λ³ μ±
μκ³Ό μ°μ μμ
### μν μ μ
| μν | μ±
μ | μ£Όμ μμ
| 리뷰 κ°λ₯ |
|------|------|----------|-----------|
| **Backend** | API, μλ² λ‘μ§ | API κ°λ°, λ°μ΄ν°λ² μ΄μ€ μ°λ, μΈμ¦ | Frontend, Database |
| **Frontend** | UI/UX ꡬν | React μ»΄ν¬λνΈ, μν κ΄λ¦¬, μ€νμΌλ§ | UI-UX |
| **Fullstack** | μ 체 κΈ°λ₯ ꡬν | End-to-end κΈ°λ₯, ν΅ν© | Backend, Frontend |
| **DevOps** | λ°°ν¬, μΈνλΌ | CI/CD, Docker, λͺ¨λν°λ§ | Security |
| **Database** | DB μ€κ³, μ΅μ ν | μ€ν€λ§ μ€κ³, 쿼리 μ΅μ ν, λ§μ΄κ·Έλ μ΄μ
| Backend |
| **Testing** | ν
μ€νΈ μμ± | λ¨μ ν
μ€νΈ, ν΅ν© ν
μ€νΈ, E2E | λͺ¨λ κ°λ° μν |
| **Security** | 보μ κ²ν | μ·¨μ½μ λΆμ, 보μ κ°μ¬ | Backend, DevOps |
| **Architect** | μμ€ν
μ€κ³ | μν€ν
μ² μ€κ³, κΈ°μ μ ν | Fullstack, Backend |
### μ°μ μμ μλ κ²°μ
| μ°μ μμ | 쑰건 | μμ |
|----------|------|------|
| **Critical** π΄ | 보μ μ΄μ, μμ€ν
λ€μ΄, "urgent" ν€μλ | "Fix SQL injection vulnerability" |
| **High** π | λ²κ·Έ, μ£Όμ κΈ°λ₯, λ§μ μμ‘΄μ± | "Payment system not working" |
| **Medium** π‘ | μΌλ° κΈ°λ₯, κ°μ μ¬ν | "Add user profile page" |
| **Low** π’ | λ¬Έμν, 리ν©ν λ§, μ΅μ ν | "Update README documentation" |
## π μ€μ μν¬νλ‘μ° μμ
### μλλ¦¬μ€ 1: μ μμκ±°λ νλ«νΌ κ°λ°
```mermaid
graph TB
PM[Product Manager<br/>μꡬμ¬ν μ μ] --> ARCH[Architect<br/>μμ€ν
μ€κ³]
ARCH --> BACK[Backend Dev<br/>API κ°λ°]
ARCH --> DB[Database Dev<br/>μ€ν€λ§ μ€κ³]
BACK --> FRONT[Frontend Dev<br/>UI ꡬν]
DB --> BACK
FRONT --> TEST[Testing<br/>ν
μ€νΈ μμ±]
BACK --> TEST
TEST --> SEC[Security<br/>보μ κ²ν ]
SEC --> OPS[DevOps<br/>λ°°ν¬]
```
#### μ€μ λν νλ¦:
**Session 1 - Product Manager Role:**
```
μ¬μ©μ: "μ μμκ±°λ νλ«νΌμ λ§λ€μ΄μΌ ν΄"
Claude PM:
β register_session_role("product-manager")
β create_project("E-commerce Platform")
β track_epic("User Management", priority: "high")
β track_epic("Product Catalog", priority: "high")
β track_epic("Shopping Cart", priority: "critical")
β track_epic("Payment System", priority: "critical")
β create_prioritized_task(
"Design database schema for products",
requiredSkills: ["PostgreSQL", "Data Modeling"],
preferredRole: "database",
priority: "high"
)
```
**Session 2 - Database Role:**
```
Claude DB:
β register_session_role("database", ["PostgreSQL", "Redis", "Data Modeling"])
β claim_next_task()
β λ°μ μμ
: "Design database schema for products" (High Priority)
β [μ€ν€λ§ μ€κ³ μμ
...]
β update_progress("completed", "Schema designed with categories, variants, inventory")
β handoff_work("Backend team can now implement Product API")
```
**Session 3 - Backend Role:**
```
Claude Backend:
β register_session_role("backend", ["Node.js", "Express", "REST API"])
β claim_next_task()
β λ°μ μμ
: "Implement Product API" (High Priority)
β [API ꡬν...]
β create_prioritized_task(
"Create product listing UI",
preferredRole: "frontend",
dependencies: ["product-api"],
priority: "medium"
)
```
**Session 4 - Frontend Role:**
```
Claude Frontend:
β register_session_role("frontend", ["React", "Redux", "TailwindCSS"])
β get_role_workload()
β νμ¬ Backend: 3 tasks, Frontend: 1 task, Testing: 0 tasks
β claim_next_task()
β λ°μ μμ
: "Create product listing UI" (Medium Priority)
```
### μλλ¦¬μ€ 2: κΈ΄κΈ λ³΄μ μ΄μ μ²λ¦¬
```
Session A (Testing):
β "SQL injection μ·¨μ½μ λ°κ²¬!"
β escalate_task("user-login-api", "critical", "security", "SQL injection found in login")
Session B (Security) - μλ μλ¦Ό:
β claim_next_task()
β λ°μ μμ
: "Fix SQL injection in login" (CRITICAL Priority)
β [보μ ν¨μΉ μμ
...]
β request_role_specific_help("backend", "Need immediate review", context: "...")
Session C (Backend) - μλ μλ¦Ό:
β "Security νμμ κΈ΄κΈ λ¦¬λ·° μμ²"
β [μ½λ 리뷰 λ° μμ ...]
β update_task_assignment("deploy-hotfix", "devops", "critical")
Session D (DevOps) - μλ μλ¦Ό:
β "Critical 보μ ν¨μΉ λ°°ν¬ νμ"
β [κΈ΄κΈ λ°°ν¬ νλ‘μΈμ€...]
```
## π μ°μ μμ κΈ°λ° μμ
ν
### νμ¬ μμ
ν μν:
```json
{
"critical": [
{
"id": "fix-payment-bug",
"title": "Payment processing fails",
"assignedTo": "backend-session-2",
"estimatedHours": 4
}
],
"high": [
{
"id": "implement-auth",
"title": "User authentication system",
"assignedTo": "fullstack-session-1",
"estimatedHours": 8
},
{
"id": "database-optimization",
"title": "Optimize slow queries",
"assignedTo": "database-session-1",
"estimatedHours": 3
}
],
"medium": [
{
"id": "product-ui",
"title": "Product listing page",
"assignedTo": "frontend-session-1",
"estimatedHours": 6
}
],
"low": [
{
"id": "update-docs",
"title": "Update API documentation",
"assignedTo": "pool",
"estimatedHours": 2
}
]
}
```
## π€ μλ ν λΉ λ‘μ§
```python
# μμ¬ μ½λ
def auto_assign_task(task):
priority = determine_priority(task) # ν€μλ λΆμμΌλ‘ μ°μ μμ κ²°μ
# 1. νμ μ€ν¬ λ§€μΉ
best_session = find_best_match(
required_skills=task.skills,
preferred_role=task.role,
availability=True
)
# 2. λ‘λ λ°Έλ°μ±
if best_session.current_load > MAX_LOAD:
best_session = find_alternative_session()
# 3. μ°μ μμλ³ ν λ°°μΉ
if priority == "critical":
assign_immediately(best_session, task)
else:
add_to_queue(priority, task)
return assignment
```
## π‘ λ² μ€νΈ νλν°μ€
### 1. μΈμ
μμ μ
```
νμ μν λ±λ‘:
β register_session_role("your-role", ["your", "skills"])
β get_role_workload() # νμ¬ μν© νμ
β claim_next_task() # μ μ ν μμ
λ°κΈ°
```
### 2. μμ
μμ± μ
```
μ°μ μμ μλ κ²°μ νμ©:
β create_prioritized_task(
title="Fix user login", # "Fix" + "login" = High Priority μλ
description="Users cannot login with email",
requiredSkills=["Authentication", "JWT"]
)
```
### 3. νμ
νμ μ
```
νΉμ μν μ λμ μμ²:
β request_role_specific_help(
targetRole="database",
issue="Query taking 10+ seconds",
priority="high"
)
```
### 4. μμ€μ»¬λ μ΄μ
```
볡μ‘λ μ¦κ° λ°κ²¬ μ:
β escalate_task(
taskId="simple-feature",
newPriority="critical",
escalateToRole="architect",
reason="Requires complete system redesign"
)
```
## π μν¬λ‘λ λΆμ° λμ보λ
```
Current Load Distribution:
ββββββββββββββββββββββββββββββββββββββ
Backend ββββββββββββββββ 75% (3 sessions, 12 tasks)
Frontend ββββββββββββββββ 50% (2 sessions, 8 tasks)
Database ββββββββββββββββ 25% (1 session, 2 tasks)
Testing ββββββββββββββββ 87% (2 sessions, 14 tasks)
DevOps ββββββββββββββββ 12% (1 session, 1 task)
ββββββββββββββββββββββββββββββββββββββ
β οΈ Testing role is overloaded!
β Redistributing low-priority tasks to available sessions...
```
## π μλ μ¬λΆλ°°
μΈμ
μ΄ λμ΄μ§λ©΄:
1. ν΄λΉ μΈμ
μ Critical/High μμ
β κ°μ μν μ λ€λ₯Έ μΈμ
2. Medium μμ
β μμ
νλ‘ λ°ν
3. Low μμ
β λκΈ° νμ μΆκ°
```javascript
// μΈμ
μ’
λ£ κ°μ§
on_session_disconnect(sessionId) {
tasks = get_assigned_tasks(sessionId)
for (task of tasks) {
if (task.priority >= "high") {
reassign_to_same_role(task)
} else {
return_to_pool(task)
}
}
}
```
μ΄μ Orchestryλ μλ²½ν ν νμ
λꡬμ
λλ€! π