Skip to main content
Glama
FUNCTIONAL_REQUIREMENTS.mdโ€ข9.57 kB
# ๐Ÿ”ง ๊ธฐ๋Šฅ ์š”๊ตฌ์‚ฌํ•ญ - WorkflowMCP Dashboard API ## ๐ŸŽฏ ๊ฐœ์š” WorkflowMCP ๋Œ€์‹œ๋ณด๋“œ์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ REST API๋กœ ์ œ๊ณตํ•˜์—ฌ MCP ๋„๊ตฌ์™€ ์›น ๋Œ€์‹œ๋ณด๋“œ ๊ธฐ๋Šฅ์„ ํ†ตํ•ฉ์ ์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ## ๐Ÿ“‹ 1. PRD ๊ด€๋ฆฌ API ### 1.1 PRD CRUD ๊ธฐ๋Šฅ #### FR-PRD-001: PRD ๋ชฉ๋ก ์กฐํšŒ - **์—”๋“œํฌ์ธํŠธ**: `GET /api/prds` - **๊ธฐ๋Šฅ**: ๋“ฑ๋ก๋œ ๋ชจ๋“  PRD ๋ชฉ๋ก์„ ์กฐํšŒ - **ํŒŒ๋ผ๋ฏธํ„ฐ**: - `status` (์„ ํƒ): ์ƒํƒœ๋ณ„ ํ•„ํ„ฐ๋ง - `project_id` (์„ ํƒ): ํ”„๋กœ์ ํŠธ๋ณ„ ํ•„ํ„ฐ๋ง - `sort` (์„ ํƒ): ์ •๋ ฌ ๊ธฐ์ค€ (created_desc, updated_desc ๋“ฑ) - **์‘๋‹ต**: PRD ๋ชฉ๋ก๊ณผ ์ด ๊ฐœ์ˆ˜ #### FR-PRD-002: PRD ์ƒ์„ฑ - **์—”๋“œํฌ์ธํŠธ**: `POST /api/prds` - **๊ธฐ๋Šฅ**: ์ƒˆ๋กœ์šด PRD ๋ฌธ์„œ ์ƒ์„ฑ - **์ž…๋ ฅ**: title, description, requirements, acceptance_criteria, priority, status - **๊ฒ€์ฆ**: ํ•„์ˆ˜ ํ•„๋“œ ํ™•์ธ, ์ค‘๋ณต ์ œ๋ชฉ ๊ฒ€์‚ฌ - **์‘๋‹ต**: ์ƒ์„ฑ๋œ PRD ์ •๋ณด #### FR-PRD-003: PRD ์ƒ์„ธ ์กฐํšŒ - **์—”๋“œํฌ์ธํŠธ**: `GET /api/prds/{id}` - **๊ธฐ๋Šฅ**: ํŠน์ • PRD์˜ ์ƒ์„ธ ์ •๋ณด ์กฐํšŒ - **ํฌํ•จ**: ์—ฐ๊ฒฐ๋œ ๋ฌธ์„œ, ์ž‘์—…, ํ”„๋กœ์ ํŠธ ์ •๋ณด - **์‘๋‹ต**: PRD ์ „์ฒด ๋ฐ์ดํ„ฐ #### FR-PRD-004: PRD ์—…๋ฐ์ดํŠธ - **์—”๋“œํฌ์ธํŠธ**: `PUT /api/prds/{id}` - **๊ธฐ๋Šฅ**: ๊ธฐ์กด PRD ์ •๋ณด ์ˆ˜์ • - **๋ถ€๋ถ„ ์—…๋ฐ์ดํŠธ**: PATCH ๋ฐฉ์‹์œผ๋กœ ์ผ๋ถ€ ํ•„๋“œ๋งŒ ์ˆ˜์ • ๊ฐ€๋Šฅ - **๋ฒ„์ „ ๊ด€๋ฆฌ**: ์ˆ˜์ • ์‹œ updated_at ์ž๋™ ๊ฐฑ์‹  #### FR-PRD-005: PRD ์‚ญ์ œ - **์—”๋“œํฌ์ธํŠธ**: `DELETE /api/prds/{id}` - **๊ธฐ๋Šฅ**: PRD ์‚ญ์ œ (์—ฐ๊ฒฐ๋œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ) - **์•ˆ์ „์žฅ์น˜**: ์—ฐ๊ฒฐ๋œ ์ž‘์—…์ด ์žˆ์œผ๋ฉด ์‚ญ์ œ ๋ถˆ๊ฐ€ - **์†Œํ”„ํŠธ ์‚ญ์ œ**: ์‹ค์ œ ์‚ญ์ œ ๋Œ€์‹  ์ƒํƒœ ๋ณ€๊ฒฝ ์˜ต์…˜ ### 1.2 PRD ๋ฌธ์„œ ์—ฐ๊ฒฐ ๊ธฐ๋Šฅ #### FR-PRD-006: PRD ๋ฌธ์„œ ์—ฐ๊ฒฐ - **์—”๋“œํฌ์ธํŠธ**: `POST /api/prds/{id}/documents` - **๊ธฐ๋Šฅ**: PRD์— ๋ฌธ์„œ ์—ฐ๊ฒฐ - **์—ฐ๊ฒฐ ํƒ€์ž…**: specification, analysis, notes ๋“ฑ #### FR-PRD-007: PRD ์—ฐ๊ฒฐ ๋ฌธ์„œ ์กฐํšŒ - **์—”๋“œํฌ์ธํŠธ**: `GET /api/prds/{id}/documents` - **๊ธฐ๋Šฅ**: PRD์— ์—ฐ๊ฒฐ๋œ ๋ชจ๋“  ๋ฌธ์„œ ์กฐํšŒ - **ํ•„ํ„ฐ๋ง**: ๋ฌธ์„œ ํƒ€์ž…๋ณ„ ํ•„ํ„ฐ๋ง ๊ฐ€๋Šฅ ## ๐Ÿ“ 2. Task ๊ด€๋ฆฌ API ### 2.1 Task CRUD ๊ธฐ๋Šฅ #### FR-TASK-001: Task ๋ชฉ๋ก ์กฐํšŒ - **์—”๋“œํฌ์ธํŠธ**: `GET /api/tasks` - **๊ธฐ๋Šฅ**: ์ž‘์—… ๋ชฉ๋ก ์กฐํšŒ - **ํŒŒ๋ผ๋ฏธํ„ฐ**: status, priority, assignee, project_id - **์ •๋ ฌ**: ์ƒ์„ฑ์ผ, ์šฐ์„ ์ˆœ์œ„, ๋งˆ๊ฐ์ผ ๋“ฑ - **ํŽ˜์ด์ง•**: limit, offset ์ง€์› #### FR-TASK-002: Task ์ƒ์„ฑ - **์—”๋“œํฌ์ธํŠธ**: `POST /api/tasks` - **๊ธฐ๋Šฅ**: ์ƒˆ ์ž‘์—… ์ƒ์„ฑ - **์ž…๋ ฅ**: title, description, priority, assignee, due_date - **์ž๋™ ID**: ๊ณ ์œ  ID ์ž๋™ ์ƒ์„ฑ #### FR-TASK-003: Task ์ƒ์„ธ ์กฐํšŒ - **์—”๋“œํฌ์ธํŠธ**: `GET /api/tasks/{id}` - **๊ธฐ๋Šฅ**: ์ž‘์—… ์ƒ์„ธ ์ •๋ณด - **ํฌํ•จ**: ์˜์กด์„ฑ, ์—ฐ๊ฒฐ๋œ ๋ฌธ์„œ, ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค #### FR-TASK-004: Task ์—…๋ฐ์ดํŠธ - **์—”๋“œํฌ์ธํŠธ**: `PUT /api/tasks/{id}` - **๊ธฐ๋Šฅ**: ์ž‘์—… ์ •๋ณด ์ˆ˜์ • - **์ƒํƒœ ๋ณ€๊ฒฝ**: pending โ†’ in_progress โ†’ done - **์ง„ํ–‰๋ฅ **: estimated_hours, actual_hours ์ถ”์  #### FR-TASK-005: Task ์‚ญ์ œ - **์—”๋“œํฌ์ธํŠธ**: `DELETE /api/tasks/{id}` - **๊ธฐ๋Šฅ**: ์ž‘์—… ์‚ญ์ œ - **์˜์กด์„ฑ ํ™•์ธ**: ๋‹ค๋ฅธ ์ž‘์—…์ด ์˜์กดํ•˜๋Š” ๊ฒฝ์šฐ ์‚ญ์ œ ๋ถˆ๊ฐ€ ### 2.2 Task ์˜์กด์„ฑ ๊ด€๋ฆฌ #### FR-TASK-006: ์˜์กด์„ฑ ์ถ”๊ฐ€ - **์—”๋“œํฌ์ธํŠธ**: `POST /api/tasks/{id}/dependencies` - **๊ธฐ๋Šฅ**: ์ž‘์—… ๊ฐ„ ์˜์กด์„ฑ ์ƒ์„ฑ - **์ˆœํ™˜ ์˜์กด์„ฑ ๊ฒ€์‚ฌ**: ๋ฌดํ•œ ๋ฃจํ”„ ๋ฐฉ์ง€ #### FR-TASK-007: ์˜์กด์„ฑ ์กฐํšŒ - **์—”๋“œํฌ์ธํŠธ**: `GET /api/tasks/{id}/dependencies` - **๊ธฐ๋Šฅ**: ์ž‘์—…์˜ ์˜์กด์„ฑ ๊ทธ๋ž˜ํ”„ ์กฐํšŒ - **๋ฐฉํ–ฅ**: ์˜์กดํ•˜๋Š” ์ž‘์—…, ์˜์กด๋ฐ›๋Š” ์ž‘์—… ๋ชจ๋‘ ์ œ๊ณต #### FR-TASK-008: ์˜์กด์„ฑ ์‚ญ์ œ - **์—”๋“œํฌ์ธํŠธ**: `DELETE /api/tasks/{id}/dependencies/{dep_id}` - **๊ธฐ๋Šฅ**: ํŠน์ • ์˜์กด์„ฑ ๊ด€๊ณ„ ์ œ๊ฑฐ ## ๐Ÿ“„ 3. Document ๊ด€๋ฆฌ API ### 3.1 Document CRUD ๊ธฐ๋Šฅ #### FR-DOC-001: Document ๋ชฉ๋ก ์กฐํšŒ - **์—”๋“œํฌ์ธํŠธ**: `GET /api/documents` - **๊ธฐ๋Šฅ**: ๋ฌธ์„œ ๋ชฉ๋ก ์กฐํšŒ - **ํŒŒ๋ผ๋ฏธํ„ฐ**: doc_type, category, status, tags - **๊ฒ€์ƒ‰**: ์ œ๋ชฉ, ๋‚ด์šฉ ์ „๋ฌธ ๊ฒ€์ƒ‰ ์ง€์› #### FR-DOC-002: Document ์ƒ์„ฑ - **์—”๋“œํฌ์ธํŠธ**: `POST /api/documents` - **๊ธฐ๋Šฅ**: ์ƒˆ ๋ฌธ์„œ ์ƒ์„ฑ - **์ž…๋ ฅ**: title, content, doc_type, category, tags - **์ž๋™ ์ธ๋ฑ์‹ฑ**: FTS ๊ฒ€์ƒ‰ ์ธ๋ฑ์Šค ์ž๋™ ์ƒ์„ฑ #### FR-DOC-003: Document ์ƒ์„ธ ์กฐํšŒ - **์—”๋“œํฌ์ธํŠธ**: `GET /api/documents/{id}` - **๊ธฐ๋Šฅ**: ๋ฌธ์„œ ์ƒ์„ธ ์ •๋ณด - **ํฌํ•จ**: ์ „์ฒด ๋‚ด์šฉ, ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ, ์—ฐ๊ฒฐ ์ •๋ณด #### FR-DOC-004: Document ์—…๋ฐ์ดํŠธ - **์—”๋“œํฌ์ธํŠธ**: `PUT /api/documents/{id}` - **๊ธฐ๋Šฅ**: ๋ฌธ์„œ ์ˆ˜์ • - **๋ฒ„์ „ ๊ด€๋ฆฌ**: ์ˆ˜์ • ์ด๋ ฅ ์ถ”์  - **์žฌ์ธ๋ฑ์‹ฑ**: ๋‚ด์šฉ ๋ณ€๊ฒฝ ์‹œ ๊ฒ€์ƒ‰ ์ธ๋ฑ์Šค ์—…๋ฐ์ดํŠธ #### FR-DOC-005: Document ์‚ญ์ œ - **์—”๋“œํฌ์ธํŠธ**: `DELETE /api/documents/{id}` - **๊ธฐ๋Šฅ**: ๋ฌธ์„œ ์‚ญ์ œ - **์—ฐ๊ฒฐ ํ™•์ธ**: ๋‹ค๋ฅธ ์—”ํ‹ฐํ‹ฐ์™€์˜ ์—ฐ๊ฒฐ ๊ด€๊ณ„ ์ •๋ฆฌ ### 3.2 Document ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ #### FR-DOC-006: ์ „๋ฌธ ๊ฒ€์ƒ‰ - **์—”๋“œํฌ์ธํŠธ**: `GET /api/documents/search` - **๊ธฐ๋Šฅ**: ๋ฌธ์„œ ๋‚ด์šฉ ์ „๋ฌธ ๊ฒ€์ƒ‰ - **ํŒŒ๋ผ๋ฏธํ„ฐ**: query, doc_type, category, limit - **ํ•˜์ด๋ผ์ดํŒ…**: ๊ฒ€์ƒ‰์–ด ๊ฐ•์กฐ ํ‘œ์‹œ #### FR-DOC-007: ํƒœ๊ทธ ๊ธฐ๋ฐ˜ ๊ฒ€์ƒ‰ - **์—”๋“œํฌ์ธํŠธ**: `GET /api/documents/tags/{tag}` - **๊ธฐ๋Šฅ**: ํŠน์ • ํƒœ๊ทธ์˜ ๋ฌธ์„œ ์กฐํšŒ - **๊ด€๋ จ ํƒœ๊ทธ**: ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜๋Š” ํƒœ๊ทธ ์ถ”์ฒœ ## ๐Ÿ”— 4. ์—ฐ๊ฒฐ ๊ด€๋ฆฌ API ### 4.1 ์—”ํ‹ฐํ‹ฐ ์—ฐ๊ฒฐ ๊ธฐ๋Šฅ #### FR-CONN-001: ์—ฐ๊ฒฐ ์ƒ์„ฑ - **์—”๋“œํฌ์ธํŠธ**: `POST /api/connections` - **๊ธฐ๋Šฅ**: ์—”ํ‹ฐํ‹ฐ ๊ฐ„ ์—ฐ๊ฒฐ ์ƒ์„ฑ (PRD-Task, Task-Document ๋“ฑ) - **์—ฐ๊ฒฐ ํƒ€์ž…**: related, dependent, blocking, reference #### FR-CONN-002: ์—ฐ๊ฒฐ ์กฐํšŒ - **์—”๋“œํฌ์ธํŠธ**: `GET /api/connections` - **๊ธฐ๋Šฅ**: ๋ชจ๋“  ์—ฐ๊ฒฐ ๊ด€๊ณ„ ์กฐํšŒ - **ํ•„ํ„ฐ๋ง**: ์—”ํ‹ฐํ‹ฐ ํƒ€์ž…, ์—ฐ๊ฒฐ ํƒ€์ž…๋ณ„ ํ•„ํ„ฐ๋ง #### FR-CONN-003: ์—ฐ๊ฒฐ ์‚ญ์ œ - **์—”๋“œํฌ์ธํŠธ**: `DELETE /api/connections/{id}` - **๊ธฐ๋Šฅ**: ์—ฐ๊ฒฐ ๊ด€๊ณ„ ์ œ๊ฑฐ ## ๐Ÿ“Š 5. ๋Œ€์‹œ๋ณด๋“œ ๋ฐ์ดํ„ฐ API ### 5.1 ํ”„๋กœ์ ํŠธ ๋Œ€์‹œ๋ณด๋“œ #### FR-DASH-001: ํ”„๋กœ์ ํŠธ ๊ฐœ์š” - **์—”๋“œํฌ์ธํŠธ**: `GET /api/projects/{id}/dashboard` - **๊ธฐ๋Šฅ**: ํ”„๋กœ์ ํŠธ ์ „์ฒด ๊ฐœ์š” ๋ฐ์ดํ„ฐ - **ํฌํ•จ**: ์ง„ํ–‰๋ฅ , ์ž‘์—… ํ˜„ํ™ฉ, ์ตœ๊ทผ ํ™œ๋™ #### FR-DASH-002: ์ง„ํ–‰๋ฅ  ํƒ€์ž„๋ผ์ธ - **์—”๋“œํฌ์ธํŠธ**: `GET /api/projects/{id}/timeline` - **๊ธฐ๋Šฅ**: ํ”„๋กœ์ ํŠธ ์ง„ํ–‰๋ฅ  ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ - **๊ธฐ๊ฐ„**: ์ผ๋ณ„, ์ฃผ๋ณ„, ์›”๋ณ„ ์ง‘๊ณ„ #### FR-DASH-003: ์ž‘์—… ํ†ต๊ณ„ - **์—”๋“œํฌ์ธํŠธ**: `GET /api/projects/{id}/task-stats` - **๊ธฐ๋Šฅ**: ์ž‘์—… ์ƒํƒœ๋ณ„ ํ†ต๊ณ„ - **์ฐจํŠธ ๋ฐ์ดํ„ฐ**: ํŒŒ์ด์ฐจํŠธ, ๋ง‰๋Œ€์ฐจํŠธ์šฉ ๋ฐ์ดํ„ฐ ### 5.2 ์ „์ฒด ์‹œ์Šคํ…œ ๋Œ€์‹œ๋ณด๋“œ #### FR-DASH-004: ์‹œ์Šคํ…œ ๊ฐœ์š” - **์—”๋“œํฌ์ธํŠธ**: `GET /api/dashboard/overview` - **๊ธฐ๋Šฅ**: ์ „์ฒด ์‹œ์Šคํ…œ ํ˜„ํ™ฉ - **ํฌํ•จ**: ์ด PRD/Task/Document ์ˆ˜, ์ตœ๊ทผ ํ™œ๋™ #### FR-DASH-005: ํ™œ๋™ ํ”ผ๋“œ - **์—”๋“œํฌ์ธํŠธ**: `GET /api/dashboard/activities` - **๊ธฐ๋Šฅ**: ์ตœ๊ทผ ํ™œ๋™ ํ”ผ๋“œ - **์‹ค์‹œ๊ฐ„**: SSE๋ฅผ ํ†ตํ•œ ์‹ค์‹œ๊ฐ„ ์—…๋ฐ์ดํŠธ ## ๐Ÿ”„ 6. ๋ฐฐ์น˜ ์ž‘์—… API ### 6.1 ์ผ๊ด„ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ #### FR-BATCH-001: ์ผ๊ด„ PRD ์ฒ˜๋ฆฌ - **์—”๋“œํฌ์ธํŠธ**: `POST /api/batch/prds` - **๊ธฐ๋Šฅ**: ์—ฌ๋Ÿฌ PRD ์ผ๊ด„ ์ƒ์„ฑ/์—…๋ฐ์ดํŠธ - **ํŠธ๋žœ์žญ์…˜**: ์ „์ฒด ์„ฑ๊ณต ๋˜๋Š” ์ „์ฒด ์‹คํŒจ #### FR-BATCH-002: ์ผ๊ด„ Task ์ฒ˜๋ฆฌ - **์—”๋“œํฌ์ธํŠธ**: `POST /api/batch/tasks` - **๊ธฐ๋Šฅ**: ์—ฌ๋Ÿฌ ์ž‘์—… ์ผ๊ด„ ์ฒ˜๋ฆฌ - **์˜์กด์„ฑ**: ์ผ๊ด„ ์˜์กด์„ฑ ์„ค์ • ์ง€์› #### FR-BATCH-003: ์ผ๊ด„ Document ์ฒ˜๋ฆฌ - **์—”๋“œํฌ์ธํŠธ**: `POST /api/batch/documents` - **๊ธฐ๋Šฅ**: ์—ฌ๋Ÿฌ ๋ฌธ์„œ ์ผ๊ด„ ์ฒ˜๋ฆฌ - **์ธ๋ฑ์‹ฑ**: ์ผ๊ด„ ๊ฒ€์ƒ‰ ์ธ๋ฑ์Šค ์—…๋ฐ์ดํŠธ ## ๐Ÿ”” 7. ์‹ค์‹œ๊ฐ„ ์—…๋ฐ์ดํŠธ API ### 7.1 Server-Sent Events #### FR-SSE-001: ์‹ค์‹œ๊ฐ„ ์ด๋ฒคํŠธ ์ŠคํŠธ๋ฆผ - **์—”๋“œํฌ์ธํŠธ**: `GET /api/events/stream` - **๊ธฐ๋Šฅ**: ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ์•Œ๋ฆผ - **์ด๋ฒคํŠธ ํƒ€์ž…**: create, update, delete #### FR-SSE-002: ์ด๋ฒคํŠธ ํ•„ํ„ฐ๋ง - **ํŒŒ๋ผ๋ฏธํ„ฐ**: entity_type, project_id - **๊ธฐ๋Šฅ**: ํŠน์ • ์—”ํ‹ฐํ‹ฐ๋‚˜ ํ”„๋กœ์ ํŠธ์˜ ์ด๋ฒคํŠธ๋งŒ ์ˆ˜์‹  ## โšก 8. ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ธฐ๋Šฅ ### 8.1 ์บ์‹ฑ #### FR-CACHE-001: ์‘๋‹ต ์บ์‹ฑ - **๋Œ€์ƒ**: ์ž์ฃผ ์กฐํšŒ๋˜๋Š” ๋ฐ์ดํ„ฐ (๋ชฉ๋ก, ํ†ต๊ณ„) - **๋ฌดํšจํ™”**: ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ์‹œ ์ž๋™ ์บ์‹œ ๋ฌดํšจํ™” #### FR-CACHE-002: ์ฟผ๋ฆฌ ์ตœ์ ํ™” - **๊ธฐ๋Šฅ**: ๋ณต์žกํ•œ ์กฐ์ธ ์ฟผ๋ฆฌ ์ตœ์ ํ™” - **์ธ๋ฑ์‹ฑ**: ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๊ฒ€์ƒ‰ ์กฐ๊ฑด ์ธ๋ฑ์‹ฑ ### 8.2 ํŽ˜์ด์ง€๋„ค์ด์…˜ #### FR-PAGE-001: ์ปค์„œ ๊ธฐ๋ฐ˜ ํŽ˜์ด์ง• - **๋ชจ๋“  ๋ชฉ๋ก API**: cursor, limit ํŒŒ๋ผ๋ฏธํ„ฐ ์ง€์› - **์„ฑ๋Šฅ**: ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ์—์„œ๋„ ์ผ์ •ํ•œ ์„ฑ๋Šฅ ## ๐Ÿ” 9. ๊ฒ€์ƒ‰ ๋ฐ ํ•„ํ„ฐ๋ง ### 9.1 ๊ณ ๊ธ‰ ๊ฒ€์ƒ‰ #### FR-SEARCH-001: ๋ณตํ•ฉ ๊ฒ€์ƒ‰ - **๊ธฐ๋Šฅ**: ์—ฌ๋Ÿฌ ์กฐ๊ฑด์„ ์กฐํ•ฉํ•œ ๊ฒ€์ƒ‰ - **์—ฐ์‚ฐ์ž**: AND, OR, NOT ์ง€์› #### FR-SEARCH-002: ์ •๋ ฌ ์˜ต์…˜ - **๋‹ค์ค‘ ์ •๋ ฌ**: ์—ฌ๋Ÿฌ ํ•„๋“œ ์กฐํ•ฉ ์ •๋ ฌ - **์‚ฌ์šฉ์ž ์ •์˜**: ์‚ฌ์šฉ์ž ์ •์˜ ์ •๋ ฌ ๊ธฐ์ค€ ์ €์žฅ ## ๐Ÿ“‹ 10. ๋ฐ์ดํ„ฐ ๊ฒ€์ฆ ๋ฐ ๋ฌด๊ฒฐ์„ฑ ### 10.1 ์ž…๋ ฅ ๊ฒ€์ฆ #### FR-VALID-001: ์Šคํ‚ค๋งˆ ๊ฒ€์ฆ - **๋ชจ๋“  ์ž…๋ ฅ**: JSON ์Šคํ‚ค๋งˆ ๊ธฐ๋ฐ˜ ๊ฒ€์ฆ - **ํƒ€์ž… ๊ฒ€์‚ฌ**: ๋ฐ์ดํ„ฐ ํƒ€์ž… ๋ฐ ํ˜•์‹ ๊ฒ€์ฆ #### FR-VALID-002: ๋น„์ฆˆ๋‹ˆ์Šค ๊ทœ์น™ ๊ฒ€์ฆ - **์˜์กด์„ฑ**: ์ˆœํ™˜ ์˜์กด์„ฑ ๋ฐฉ์ง€ - **์ƒํƒœ ์ „์ด**: ์œ ํšจํ•œ ์ƒํƒœ ๋ณ€๊ฒฝ๋งŒ ํ—ˆ์šฉ ### 10.2 ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ #### FR-INTEG-001: ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ - **์™ธ๋ž˜ํ‚ค**: ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ ๊ฒ€์‚ฌ - **์นด์Šค์ผ€์ด๋“œ**: ์—ฐ๊ฒฐ๋œ ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ ์œ ์ง€ --- **์ž‘์„ฑ์ผ**: 2025-09-11 **์ž‘์„ฑ์ž**: ์š”๊ตฌ์‚ฌํ•ญ ๋ถ„์„๊ฐ€ (Claude Code) **๊ฒ€ํ† ์ž**: ์‹œ์Šคํ…œ ์„ค๊ณ„์ž **๋ฒ„์ „**: 1.0 **์ƒํƒœ**: ์ƒ์„ธ ์„ค๊ณ„ ๋Œ€๊ธฐ

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/foswmine/workflow-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server