Skip to main content
Glama

Hi-AI

npm version License: MIT MCP Compatible Tests Coverage

Model Context Protocol ๊ธฐ๋ฐ˜ AI ๊ฐœ๋ฐœ ์–ด์‹œ์Šคํ„ดํŠธ

TypeScript + Python ์ง€์› ยท 34๊ฐœ ์ „๋ฌธ ๋„๊ตฌ ยท ์ง€์‹ ๊ทธ๋ž˜ํ”„ ๋ฉ”๋ชจ๋ฆฌ ยท ์ฝ”๋“œ ์˜์กด์„ฑ ๋ถ„์„

ํ•œ๊ตญ์–ด


๋ชฉ์ฐจ


Related MCP server: Magic Component Platform

๊ฐœ์š”

Hi-AI๋Š” Model Context Protocol (MCP) ํ‘œ์ค€์„ ๊ตฌํ˜„ํ•œ AI ๊ฐœ๋ฐœ ์–ด์‹œ์Šคํ„ดํŠธ์ž…๋‹ˆ๋‹ค. ์ž์—ฐ์–ด ๊ธฐ๋ฐ˜ ํ‚ค์›Œ๋“œ ์ธ์‹์„ ํ†ตํ•ด 34๊ฐœ์˜ ์ „๋ฌธํ™”๋œ ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ, ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ณต์žกํ•œ ์ž‘์—…์„ ์ง๊ด€์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•์Šต๋‹ˆ๋‹ค.

ํ•ต์‹ฌ ๊ฐ€์น˜

  • ์ž์—ฐ์–ด ๊ธฐ๋ฐ˜: ํ•œ๊ตญ์–ด/์˜์–ด ํ‚ค์›Œ๋“œ๋กœ ๋„๊ตฌ๋ฅผ ์ž๋™์œผ๋กœ ์‹คํ–‰

  • ์ง€์‹ ๊ทธ๋ž˜ํ”„ ๋ฉ”๋ชจ๋ฆฌ: ๋ฉ”๋ชจ๋ฆฌ ๊ฐ„ ๊ด€๊ณ„๋ฅผ ๊ทธ๋ž˜ํ”„๋กœ ๊ตฌ์„ฑํ•˜์—ฌ ์—ฐ๊ด€ ์ •๋ณด ํƒ์ƒ‰

  • ๋‹ค์ค‘ ์–ธ์–ด ์ง€์›: TypeScript, JavaScript, Python ์ฝ”๋“œ ๋ถ„์„

  • ์˜์กด์„ฑ ๋ถ„์„: ์ฝ”๋“œ ๊ฐ„ ์˜์กด ๊ด€๊ณ„ ์‹œ๊ฐํ™” ๋ฐ ์ˆœํ™˜ ์ฐธ์กฐ ๊ฐ์ง€

  • ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ํ’ˆ์งˆ: 100% ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ ๋ฐ ์—„๊ฒฉํ•œ ํƒ€์ž… ์‹œ์Šคํ…œ


์ฃผ์š” ๊ธฐ๋Šฅ

1. ์ง€์‹ ๊ทธ๋ž˜ํ”„ ๋ฉ”๋ชจ๋ฆฌ ์‹œ์Šคํ…œ (v2.0 ์‹ ๊ทœ)

๋ฉ”๋ชจ๋ฆฌ ๊ฐ„ ๊ด€๊ณ„๋ฅผ ๊ทธ๋ž˜ํ”„๋กœ ๊ตฌ์„ฑํ•˜์—ฌ ์—ฐ๊ด€ ์ •๋ณด๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” 10๊ฐœ์˜ ๋„๊ตฌ:

  • ๊ด€๊ณ„ ์—ฐ๊ฒฐ: ๋ฉ”๋ชจ๋ฆฌ ๊ฐ„ ์˜๋ฏธ๋ก ์  ๊ด€๊ณ„ ์„ค์ • (related_to, depends_on, implements ๋“ฑ)

  • ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰: BFS/DFS ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ†ตํ•œ ์—ฐ๊ด€ ๋ฉ”๋ชจ๋ฆฌ ํƒ์ƒ‰

  • ๋ฉ€ํ‹ฐ ์ „๋žต ๊ฒ€์ƒ‰: 5๊ฐ€์ง€ ๊ฒ€์ƒ‰ ์ „๋žต ์ง€์› (keyword, graph_traversal, temporal, priority, context_aware)

  • ํƒ€์ž„๋ผ์ธ: ์‹œ๊ฐ„์ˆœ ๋ฉ”๋ชจ๋ฆฌ ํžˆ์Šคํ† ๋ฆฌ ์‹œ๊ฐํ™”

์ฃผ์š” ๋„๊ตฌ:

  • save_memory - ์žฅ๊ธฐ ๋ฉ”๋ชจ๋ฆฌ์— ์ •๋ณด ์ €์žฅ

  • recall_memory - ์ €์žฅ๋œ ์ •๋ณด ๊ฒ€์ƒ‰

  • link_memories - ๋ฉ”๋ชจ๋ฆฌ ๊ฐ„ ๊ด€๊ณ„ ์—ฐ๊ฒฐ (v2.0 ์‹ ๊ทœ)

  • get_memory_graph - ์ง€์‹ ๊ทธ๋ž˜ํ”„ ์กฐํšŒ (v2.0 ์‹ ๊ทœ)

  • search_memories_advanced - ๋ฉ€ํ‹ฐ ์ „๋žต ๊ฒ€์ƒ‰ (v2.0 ์‹ ๊ทœ)

  • create_memory_timeline - ํƒ€์ž„๋ผ์ธ ์ƒ์„ฑ (v2.0 ์‹ ๊ทœ)

  • prioritize_memory - ๋ฉ”๋ชจ๋ฆฌ ์šฐ์„ ์ˆœ์œ„ ๊ด€๋ฆฌ

2. ์‹œ๋งจํ‹ฑ ์ฝ”๋“œ ๋ถ„์„

AST ๊ธฐ๋ฐ˜ ์ฝ”๋“œ ๋ถ„์„ ๋ฐ ํƒ์ƒ‰ ๋„๊ตฌ:

  • ์‹ฌ๋ณผ ๊ฒ€์ƒ‰: ํ”„๋กœ์ ํŠธ ์ „์ฒด์—์„œ ํ•จ์ˆ˜, ํด๋ž˜์Šค, ๋ณ€์ˆ˜ ์œ„์น˜ ํŒŒ์•…

  • ์ฐธ์กฐ ์ถ”์ : ํŠน์ • ์‹ฌ๋ณผ์˜ ๋ชจ๋“  ์‚ฌ์šฉ์ฒ˜ ์ถ”์ 

  • ์˜์กด์„ฑ ๊ทธ๋ž˜ํ”„: ์ฝ”๋“œ ๊ฐ„ ์˜์กด ๊ด€๊ณ„ ์‹œ๊ฐํ™” (v2.0 ์‹ ๊ทœ)

  • ์ˆœํ™˜ ์ฐธ์กฐ ๊ฐ์ง€: ์ˆœํ™˜ ์˜์กด์„ฑ ์ž๋™ ํƒ์ง€ (v2.0 ์‹ ๊ทœ)

  • ๋‹ค์ค‘ ์–ธ์–ด: TypeScript, JavaScript, Python ์ง€์›

์ฃผ์š” ๋„๊ตฌ:

  • find_symbol - ์‹ฌ๋ณผ ์ •์˜ ๊ฒ€์ƒ‰

  • find_references - ์‹ฌ๋ณผ ์ฐธ์กฐ ์ฐพ๊ธฐ

  • analyze_dependency_graph - ์˜์กด์„ฑ ๊ทธ๋ž˜ํ”„ ๋ถ„์„ (v2.0 ์‹ ๊ทœ)

3. ์ฝ”๋“œ ํ’ˆ์งˆ ๋ถ„์„

ํฌ๊ด„์ ์ธ ์ฝ”๋“œ ๋ฉ”ํŠธ๋ฆญ ๋ฐ ํ’ˆ์งˆ ํ‰๊ฐ€:

  • ๋ณต์žก๋„ ๋ถ„์„: Cyclomatic, Cognitive, Halstead ๋ฉ”ํŠธ๋ฆญ

  • ๊ฒฐํ•ฉ๋„/์‘์ง‘๋„: ๋ชจ๋“ˆ ๊ตฌ์กฐ ๊ฑด์ „์„ฑ ํ‰๊ฐ€

  • ํ’ˆ์งˆ ์ ์ˆ˜: A-F ๋“ฑ๊ธ‰ ์‹œ์Šคํ…œ

  • ๊ฐœ์„  ์ œ์•ˆ: ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๋ฆฌํŒฉํ† ๋ง ๋ฐฉ์•ˆ

์ฃผ์š” ๋„๊ตฌ:

  • analyze_complexity - ๋ณต์žก๋„ ๋ฉ”ํŠธ๋ฆญ ๋ถ„์„

  • validate_code_quality - ์ฝ”๋“œ ํ’ˆ์งˆ ํ‰๊ฐ€

  • check_coupling_cohesion - ๊ฒฐํ•ฉ๋„/์‘์ง‘๋„ ๋ถ„์„

  • suggest_improvements - ๊ฐœ์„  ์ œ์•ˆ

  • apply_quality_rules - ํ’ˆ์งˆ ๊ทœ์น™ ์ ์šฉ

  • get_coding_guide - ์ฝ”๋”ฉ ๊ฐ€์ด๋“œ ์กฐํšŒ

4. ํ”„๋กœ์ ํŠธ ๊ณ„ํš ๋„๊ตฌ

์ฒด๊ณ„์ ์ธ ์š”๊ตฌ์‚ฌํ•ญ ๋ถ„์„ ๋ฐ ๋กœ๋“œ๋งต ์ƒ์„ฑ:

  • PRD ์ƒ์„ฑ: ์ œํ’ˆ ์š”๊ตฌ์‚ฌํ•ญ ๋ฌธ์„œ ์ž๋™ ์ƒ์„ฑ

  • ์‚ฌ์šฉ์ž ์Šคํ† ๋ฆฌ: ์ˆ˜์šฉ ์กฐ๊ฑด ํฌํ•จ ์Šคํ† ๋ฆฌ ์ž‘์„ฑ

  • MoSCoW ๋ถ„์„: ์š”๊ตฌ์‚ฌํ•ญ ์šฐ์„ ์ˆœ์œ„ํ™”

  • ๋กœ๋“œ๋งต ์ž‘์„ฑ: ๋‹จ๊ณ„๋ณ„ ๊ฐœ๋ฐœ ์ผ์ • ๊ณ„ํš

์ฃผ์š” ๋„๊ตฌ:

  • generate_prd - ์ œํ’ˆ ์š”๊ตฌ์‚ฌํ•ญ ๋ฌธ์„œ ์ƒ์„ฑ

  • create_user_stories - ์‚ฌ์šฉ์ž ์Šคํ† ๋ฆฌ ์ž‘์„ฑ

  • analyze_requirements - ์š”๊ตฌ์‚ฌํ•ญ ๋ถ„์„

  • feature_roadmap - ๊ธฐ๋Šฅ ๋กœ๋“œ๋งต ์ƒ์„ฑ

5. ์ˆœ์ฐจ์  ์‚ฌ๊ณ  ๋„๊ตฌ

๊ตฌ์กฐํ™”๋œ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐ ์˜์‚ฌ๊ฒฐ์ • ์ง€์›:

  • ๋ฌธ์ œ ๋ถ„ํ•ด: ๋ณต์žกํ•œ ๋ฌธ์ œ๋ฅผ ๋‹จ๊ณ„๋ณ„๋กœ ๋ถ„ํ•ด

  • ์‚ฌ๊ณ  ์ฒด์ธ: ์ˆœ์ฐจ์  ์ถ”๋ก  ๊ณผ์ • ์ƒ์„ฑ

  • ๋‹ค์–‘ํ•œ ๊ด€์ : ๋ถ„์„์ /์ฐฝ์˜์ /์ฒด๊ณ„์ /๋น„ํŒ์  ์‚ฌ๊ณ 

  • ์‹คํ–‰ ๊ณ„ํš: ์ž‘์—…์„ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๊ณ„ํš์œผ๋กœ ๋ณ€ํ™˜

์ฃผ์š” ๋„๊ตฌ:

  • create_thinking_chain - ์‚ฌ๊ณ  ์ฒด์ธ ์ƒ์„ฑ

  • analyze_problem - ๋ฌธ์ œ ๋ถ„์„

  • step_by_step_analysis - ๋‹จ๊ณ„๋ณ„ ๋ถ„์„

  • format_as_plan - ๊ณ„ํš ํ˜•์‹ํ™”

6. ํ”„๋กฌํ”„ํŠธ ์—”์ง€๋‹ˆ์–ด๋ง

ํ”„๋กฌํ”„ํŠธ ํ’ˆ์งˆ ํ–ฅ์ƒ ๋ฐ ์ตœ์ ํ™”:

  • ์ž๋™ ๊ฐ•ํ™”: ๋ชจํ˜ธํ•œ ์š”์ฒญ์„ ๊ตฌ์ฒด์ ์œผ๋กœ ๋ณ€ํ™˜

  • ํ’ˆ์งˆ ํ‰๊ฐ€: ๋ช…ํ™•์„ฑ, ๊ตฌ์ฒด์„ฑ, ๋งฅ๋ฝ์„ฑ ์ ์ˆ˜ํ™”

  • Gemini ์ตœ์ ํ™”: Google Gemini API ํ”„๋กฌํ”„ํŒ… ์ „๋žต

์ฃผ์š” ๋„๊ตฌ:

  • enhance_prompt - ํ”„๋กฌํ”„ํŠธ ๊ฐ•ํ™”

  • analyze_prompt - ํ”„๋กฌํ”„ํŠธ ํ’ˆ์งˆ ๋ถ„์„

  • enhance_prompt_gemini - Gemini ํ”„๋กฌํ”„ํŒ… ์ „๋žต

7. ์ถ”๋ก  ํ”„๋ ˆ์ž„์›Œํฌ

๋ณต์žกํ•œ ๋ฌธ์ œ์˜ ์ฒด๊ณ„์  ๋ถ„์„:

  • 9๋‹จ๊ณ„ ์ถ”๋ก : ๋ฌธ์ œ ๋ถ„ํ•ด, ๊ฐ€์„ค ํƒ์ƒ‰, ์œ„ํ—˜ ํ‰๊ฐ€

  • ๋…ผ๋ฆฌ์  ๊ฒ€์ฆ: ์™„์ „์„ฑ๊ณผ ์ •๋ฐ€์„ฑ ๋ณด์žฅ

์ฃผ์š” ๋„๊ตฌ:

  • apply_reasoning_framework - 9๋‹จ๊ณ„ ์ถ”๋ก  ํ”„๋ ˆ์ž„์›Œํฌ

8. ์‚ฌ์šฉ ๋ถ„์„ (v2.0 ์‹ ๊ทœ)

๋„๊ตฌ ์‚ฌ์šฉ ํ†ต๊ณ„ ๋ฐ ๋ถ„์„:

  • ๋ฉ”๋ชจ๋ฆฌ ํ†ต๊ณ„: ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ๋ถ„ํฌ, ์‹œ๊ฐ„๋ณ„ ํ™œ๋™

  • ๊ทธ๋ž˜ํ”„ ๋ถ„์„: ์—ฐ๊ฒฐ ํ†ต๊ณ„, ํด๋Ÿฌ์Šคํ„ฐ ์ •๋ณด

์ฃผ์š” ๋„๊ตฌ:

  • get_usage_analytics - ์‚ฌ์šฉ ๋ถ„์„ ์กฐํšŒ

9. UI ํ”„๋ฆฌ๋ทฐ & ์‹œ๊ฐ„

  • preview_ui_ascii - ASCII UI ํ”„๋ฆฌ๋ทฐ

  • get_current_time - ํ˜„์žฌ ์‹œ๊ฐ„ ์กฐํšŒ


v2.0.0 ์—…๋ฐ์ดํŠธ

์ฃผ์š” ๋ณ€๊ฒฝ์‚ฌํ•ญ

Hi-AI v2.0.0์€ ์ง€์‹ ๊ทธ๋ž˜ํ”„ ๊ธฐ๋ฐ˜ ๋ฉ”๋ชจ๋ฆฌ ์‹œ์Šคํ…œ๊ณผ ๊ณ ๊ธ‰ ์ฝ”๋“œ ๋ถ„์„ ๊ธฐ๋Šฅ์„ ๋„์ž…ํ•œ ๋ฉ”์ด์ € ๋ฆด๋ฆฌ์Šค์ž…๋‹ˆ๋‹ค.

์‹ ๊ทœ ๊ธฐ๋Šฅ (6๊ฐœ ๋„๊ตฌ)

๋„๊ตฌ

์„ค๋ช…

link_memories

๋ฉ”๋ชจ๋ฆฌ ๊ฐ„ ๊ด€๊ณ„ ์—ฐ๊ฒฐ (์ง€์‹ ๊ทธ๋ž˜ํ”„)

get_memory_graph

์ง€์‹ ๊ทธ๋ž˜ํ”„ ์กฐํšŒ/์‹œ๊ฐํ™” (Mermaid ๋‹ค์ด์–ด๊ทธ๋žจ ์ง€์›)

search_memories_advanced

5๊ฐ€์ง€ ์ „๋žต์˜ ๋ฉ€ํ‹ฐ ๊ฒ€์ƒ‰

create_memory_timeline

์‹œ๊ฐ„์ˆœ ๋ฉ”๋ชจ๋ฆฌ ํƒ€์ž„๋ผ์ธ

analyze_dependency_graph

์ฝ”๋“œ ์˜์กด์„ฑ ๋ถ„์„ ๋ฐ ์ˆœํ™˜ ์ฐธ์กฐ ๊ฐ์ง€

get_usage_analytics

์‚ฌ์šฉ ํ†ต๊ณ„/๋ถ„์„

์•„ํ‚คํ…์ฒ˜ ๊ฐœ์„ 

  • index.ts: 37๊ฐœ switch case โ†’ ๋™์  ๋””์ŠคํŒจ์น˜ ํŒจํ„ด

  • MemoryManager: ์ง€์‹ ๊ทธ๋ž˜ํ”„ ๊ธฐ๋Šฅ ์ถ”๊ฐ€ (395์ค„ โ†’ 823์ค„)

  • ์ฝ”๋“œ ์ตœ์ ํ™”: ๋ถˆํ•„์š”ํ•œ ์˜์กด์„ฑ ์ œ๊ฑฐ (puppeteer-core)

์‚ญ์ œ๋œ ๋„๊ตฌ

๋„๊ตฌ

์ด์œ 

search_memories

search_memories_advanced๋กœ ๋Œ€์ฒด

auto_save_context

save_memory์— ํ†ตํ•ฉ

restore_session_context

recall_memory์— ํ†ตํ•ฉ

start_session

save_memory์— ํ†ตํ•ฉ

break_down_problem

analyze_problem์— ํ†ตํ•ฉ

think_aloud_process

step_by_step_analysis์™€ ์ค‘๋ณต

monitor_console_logs

๋‚ฎ์€ ์‚ฌ์šฉ๋ฅ 

inspect_network_requests

๋‚ฎ์€ ์‚ฌ์šฉ๋ฅ 

๋ณ€๊ฒฝ ์š”์•ฝ

ํ•ญ๋ชฉ

v1.4.0

v2.0.0

๋ณ€ํ™”

๋„๊ตฌ ๊ฐœ์ˆ˜

37๊ฐœ

34๊ฐœ

-3๊ฐœ

MemoryManager

395์ค„

823์ค„

+428์ค„

๊ฒ€์ƒ‰ ์ „๋žต

1๊ฐ€์ง€

5๊ฐ€์ง€

+400%

๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰

์—†์Œ

BFS/DFS

์‹ ๊ทœ

์˜์กด์„ฑ ๋ถ„์„

์—†์Œ

์ˆœํ™˜ ๊ฐ์ง€

์‹ ๊ทœ


์„ค์น˜

์‹œ์Šคํ…œ ์š”๊ตฌ์‚ฌํ•ญ

  • Node.js 18.0 ์ด์ƒ

  • TypeScript 5.0 ์ด์ƒ

  • MCP ํ˜ธํ™˜ ํด๋ผ์ด์–ธํŠธ (Claude Desktop, Cursor, Windsurf)

  • Python 3.x (Python ์ฝ”๋“œ ๋ถ„์„ ์‹œ)

์„ค์น˜ ๋ฐฉ๋ฒ•

NPM ํŒจํ‚ค์ง€

# ๊ธ€๋กœ๋ฒŒ ์„ค์น˜ npm install -g @su-record/hi-ai # ๋กœ์ปฌ ์„ค์น˜ npm install @su-record/hi-ai

Smithery ํ”Œ๋žซํผ

# ์›ํด๋ฆญ ์„ค์น˜ https://smithery.ai/server/@su-record/hi-ai

MCP ํด๋ผ์ด์–ธํŠธ ์„ค์ •

Claude Desktop ๋˜๋Š” ๋‹ค๋ฅธ MCP ํด๋ผ์ด์–ธํŠธ์˜ ์„ค์ • ํŒŒ์ผ์— ์ถ”๊ฐ€:

{ "mcpServers": { "hi-ai": { "command": "hi-ai", "args": [], "env": {} } } }

๋„๊ตฌ ์นดํƒˆ๋กœ๊ทธ

์ „์ฒด ๋„๊ตฌ ๋ชฉ๋ก (34๊ฐœ)

์นดํ…Œ๊ณ ๋ฆฌ

๋„๊ตฌ ์ˆ˜

๋„๊ตฌ ๋ชฉ๋ก

๋ฉ”๋ชจ๋ฆฌ - ๊ธฐ๋ณธ

6

save_memory, recall_memory, list_memories, delete_memory, update_memory, prioritize_memory

๋ฉ”๋ชจ๋ฆฌ - ๊ทธ๋ž˜ํ”„

4

link_memories, get_memory_graph, search_memories_advanced, create_memory_timeline

์ฝ”๋“œ ๋ถ„์„

3

find_symbol, find_references, analyze_dependency_graph

์‚ฌ๊ณ 

4

create_thinking_chain, analyze_problem, step_by_step_analysis, format_as_plan

์ฝ”๋“œ ํ’ˆ์งˆ

6

analyze_complexity, validate_code_quality, check_coupling_cohesion, suggest_improvements, apply_quality_rules, get_coding_guide

๊ณ„ํš

4

generate_prd, create_user_stories, analyze_requirements, feature_roadmap

ํ”„๋กฌํ”„ํŠธ

3

enhance_prompt, analyze_prompt, enhance_prompt_gemini

์ถ”๋ก 

1

apply_reasoning_framework

๋ถ„์„

1

get_usage_analytics

UI

1

preview_ui_ascii

์‹œ๊ฐ„

1

get_current_time

ํ‚ค์›Œ๋“œ ๋งคํ•‘ ์˜ˆ์‹œ

๋ฉ”๋ชจ๋ฆฌ ๋„๊ตฌ

๋„๊ตฌ

ํ•œ๊ตญ์–ด

์˜์–ด

save_memory

๊ธฐ์–ตํ•ด, ์ €์žฅํ•ด

remember, save this

recall_memory

๋– ์˜ฌ๋ ค, ๊ธฐ์–ต๋‚˜

recall, remind me

link_memories

์—ฐ๊ฒฐํ•ด, ๊ด€๊ณ„

link, connect

get_memory_graph

๊ทธ๋ž˜ํ”„, ๊ด€๊ณ„๋„

graph, relations

search_memories_advanced

๊ณ ๊ธ‰ ๊ฒ€์ƒ‰, ์ฐพ์•„

advanced search, find

์ฝ”๋“œ ๋ถ„์„ ๋„๊ตฌ

๋„๊ตฌ

ํ•œ๊ตญ์–ด

์˜์–ด

find_symbol

ํ•จ์ˆ˜ ์ฐพ์•„, ํด๋ž˜์Šค ์–ด๋””

find function, where is

analyze_dependency_graph

์˜์กด์„ฑ, ๊ด€๊ณ„

dependency, relations

analyze_complexity

๋ณต์žก๋„, ๋ณต์žกํ•œ์ง€

complexity, how complex

validate_code_quality

ํ’ˆ์งˆ, ๋ฆฌ๋ทฐ

quality, review


์•„ํ‚คํ…์ฒ˜

์‹œ์Šคํ…œ ๊ตฌ์กฐ

graph TB subgraph "Client Layer" A[Claude Desktop / Cursor / Windsurf] end subgraph "MCP Server" B[Hi-AI v2.0.0] end subgraph "Core Libraries" C1[MemoryManager + Graph] C2[ContextCompressor] C3[ProjectCache] C4[PythonParser] end subgraph "Tool Categories" D1[Memory Basic x6] D2[Memory Graph x4] D3[Code Analysis x3] D4[Thinking Tools x4] D5[Quality Tools x6] D6[Planning Tools x4] D7[Prompt Tools x3] D8[Reasoning x1] D9[Analytics x1] D10[UI/Time x2] end subgraph "Data Layer" E1[(SQLite Database)] E2[Project Files] end A <--> B B --> C1 & C2 & C3 & C4 B --> D1 & D2 & D3 & D4 & D5 & D6 & D7 & D8 & D9 & D10 C1 --> E1 C3 --> E2 C4 --> E2 D1 --> C1 & C2 D2 --> C1 D3 --> C3 & C4 D5 --> C4 D9 --> C1

ํ•ต์‹ฌ ์ปดํฌ๋„ŒํŠธ

MemoryManager (v2.0 ํ™•์žฅ)

  • ์—ญํ• : ์˜๊ตฌ ๋ฉ”๋ชจ๋ฆฌ ์ €์žฅ์†Œ ๋ฐ ์ง€์‹ ๊ทธ๋ž˜ํ”„ ๊ด€๋ฆฌ

  • ๊ธฐ์ˆ : SQLite, better-sqlite3

  • ๊ธฐ๋Šฅ: CRUD, ๊ฒ€์ƒ‰, ์šฐ์„ ์ˆœ์œ„, ๊ทธ๋ž˜ํ”„ ๊ด€๊ณ„, BFS/DFS ํƒ์ƒ‰

  • ์ตœ์ ํ™”: WAL ๋ชจ๋“œ, ์ธ๋ฑ์‹ฑ, Prepared Statements

ContextCompressor

  • ์—ญํ• : ์ปจํ…์ŠคํŠธ ์••์ถ• ๊ด€๋ฆฌ

  • ์•Œ๊ณ ๋ฆฌ์ฆ˜: ์šฐ์„ ์ˆœ์œ„ ๊ธฐ๋ฐ˜ ์••์ถ•

  • ๊ธฐ๋Šฅ: ์ค‘์š”๋„์— ๋”ฐ๋ฅธ ์„ ํƒ์  ๋ณด์กด

ProjectCache

  • ์—ญํ• : ts-morph ํ”„๋กœ์ ํŠธ ์บ์‹ฑ

  • ์ „๋žต: LRU ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • ๊ธฐ๋Šฅ: ๋ฐ˜๋ณต ๋ถ„์„ ์„ฑ๋Šฅ ํ–ฅ์ƒ

  • ์ œํ•œ: 100MB/ํ”„๋กœ์ ํŠธ, 200MB ์ „์ฒด

PythonParser

  • ์—ญํ• : Python ์ฝ”๋“œ AST ๋ถ„์„

  • ๋ฐฉ๋ฒ•: subprocess ์‹คํ–‰

  • ๊ธฐ๋Šฅ: ์‹ฌ๋ณผ ์ถ”์ถœ, ๋ณต์žก๋„ ๊ณ„์‚ฐ

  • ์•ˆ์ „: ํƒ€์ž„์•„์›ƒ, ์ž๋™ ์ •๋ฆฌ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ (v2.0)

-- memories ํ…Œ์ด๋ธ” CREATE TABLE memories ( key TEXT PRIMARY KEY, value TEXT NOT NULL, category TEXT NOT NULL DEFAULT 'general', timestamp TEXT NOT NULL, lastAccessed TEXT NOT NULL, priority INTEGER DEFAULT 0 ); -- memory_relations ํ…Œ์ด๋ธ” (v2.0 ์‹ ๊ทœ) CREATE TABLE memory_relations ( id INTEGER PRIMARY KEY AUTOINCREMENT, sourceKey TEXT NOT NULL, targetKey TEXT NOT NULL, relationType TEXT NOT NULL, strength REAL DEFAULT 1.0, metadata TEXT, timestamp TEXT NOT NULL, UNIQUE(sourceKey, targetKey, relationType) );

์„ฑ๋Šฅ

์ฃผ์š” ์ตœ์ ํ™”

ํ”„๋กœ์ ํŠธ ์บ์‹ฑ

  • LRU ์บ์‹œ๋ฅผ ํ†ตํ•œ ๋ฐ˜๋ณต ๋ถ„์„ ์„ฑ๋Šฅ ํ–ฅ์ƒ

  • 5๋ถ„ TTL๋กœ ์ตœ์‹  ์ƒํƒœ ์œ ์ง€

  • ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ์„ ํ†ตํ•œ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ

๋ฉ”๋ชจ๋ฆฌ ์ž‘์—…

  • SQLite ํŠธ๋žœ์žญ์…˜์œผ๋กœ ๋ฐฐ์น˜ ์ž‘์—… ์ตœ์ ํ™”

  • ์‹œ๊ฐ„ ๋ณต์žก๋„ ๊ฐœ์„ : O(nยฒ) โ†’ O(n)

  • ์ธ๋ฑ์‹ฑ์„ ํ†ตํ•œ ๋น ๋ฅธ ์กฐํšŒ

๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰ (v2.0)

  • BFS/DFS ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ํšจ์œจ์  ํƒ์ƒ‰

  • Union-Find๋กœ ํด๋Ÿฌ์Šคํ„ฐ ๊ฐ์ง€

  • ๊ฒฝ๋กœ ์ฐพ๊ธฐ ์ตœ์ ํ™”


๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ

ํ™˜๊ฒฝ ์„ค์ •

# ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ํด๋ก  git clone https://github.com/su-record/hi-ai.git cd hi-ai # ์˜์กด์„ฑ ์„ค์น˜ npm install # ๋นŒ๋“œ npm run build # ๊ฐœ๋ฐœ ๋ชจ๋“œ npm run dev

ํ…Œ์ŠคํŠธ

# ์ „์ฒด ํ…Œ์ŠคํŠธ ์‹คํ–‰ npm test # Watch ๋ชจ๋“œ npm run test:watch # UI ๋ชจ๋“œ npm run test:ui # ์ปค๋ฒ„๋ฆฌ์ง€ ๋ฆฌํฌํŠธ npm run test:coverage

์ฝ”๋“œ ์Šคํƒ€์ผ

  • TypeScript: strict ๋ชจ๋“œ

  • ํƒ€์ž…: src/types/tool.ts ์‚ฌ์šฉ

  • ํ…Œ์ŠคํŠธ: 100% ์ปค๋ฒ„๋ฆฌ์ง€ ์œ ์ง€

  • ์ปค๋ฐ‹: Conventional Commits ํ˜•์‹

์ƒˆ ๋„๊ตฌ ์ถ”๊ฐ€

  1. src/tools/category/ ๋””๋ ‰ํ† ๋ฆฌ์— ํŒŒ์ผ ์ƒ์„ฑ

  2. ToolDefinition ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„

  3. src/index.ts์˜ toolHandlers์— ๋“ฑ๋ก

  4. tests/unit/ ๋””๋ ‰ํ† ๋ฆฌ์— ํ…Œ์ŠคํŠธ ์ž‘์„ฑ

  5. README ์—…๋ฐ์ดํŠธ


๊ธฐ์—ฌ์ž

ํŠน๋ณ„ ๊ฐ์‚ฌ

  • Smithery - MCP ์„œ๋ฒ„ ๋ฐฐํฌ ๋ฐ ์›ํด๋ฆญ ์„ค์น˜ ํ”Œ๋žซํผ ์ œ๊ณต


๋ผ์ด์„ ์Šค

MIT License - ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉ, ์ˆ˜์ •, ๋ฐฐํฌ ๊ฐ€๋Šฅ


์ธ์šฉ

์ด ํ”„๋กœ์ ํŠธ๋ฅผ ์—ฐ๊ตฌ๋‚˜ ์ƒ์—…์  ์šฉ๋„๋กœ ์‚ฌ์šฉํ•˜์‹ค ๊ฒฝ์šฐ:

@software{hi-ai2024, author = {Su}, title = {Hi-AI: Knowledge Graph-Based MCP Server for AI-Assisted Development}, year = {2024}, version = {2.0.0}, url = {https://github.com/su-record/hi-ai} }

Star History

Star History Chart

Hi-AI v2.0.0

์ง€์‹ ๊ทธ๋ž˜ํ”„ ๋ฉ”๋ชจ๋ฆฌ ยท ๋ฉ€ํ‹ฐ ์ „๋žต ๊ฒ€์ƒ‰ ยท ์˜์กด์„ฑ ๋ถ„์„ ยท 34๊ฐœ ์ „๋ฌธ ๋„๊ตฌ

Made with โค๏ธ by Su

๐Ÿ  Homepage ยท ๐Ÿ“š Documentation ยท ๐Ÿ› Issues ยท ๐Ÿ’ฌ Discussions

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/su-record/hi-ai'

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