Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

Β 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Simple Task MCP Server

κ°„λ‹¨ν•œ μž‘μ—… 관리 μ‹œμŠ€ν…œμ„ μœ„ν•œ MCP(Model Context Protocol) μ„œλ²„μž…λ‹ˆλ‹€. λ‹€λ₯Έ Task Manager 와 달리 μ‚¬μš©κ³Ό μ„€μΉ˜κ°€ 맀우 κ°„λ‹¨ν•˜κ³ , 직관적이며, μž‘μ—… λͺ©λ‘μ„ 순차적으둜 μ§„ν–‰ν•˜κ³  μ§„ν–‰ μƒνƒœλ₯Ό 좔적할 수 μžˆμŠ΅λ‹ˆλ‹€.

ν•΄μ•Όν•  일을 text νŒŒμΌμ— μ°¨λ‘€λŒ€λ‘œ ν•œ 문단씩 κΈ°μž…ν•˜κ³ , μ°¨λ‘€λŒ€λ‘œ ν•΄λ‹Ή 일을 μˆ˜ν–‰ν•˜κ²Œ λ©λ‹ˆλ‹€. 즉 할일 λͺ©λ‘ 처럼 ν”„λ‘¬ν”„νŠΈλ₯Ό μ—¬κ±°λž˜ λ§Œλ“  λ‹€μŒμ— ν•˜λ‚˜μ”© μˆ˜ν–‰ν•˜λŠ” 일을 ν•©λ‹ˆλ‹€. 할일 λͺ©λ‘μ„ μˆ˜μ •ν•˜κ±°λ‚˜ μΆ”κ°€ ν•˜κ±°λ‚˜ μ‚­μ œν•˜κ±°λ‚˜ 자유둭게 μ‚¬μš©κ°€λŠ₯ν•˜κ³ , μˆ˜μ •λœ λ‚΄μš©μ„ λ°”λ‘œ μ μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

🎯 κ°„λ‹¨ν•œ μ‚¬μš©λ²•

"ν˜„μž¬ ν•  일이 뭐지?"

tasks_peek()  # ν˜„μž¬ μž‘μ—… 확인

λ˜λŠ” μžμ—°μ–΄λ‘œ: "ν˜„μž¬ ν•  일이 뭐야?", "μ§€κΈˆ ν•΄μ•Ό ν•  μž‘μ—…μ€?", "λ‹€μŒμ— 뭘 ν•΄μ•Ό ν•΄?"

"λ‹€μŒ 일을 μˆ˜ν–‰ν•΄μ€˜"

tasks_next()  # λ‹€μŒ μž‘μ—… κ°€μ Έμ˜€κΈ°

λ˜λŠ” μžμ—°μ–΄λ‘œ: "λ‹€μŒ 일을 μˆ˜ν–‰ν•΄μ€˜", "λ‹€μŒ μž‘μ—…μ„ λ³΄μ—¬μ€˜", "λ‹€μŒ ν•  일은 뭐야?"

"할일 λͺ©λ‘μ„ λ³΄μ—¬μ€˜"

show_task_table()  # 전체 μž‘μ—… λͺ©λ‘ 확인 (ν‘œ ν˜•νƒœ)

λ˜λŠ” μžμ—°μ–΄λ‘œ: "할일 λͺ©λ‘μ„ λ³΄μ—¬μ€˜", "전체 μž‘μ—… λͺ©λ‘μ΄ 뭐야?", "λͺ‡ 개의 μž‘μ—…μ΄ μžˆμ–΄?"

"μƒμ„Έν•œ 할일 λͺ©λ‘μ„ λ³΄μ—¬μ€˜"

explain_tasks_detailed()  # 전체 λ‚΄μš©μ΄ ν¬ν•¨λœ 상세 λͺ©λ‘

λ˜λŠ” μžμ—°μ–΄λ‘œ: "μƒμ„Έν•œ 할일 λͺ©λ‘μ„ λ³΄μ—¬μ€˜", "전체 λ‚΄μš©κ³Ό ν•¨κ»˜ 할일 λͺ©λ‘μ„ λ³΄μ—¬μ€˜"

"μ²˜μŒλΆ€ν„° λ‹€μ‹œ μ‹œμž‘ν•˜κ³  μ‹Άμ–΄"

tasks_reset()  # μž‘μ—… 포인터 리셋

λ˜λŠ” μžμ—°μ–΄λ‘œ: "μ²˜μŒλΆ€ν„° λ‹€μ‹œ μ‹œμž‘ν•˜κ³  μ‹Άμ–΄", "μž‘μ—…μ„ λ¦¬μ…‹ν•΄μ€˜", "λ‹€μ‹œ μ²˜μŒλΆ€ν„° μ‹œμž‘ν•΄"

"νŠΉμ • μž‘μ—…μœΌλ‘œ κ±΄λ„ˆλ›°κ³  μ‹Άμ–΄"

tasks_goto(3)  # 4번째 μž‘μ—…μœΌλ‘œ 이동

λ˜λŠ” μžμ—°μ–΄λ‘œ: "3번째 μž‘μ—…μœΌλ‘œ κ±΄λ„ˆλ›°κ³  μ‹Άμ–΄", "4번째 μž‘μ—…μœΌλ‘œ μ΄λ™ν•΄μ€˜", "μž‘μ—… 3으둜 κ°€μ€˜"

"남은 할일을 λͺ¨λ‘ μˆ˜ν–‰ν•΄μ€˜"

tasks_auto()  # λͺ¨λ“  남은 μž‘μ—… μžλ™ μˆ˜ν–‰

λ˜λŠ” μžμ—°μ–΄λ‘œ: "남은 할일을 λͺ¨λ‘ μˆ˜ν–‰ν•΄μ€˜", "λͺ¨λ“  일을 λ‹€ ν•΄μ€˜", "λ‚˜λ¨Έμ§€ μž‘μ—…μ„ ν•œλ²ˆμ— μ²˜λ¦¬ν•΄μ€˜"

"νŠΉμ • 개수의 μž‘μ—…μ„ ν•œλ²ˆμ— μˆ˜ν–‰ν•΄μ€˜"

tasks_auto(3)  # 3개 μž‘μ—…μ„ ν•œλ²ˆμ— μˆ˜ν–‰

λ˜λŠ” μžμ—°μ–΄λ‘œ: "5개의 일을 ν•œλ²ˆμ— μˆ˜ν–‰ν•΄μ€˜", "3개 μž‘μ—…μ„ λ™μ‹œμ— μ²˜λ¦¬ν•΄μ€˜", "λ‹€μŒ 2개 μž‘μ—…μ„ ν•œλ²ˆμ— ν•΄μ€˜"

"ν”„λ‘œμ νŠΈμ— .simple 폴더λ₯Ό λ§Œλ“€μ–΄μ€˜"

touch_simple()  # .simple 디렉토리 생성

λ˜λŠ” μžμ—°μ–΄λ‘œ: "ν”„λ‘œμ νŠΈμ— .simple 폴더λ₯Ό λ§Œλ“€μ–΄μ€˜", "μž‘μ—… 폴더λ₯Ό μƒμ„±ν•΄μ€˜"

"μž‘μ—…μ„ μ™„λ£Œν•΄μ€˜"

tasks_complete(0)  # 0번 μž‘μ—…μ„ μ™„λ£Œλ‘œ ν‘œμ‹œ

λ˜λŠ” μžμ—°μ–΄λ‘œ: "0번 μž‘μ—…μ„ μ™„λ£Œν•΄μ€˜", "첫 번째 μž‘μ—…μ„ λλƒˆμ–΄"

"μž‘μ—…μ„ λ―Έμ™„λ£Œλ‘œ 되돌렀쀘"

tasks_uncomplete(0)  # 0번 μž‘μ—…μ„ λ―Έμ™„λ£Œλ‘œ 되돌리기

λ˜λŠ” μžμ—°μ–΄λ‘œ: "0번 μž‘μ—…μ„ λ―Έμ™„λ£Œλ‘œ 되돌렀쀘", "첫 번째 μž‘μ—…μ„ λ‹€μ‹œ ν•˜κ²Œ ν•΄μ€˜"

"μž‘μ—… μƒνƒœλ₯Ό μ΄ˆκΈ°ν™”ν•΄μ€˜"

tasks_reset_status()  # λͺ¨λ“  μž‘μ—…μ„ λŒ€κΈ° μ€‘μœΌλ‘œ 되돌리기

λ˜λŠ” μžμ—°μ–΄λ‘œ: "λͺ¨λ“  μž‘μ—… μƒνƒœλ₯Ό μ΄ˆκΈ°ν™”ν•΄μ€˜", "μž‘μ—… μƒνƒœλ₯Ό λ¦¬μ…‹ν•΄μ€˜"

"μž‘μ—… λͺ©λ‘κ³Ό μƒνƒœλ₯Ό λ™κΈ°ν™”ν•΄μ€˜"

sync_tasks()  # μž‘μ—… λͺ©λ‘κ³Ό μƒνƒœ κ°•μ œ 동기화

λ˜λŠ” μžμ—°μ–΄λ‘œ: "μž‘μ—… λͺ©λ‘κ³Ό μƒνƒœλ₯Ό λ™κΈ°ν™”ν•΄μ€˜", "λ™κΈ°ν™”ν•΄μ€˜"

"ν˜„μž¬ κ·œμΉ™μ„ λ³΄μ—¬μ€˜"

show_rules()  # ν˜„μž¬ μ μš©λ˜λŠ” κ·œμΉ™ ν‘œμ‹œ

λ˜λŠ” μžμ—°μ–΄λ‘œ: "ν˜„μž¬ κ·œμΉ™μ„ λ³΄μ—¬μ€˜", "μ μš©λ˜λŠ” κ·œμΉ™μ΄ 뭐야?"


πŸš€ 15개 ν•¨μˆ˜λ§Œ μ•Œλ©΄ 끝! λ³΅μž‘ν•œ μ„€μ •μ΄λ‚˜ λͺ…λ Ήμ–΄ 없이 κ°„λ‹¨ν•œ ν•¨μˆ˜ 호좜만으둜 μž‘μ—…μ„ 관리할 수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ’‘ μžμ—°μ–΄λ‘œλ„ μ‹€ν–‰ κ°€λŠ₯! Cursorλ‚˜ Claudeμ—μ„œλŠ” "λ‹€μŒ ν•  일이 뭐야?"라고 λ§ν•˜λ©΄ μžλ™μœΌλ‘œ tasks_next()κ°€ μ‹€ν–‰λ©λ‹ˆλ‹€.

πŸŽ‰ μžλ™ 감지: MCP μ„œλ²„κ°€ Cursor의 ν˜„μž¬ μ›Œν¬μŠ€νŽ˜μ΄μŠ€λ₯Ό μžλ™μœΌλ‘œ κ°μ§€ν•©λ‹ˆλ‹€!

πŸ”„ 2단계 μƒνƒœ μ‹œμŠ€ν…œ: λͺ¨λ“  μž‘μ—…μ€ λŒ€κΈ° 쀑([λŒ€κΈ°]) β†’ μ™„λ£Œ(βœ…) μˆœμ„œλ‘œ μ§„ν–‰λ©λ‹ˆλ‹€!

πŸ”’ μžλ™ λ³΄μ•ˆ: κΈ°λ³Έ λ³΄μ•ˆ κ·œμΉ™μ΄ μžλ™μœΌλ‘œ μ μš©λ˜μ–΄ μ€‘μš”ν•œ νŒŒμΌλ“€μ„ λ³΄ν˜Έν•©λ‹ˆλ‹€!

πŸ”„ μžλ™ 동기화: μž‘μ—… λͺ©λ‘μ΄ λ³€κ²½λ˜λ©΄ μžλ™μœΌλ‘œ μƒνƒœμ™€ λ™κΈ°ν™”λ©λ‹ˆλ‹€!

이게 μ „λΆ€μž…λ‹ˆλ‹€! λ³΅μž‘ν•œ μ„€μ •μ΄λ‚˜ λͺ…λ Ήμ–΄ 없이 κ°„λ‹¨ν•œ ν•¨μˆ˜ 호좜만으둜 μž‘μ—…μ„ 관리할 수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ’‘ μ‹€μ œ μ‚¬μš© μ˜ˆμ‹œ

1단계: μž‘μ—… 파일 μž‘μ„±

# .simple/simple_task.txt
둜그인 ν™”λ©΄ λ§Œλ“€κΈ°

λŒ€μ‹œλ³΄λ“œ κ΅¬ν˜„ν•˜κΈ°

μ‚¬μš©μž 관리 κΈ°λŠ₯ μΆ”κ°€ν•˜κΈ°

2단계: Cursorμ—μ„œ μ‚¬μš©

# 할일 λͺ©λ‘ 확인
show_task_table()
# 좜λ ₯: 
# | 번호 | μƒνƒœ | 할일 λ‚΄μš© |
# |------|------|-----------|
# | 0 | [λŒ€κΈ°] | 둜그인 ν™”λ©΄ λ§Œλ“€κΈ° |
# | 1 | [λŒ€κΈ°] | λŒ€μ‹œλ³΄λ“œ κ΅¬ν˜„ν•˜κΈ° |
# | 2 | [λŒ€κΈ°] | μ‚¬μš©μž 관리 κΈ°λŠ₯ μΆ”κ°€ν•˜κΈ° |

# ν˜„μž¬ μž‘μ—… 확인
tasks_peek()
# 좜λ ₯: πŸ“‹ ν˜„μž¬ μž‘μ—… 0: 둜그인 ν™”λ©΄ λ§Œλ“€κΈ°

# μž‘μ—… μ™„λ£Œ
tasks_complete(0)  # 0번 μž‘μ—… μ™„λ£Œ

# λ‹€μŒ μž‘μ—… μ§„ν–‰
tasks_next()
# 좜λ ₯: βœ… μž‘μ—… 0 μ™„λ£Œ ν›„ λ‹€μŒ μž‘μ—…μœΌλ‘œ μ§„ν–‰: λŒ€μ‹œλ³΄λ“œ κ΅¬ν˜„ν•˜κΈ°

λ˜λŠ” μžμ—°μ–΄λ‘œ:

  • "할일 λͺ©λ‘μ„ λ³΄μ—¬μ€˜" β†’ μžλ™μœΌλ‘œ show_task_table() μ‹€ν–‰
  • "ν˜„μž¬ ν•  일이 뭐야?" β†’ μžλ™μœΌλ‘œ tasks_peek() μ‹€ν–‰
  • "λ‹€μŒ ν•  일을 λ³΄μ—¬μ€˜" β†’ μžλ™μœΌλ‘œ tasks_next() μ‹€ν–‰

3단계: 계속 μ§„ν–‰

tasks_next()  # λŒ€μ‹œλ³΄λ“œ κ΅¬ν˜„ν•˜κΈ°
tasks_next()  # μ‚¬μš©μž 관리 κΈ°λŠ₯ μΆ”κ°€ν•˜κΈ°
# λͺ¨λ“  μž‘μ—… μ™„λ£Œ! βœ…

μžμ—°μ–΄λ‘œλ„ κ°€λŠ₯:

  • "0번 μž‘μ—…μ„ μ™„λ£Œν•΄μ€˜" β†’ 0번 μž‘μ—…μ„ μ™„λ£Œλ‘œ ν‘œμ‹œ
  • "λ‹€μŒ μž‘μ—…μ„ λ³΄μ—¬μ€˜" β†’ λŒ€μ‹œλ³΄λ“œ κ΅¬ν˜„ν•˜κΈ°
  • "κ·Έ λ‹€μŒμ€?" β†’ μ‚¬μš©μž 관리 κΈ°λŠ₯ μΆ”κ°€ν•˜κΈ°
  • "μž‘μ—… μƒνƒœλ₯Ό μ΄ˆκΈ°ν™”ν•΄μ€˜" β†’ λͺ¨λ“  μž‘μ—…μ„ λŒ€κΈ° μ€‘μœΌλ‘œ 되돌리기

μžλ™ μˆ˜ν–‰ κΈ°λŠ₯:

# 남은 λͺ¨λ“  μž‘μ—…μ„ ν•œλ²ˆμ— μˆ˜ν–‰
tasks_auto()
# 좜λ ₯: πŸš€ μžλ™μœΌλ‘œ λͺ¨λ“  남은 μž‘μ—…(2개)을 μ€€λΉ„ν–ˆμŠ΅λ‹ˆλ‹€: [1] λŒ€μ‹œλ³΄λ“œ κ΅¬ν˜„ν•˜κΈ°, [2] μ‚¬μš©μž 관리 κΈ°λŠ₯ μΆ”κ°€ν•˜κΈ°

# νŠΉμ • 개수의 μž‘μ—…λ§Œ μˆ˜ν–‰
tasks_auto(1)  # 1개 μž‘μ—…λ§Œ μˆ˜ν–‰

# μžμ—°μ–΄λ‘œλ„ κ°€λŠ₯
# "남은 할일을 λͺ¨λ‘ μˆ˜ν–‰ν•΄μ€˜" β†’ λͺ¨λ“  μž‘μ—… ν•œλ²ˆμ— 처리
# "5개의 일을 ν•œλ²ˆμ— μˆ˜ν–‰ν•΄μ€˜" β†’ 5개 μž‘μ—… λ™μ‹œ 처리

πŸš€ μ£Όμš” κΈ°λŠ₯

  • μž‘μ—… λͺ©λ‘ 관리: 빈 μ€„λ‘œ κ΅¬λΆ„λœ μž‘μ—…λ“€μ„ 순차적으둜 처리
  • 2단계 μƒνƒœ μ‹œμŠ€ν…œ: λŒ€κΈ°([λŒ€κΈ°]) β†’ μ™„λ£Œ(βœ…) μƒνƒœ 좔적
  • μ§„ν–‰ μƒνƒœ 좔적: ν˜„μž¬κΉŒμ§€ μ™„λ£Œλœ μž‘μ—… μΈλ±μŠ€μ™€ μƒνƒœ μ €μž₯
  • κ·œμΉ™ 적용: 각 μž‘μ—…μ— 곡톡 κ·œμΉ™ μžλ™ 적용
  • MCP ν˜Έν™˜: Cursor, Claude λ“± MCPλ₯Ό μ§€μ›ν•˜λŠ” 도ꡬ듀과 연동
  • μžμ—°μ–΄ μ‹€ν–‰: ν•¨μˆ˜λͺ…을 λͺ°λΌλ„ μžμ—°μ–΄λ‘œ μž‘μ—… μš”μ²­ κ°€λŠ₯
  • μžλ™ μˆ˜ν–‰: 남은 μž‘μ—…λ“€μ„ ν•œ λ²ˆμ— λ˜λŠ” μ§€μ •λœ 개수만큼 μžλ™ 처리
  • 배치 처리: μ—¬λŸ¬ μž‘μ—…μ„ λ™μ‹œμ— μ²˜λ¦¬ν•˜μ—¬ νš¨μœ¨μ„± κ·ΉλŒ€ν™”
  • μƒνƒœ μ œμ–΄: κ°œλ³„ μž‘μ—…μ˜ μ™„λ£Œ, λ―Έμ™„λ£Œ, μƒνƒœ μ΄ˆκΈ°ν™” κΈ°λŠ₯
  • μžλ™ 동기화: μž‘μ—… λͺ©λ‘ λ³€κ²½ μ‹œ μƒνƒœμ™€ μžλ™ 동기화
  • ν•΄μ‹œ 기반 μƒνƒœ 관리: μž‘μ—… λ‚΄μš© λ³€κ²½ μ‹œ μžλ™ 감지
  • λ³΄μ•ˆ κ·œμΉ™: κΈ°λ³Έ λ³΄μ•ˆ κ·œμΉ™ μžλ™ 적용으둜 μ€‘μš” 파일 보호

πŸ“ 파일 ꡬ쑰

ν”„λ‘œμ νŠΈ/
β”œβ”€β”€ .simple/
β”‚   β”œβ”€β”€ simple_task.txt      # μž‘μ—… λͺ©λ‘
β”‚   β”œβ”€β”€ simple_rule.txt      # 곡톡 κ·œμΉ™ (선택사항)
β”‚   └── simple_state.json    # μ§„ν–‰ μƒνƒœ
└── simple_task_mcp.py       # MCP μ„œλ²„

πŸ› οΈ μ„€μΉ˜ 방법

1. κ°€μƒν™˜κ²½ 생성 및 μ˜μ‘΄μ„± μ„€μΉ˜

# κ°€μƒν™˜κ²½ 생성
python -m venv venv

# κ°€μƒν™˜κ²½ ν™œμ„±ν™” (macOS/Linux)
source venv/bin/activate

# κ°€μƒν™˜κ²½ ν™œμ„±ν™” (Windows)
venv\Scripts\activate

# μ˜μ‘΄μ„± μ„€μΉ˜
pip install -r requirements.txt

2. Cursor μ„€μ • (μžλ™ μ‹€ν–‰)

μ„€μ • μ™„λ£Œ ν›„ Cursorλ₯Ό μž¬μ‹œμž‘ν•˜λ©΄ MCP μ„œλ²„κ°€ μžλ™μœΌλ‘œ μ‹€ν–‰λ©λ‹ˆλ‹€.

3. μˆ˜λ™ μ‹€ν–‰ (선택사항)

Cursor μ„€μ • 없이 μˆ˜λ™μœΌλ‘œ μ‹€ν–‰ν•˜λ €λ©΄:

# κΈ°λ³Έ μ‹€ν–‰
python simple_task_mcp.py

# λ˜λŠ” uv μ‚¬μš© (ꢌμž₯)
uv run simple_task_mcp.py

πŸ“ μ„€μ • 파일 μž‘μ„±

1. μž‘μ—… 파일 생성 (.simple/simple_task.txt)

첫 번째 μž‘μ—…μ„ μž‘μ„±ν•˜μ„Έμš”

두 번째 μž‘μ—…μ„ μž‘μ„±ν•˜μ„Έμš”
μ—¬λŸ¬ μ€„λ‘œ ꡬ성 κ°€λŠ₯ν•©λ‹ˆλ‹€

μ„Έ 번째 μž‘μ—…μ„ μž‘μ„±ν•˜μ„Έμš”

2. κ·œμΉ™ 파일 생성 (.simple/simple_rule.txt)

κ³΅ν†΅μœΌλ‘œ μ μš©ν•  κ·œμΉ™μ„ μž‘μ„±ν•˜μ„Έμš”
예: μ½”λ”© κ°€μ΄λ“œλΌμΈ, μž‘μ—… 원칙 λ“±

πŸ”§ Cursor μ„€μ • (μžλ™ μ‹€ν–‰)

Cursorμ—μ„œ MCP μ„œλ²„λ₯Ό μžλ™μœΌλ‘œ μ‹€ν–‰ν•˜λ €λ©΄ 섀정에 λ‹€μŒμ„ μΆ”κ°€ν•˜μ„Έμš”:

1. Cursor μ„€μ • 파일 μ—΄κΈ°

  • macOS: Cmd + , λ˜λŠ” Cursor > Preferences
  • Windows/Linux: Ctrl + , λ˜λŠ” File > Preferences > Settings

2. MCP μ„œλ²„ μ„€μ • μΆ”κ°€

μ„€μ •μ—μ„œ mcpServersλ₯Ό κ²€μƒ‰ν•˜κ³  λ‹€μŒ JSON을 μΆ”κ°€ν•˜μ„Έμš”:

macOS/Linux 예제:

{
  "mcpServers": {
    "simple-task-mcp": {
      "name": "Simple Task MCP",
      "command": "/Users/bert/simpletask/venv/bin/python",
      "args": [
        "/Users/bert/simpletask/simple_task_mcp.py",
        "--project-root",
        "."
      ],
      "type": "stdio",
      "env": {
        "PYTHONUNBUFFERED": "1"
      }
    }
  }
}

Windows 예제:

{
  "mcpServers": {
    "simple-task-mcp": {
      "name": "Simple Task MCP",
      "command": "D:/drumgit/simple_task_mcp/venv/Scripts/python.exe",
      "args": [
        "D:/drumgit/simple_task_mcp/simple_task_mcp.py",
        "--project-root",
        "."
      ],
      "type": "stdio",
      "env": {
        "PYTHONUNBUFFERED": "1"
      }
    }
  }
}

3. 경둜 μˆ˜μ •

μœ„ μ„€μ •μ—μ„œ λ‹€μŒ 경둜λ₯Ό μ‹€μ œ 경둜둜 μˆ˜μ •ν•˜μ„Έμš”:

  • command: κ°€μƒν™˜κ²½μ˜ Python μ‹€ν–‰ 파일 경둜
  • args: simple_task_mcp.py 파일의 μ ˆλŒ€ 경둜

4. μ€‘μš”: --project-root μ„€μ •

⚠️ ν•„μˆ˜ μ„€μ •: args 배열에 λ°˜λ“œμ‹œ "--project-root", "." λ₯Ό 포함해야 ν•©λ‹ˆλ‹€!

"args": [
  "/path/to/simple_task_mcp.py",
  "--project-root",
  "."
]

이 섀정이 μ—†μœΌλ©΄:

  • .simple 폴더가 MCP μ„œλ²„ μ‹€ν–‰ μœ„μΉ˜μ— μƒμ„±λ©λ‹ˆλ‹€
  • μ‹€μ œ μž‘μ—…ν•˜λŠ” ν”„λ‘œμ νŠΈ 폴더가 μ•„λ‹Œ λ‹€λ₯Έ 곳에 파일이 μƒμ„±λ©λ‹ˆλ‹€
  • MCP 도ꡬ가 μ˜¬λ°”λ₯Έ ν”„λ‘œμ νŠΈλ₯Ό μ°Ύμ§€ λͺ»ν•©λ‹ˆλ‹€

이 섀정이 있으면:

  • .simple 폴더가 ν˜„μž¬ Cursor μ›Œν¬μŠ€νŽ˜μ΄μŠ€μ— μƒμ„±λ©λ‹ˆλ‹€
  • simple_task.txt, simple_rule.txt, simple_state.json 파일이 μ˜¬λ°”λ₯Έ μœ„μΉ˜μ— μƒμ„±λ©λ‹ˆλ‹€

5. μžλ™ μ‹€ν–‰ 확인

μ„€μ • μ €μž₯ ν›„ Cursorλ₯Ό μž¬μ‹œμž‘ν•˜λ©΄:

  • MCP μ„œλ²„κ°€ μžλ™μœΌλ‘œ λ°±κ·ΈλΌμš΄λ“œμ—μ„œ μ‹€ν–‰
  • μž‘μ—… 도ꡬ듀이 μžλ™μœΌλ‘œ μ‚¬μš© κ°€λŠ₯
  • 별도 터미널 μ‹€ν–‰ λΆˆν•„μš”

μžλ™ 감지: MCP μ„œλ²„κ°€ Cursor의 ν˜„μž¬ μ›Œν¬μŠ€νŽ˜μ΄μŠ€ 루트(CWD)λ₯Ό μžλ™μœΌλ‘œ κ°μ§€ν•©λ‹ˆλ‹€!

🎯 μ‚¬μš© 방법

1. μž‘μ—… λͺ©λ‘ 및 μƒνƒœ 확인

show_task_table()         # λͺ¨λ“  μž‘μ—… λͺ©λ‘μ„ ν‘œ ν˜•νƒœλ‘œ ν‘œμ‹œ (μƒνƒœ 포함)
explain_tasks_detailed()  # 전체 λ‚΄μš©μ΄ ν¬ν•¨λœ 상세 μž‘μ—… λͺ©λ‘
tasks_peek()              # ν˜„μž¬ μž‘μ—… 확인 (μ§„ν–‰ν•˜μ§€ μ•ŠμŒ)
tasks_peek_with_rules()   # ν˜„μž¬ μž‘μ—… 확인 (κ·œμΉ™ 포함)

2. μž‘μ—… μƒνƒœ μ œμ–΄

tasks_complete(0)         # 0번 μž‘μ—…μ„ μ™„λ£Œλ‘œ ν‘œμ‹œ
tasks_uncomplete(0)       # 0번 μž‘μ—…μ„ λ―Έμ™„λ£Œλ‘œ 되돌리기
tasks_reset_status()      # λͺ¨λ“  μž‘μ—… μƒνƒœλ₯Ό λŒ€κΈ° μ€‘μœΌλ‘œ μ΄ˆκΈ°ν™”

3. μž‘μ—… μ§„ν–‰ 및 μ œμ–΄

tasks_next()              # λ‹€μŒ μž‘μ—… κ°€μ Έμ˜€κΈ° 및 μ§„ν–‰
tasks_next_with_rules()   # λ‹€μŒ μž‘μ—… κ°€μ Έμ˜€κΈ° 및 μ§„ν–‰ (κ·œμΉ™ 포함)
tasks_reset()             # μ²˜μŒλΆ€ν„° λ‹€μ‹œ μ‹œμž‘
tasks_goto(2)             # 3번째 μž‘μ—…μœΌλ‘œ 이동 (0λΆ€ν„° μ‹œμž‘)

4. μžλ™ μˆ˜ν–‰

tasks_auto()              # 남은 λͺ¨λ“  μž‘μ—…μ„ ν•œλ²ˆμ— μˆ˜ν–‰
tasks_auto(3)             # 3개 μž‘μ—…μ„ ν•œλ²ˆμ— μˆ˜ν–‰

5. μœ ν‹Έλ¦¬ν‹°

touch_simple()             # .simple 디렉토리 생성
show_rules()               # ν˜„μž¬ μ μš©λ˜λŠ” κ·œμΉ™ ν‘œμ‹œ
sync_tasks()               # μž‘μ—… λͺ©λ‘κ³Ό μƒνƒœ κ°•μ œ 동기화

πŸ“Š μƒνƒœ 파일

simple_state.json νŒŒμΌμ— ν˜„μž¬ μ§„ν–‰ μƒνƒœμ™€ μž‘μ—… μƒνƒœκ°€ μ €μž₯λ©λ‹ˆλ‹€:

{
  "index": 2,
  "completed_tasks": [0, 1],
  "completed_hashes": ["a1b2c3d4", "e5f6g7h8"],
  "task_hashes": {
    "0": "a1b2c3d4",
    "1": "e5f6g7h8",
    "2": "i9j0k1l2"
  }
}
  • index: 2λŠ” 3번째 μž‘μ—…κΉŒμ§€ μ™„λ£Œν–ˆλ‹€λŠ” 의미
  • completed_tasks: μ™„λ£Œλœ μž‘μ—… 번호 λͺ©λ‘
  • completed_hashes: μ™„λ£Œλœ μž‘μ—…μ˜ ν•΄μ‹œκ°’ λͺ©λ‘
  • task_hashes: 각 μž‘μ—…μ˜ ν˜„μž¬ ν•΄μ‹œκ°’
  • λ‹€μŒ μ‹€ν–‰ μ‹œ 4번째 μž‘μ—…λΆ€ν„° μ‹œμž‘

πŸ”„ μž‘μ—… μ§„ν–‰ 흐름

  1. μ΄ˆκΈ°ν™”: simple_state.jsonμ—μ„œ μ§„ν–‰ μƒνƒœμ™€ μž‘μ—… μƒνƒœ λ‘œλ“œ
  2. μž‘μ—… λ‘œλ”©: simple_task.txtμ—μ„œ μž‘μ—… λͺ©λ‘ 읽기
  3. κ·œμΉ™ 적용: simple_rule.txt의 κ·œμΉ™μ„ 각 μž‘μ—… μ•žμ— μΆ”κ°€
  4. μƒνƒœ 관리: 2단계 μƒνƒœ μ‹œμŠ€ν…œμœΌλ‘œ μž‘μ—… μ§„ν–‰ 좔적
  5. μž‘μ—… μ‹€ν–‰: 순차적으둜 μž‘μ—… μ§„ν–‰
  6. μƒνƒœ μ €μž₯: μ™„λ£Œλœ μž‘μ—… μΈλ±μŠ€μ™€ μƒνƒœλ₯Ό simple_state.json에 μ €μž₯
  7. μžλ™ 동기화: μž‘μ—… λͺ©λ‘ λ³€κ²½ μ‹œ μƒνƒœμ™€ μžλ™ 동기화

🎯 2단계 μƒνƒœ μ‹œμŠ€ν…œ

[λŒ€κΈ°] λŒ€κΈ° 쀑 (Waiting)

  • μž‘μ—…μ΄ 아직 μ‹œμž‘λ˜μ§€ μ•Šμ€ μƒνƒœ
  • κΈ°λ³Έ μƒνƒœλ‘œ, λͺ¨λ“  μƒˆ μž‘μ—…μ€ 이 μƒνƒœλ‘œ μ‹œμž‘
  • tasks_complete(index)둜 μ™„λ£Œλ‘œ λ³€κ²½ κ°€λŠ₯

βœ… μ™„λ£Œ (Completed)

  • μž‘μ—…μ΄ μ„±κ³΅μ μœΌλ‘œ μ™„λ£Œλœ μƒνƒœ
  • tasks_complete(index)둜 μ„€μ •
  • tasks_uncomplete(index)둜 λŒ€κΈ° μ€‘μœΌλ‘œ 되돌리기 κ°€λŠ₯
  • tasks_reset_status()둜 λͺ¨λ“  μž‘μ—…μ„ λŒ€κΈ° μ€‘μœΌλ‘œ μ΄ˆκΈ°ν™” κ°€λŠ₯

μƒνƒœ μ „ν™˜ 흐름

λŒ€κΈ° 쀑([λŒ€κΈ°]) ←→ μ™„λ£Œ(βœ…)

πŸ”’ μžλ™ λ³΄μ•ˆ κ·œμΉ™

λͺ¨λ“  μž‘μ—…μ— μžλ™μœΌλ‘œ μ μš©λ˜λŠ” κΈ°λ³Έ λ³΄μ•ˆ κ·œμΉ™:

# 🚨 κΈ°λ³Έ λ³΄μ•ˆ κ·œμΉ™ (μžλ™ 적용)
# - .simple 폴더와 κ·Έ μ•ˆμ˜ νŒŒμΌλ“€μ„ μ ˆλŒ€ μ‚­μ œν•˜μ§€ λ§ˆμ„Έμš”
# - simple_task.txt, simple_state.json, simple_rule.txt 등은 λ³΄μ‘΄λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€
# - ν•„μš”ν•˜λ©΄ λ‹€λ₯Έ 방법을 μ‚¬μš©ν•˜μ„Έμš” (예: 파일 λ‚΄μš© μˆ˜μ •, μƒˆ 파일 생성 λ“±)
# - 폴더 ꡬ쑰λ₯Ό λ³€κ²½ν•˜κ±°λ‚˜ μ‚­μ œν•˜μ§€ λ§ˆμ„Έμš”

🚨 문제 ν•΄κ²°

MCP μ„œλ²„ μ—°κ²° μ‹€νŒ¨

  1. μ›Œν¬μŠ€νŽ˜μ΄μŠ€ 확인: Cursorμ—μ„œ μ˜¬λ°”λ₯Έ ν”„λ‘œμ νŠΈ 폴더λ₯Ό μ—΄μ—ˆλŠ”μ§€ 확인
  2. κ°€μƒν™˜κ²½ 확인: μ˜¬λ°”λ₯Έ Python 경둜 μ‚¬μš©
  3. 파일 경둜 확인: .simple 디렉토리와 νŒŒμΌλ“€μ΄ μ‘΄μž¬ν•˜λŠ”μ§€ 확인
  4. Cursor μž¬μ‹œμž‘: μ„€μ • λ³€κ²½ ν›„ Cursor μ™„μ „ μž¬μ‹œμž‘
  5. μ„€μ • 확인: mcpServers 섀정이 μ˜¬λ°”λ₯Έμ§€ 확인
  6. μžλ™ 생성: .simple 폴더가 μ—†μœΌλ©΄ MCP μ„œλ²„κ°€ μžλ™μœΌλ‘œ μƒμ„±ν•©λ‹ˆλ‹€

μž‘μ—… 파일 였λ₯˜

  1. 파일 ν˜•μ‹: UTF-8 μΈμ½”λ”©μœΌλ‘œ μ €μž₯
  2. κ΅¬λΆ„μž: 빈 μ€„λ‘œ μž‘μ—…μ„ ꡬ뢄
  3. 파일 μœ„μΉ˜: .simple 디렉토리 내에 μœ„μΉ˜

μƒνƒœ 동기화 문제

  1. μžλ™ 동기화: sync_tasks()둜 κ°•μ œ 동기화
  2. ν•΄μ‹œ 확인: μž‘μ—… λ‚΄μš©μ΄ λ³€κ²½λ˜μ—ˆλŠ”μ§€ 확인
  3. μƒνƒœ μ΄ˆκΈ°ν™”: tasks_reset_status()둜 λͺ¨λ“  μƒνƒœ μ΄ˆκΈ°ν™”

πŸ› οΈ 전체 도ꡬ λͺ©λ‘ (15개)

도ꡬ μ„€λͺ… μ‚¬μš©λ²•
show_task_table() μž‘μ—… λͺ©λ‘μ„ ν‘œ ν˜•νƒœλ‘œ ν‘œμ‹œ show_task_table()
explain_tasks_detailed() μƒμ„Έν•œ μž‘μ—… λͺ©λ‘ ν‘œμ‹œ explain_tasks_detailed()
tasks_peek() ν˜„μž¬ μž‘μ—… 확인 tasks_peek()
tasks_peek_with_rules() ν˜„μž¬ μž‘μ—… 확인 (κ·œμΉ™ 포함) tasks_peek_with_rules()
tasks_complete(index) μž‘μ—…μ„ μ™„λ£Œλ‘œ ν‘œμ‹œ tasks_complete(0)
tasks_uncomplete(index) μž‘μ—…μ„ λ―Έμ™„λ£Œλ‘œ 되돌리기 tasks_uncomplete(0)
tasks_next() λ‹€μŒ μž‘μ—…μœΌλ‘œ μ§„ν–‰ tasks_next()
tasks_next_with_rules() λ‹€μŒ μž‘μ—…μœΌλ‘œ μ§„ν–‰ (κ·œμΉ™ 포함) tasks_next_with_rules()
tasks_reset() μ²˜μŒλΆ€ν„° λ‹€μ‹œ μ‹œμž‘ tasks_reset()
tasks_goto(index) νŠΉμ • μž‘μ—…μœΌλ‘œ 이동 tasks_goto(2)
tasks_auto(count) μžλ™μœΌλ‘œ μž‘μ—… μˆ˜ν–‰ tasks_auto() λ˜λŠ” tasks_auto(3)
tasks_reset_status() λͺ¨λ“  μž‘μ—… μƒνƒœ μ΄ˆκΈ°ν™” tasks_reset_status()
touch_simple() .simple 디렉토리 생성 touch_simple()
show_rules() ν˜„μž¬ μ μš©λ˜λŠ” κ·œμΉ™ ν‘œμ‹œ show_rules()
sync_tasks() μž‘μ—… λͺ©λ‘κ³Ό μƒνƒœ κ°•μ œ 동기화 sync_tasks()

πŸ“š μ˜ˆμ‹œ

μž‘μ—… 파일 μ˜ˆμ‹œ

둜그인 화면을 λ§Œλ“€μ–΄μ€˜

λŒ€μ‹œλ³΄λ“œλ₯Ό λ§Œλ“€μ–΄μ€˜

μ‚¬μš©μž 관리 κΈ°λŠ₯을 μΆ”κ°€ν•΄μ€˜
- μ‚¬μš©μž λͺ©λ‘ 쑰회
- μ‚¬μš©μž 정보 μˆ˜μ •
- μ‚¬μš©μž μ‚­μ œ

κ·œμΉ™ 파일 μ˜ˆμ‹œ

μ½”λ”© κ°€μ΄λ“œλΌμΈ:
1. λͺ…ν™•ν•˜κ³  읽기 μ‰¬μš΄ μ½”λ“œ μž‘μ„±
2. μ—λŸ¬ 처리λ₯Ό ν¬ν•¨ν•œ μ•ˆμ „ν•œ μ½”λ“œ μž‘μ„±
3. μ μ ˆν•œ 주석과 λ¬Έμ„œν™”

🀝 κΈ°μ—¬ν•˜κΈ°

버그 λ¦¬ν¬νŠΈλ‚˜ κΈ°λŠ₯ μ œμ•ˆμ€ 이슈둜 λ“±λ‘ν•΄μ£Όμ„Έμš”.

πŸ“‹ 전체 λ£° μ‹œμŠ€ν…œ

🎯 룰의 μ—­ν• 

simple_rule.txt νŒŒμΌμ— μž‘μ„±λœ 룰은 λͺ¨λ“  μž‘μ—…μ— μžλ™μœΌλ‘œ μ μš©λ©λ‹ˆλ‹€. 각 μž‘μ—…μ„ μ‹€ν–‰ν•  λ•Œλ§ˆλ‹€ 룰이 μžλ™μœΌλ‘œ μ•žμ— μΆ”κ°€λ˜μ–΄ μ „λ‹¬λ©λ‹ˆλ‹€.

πŸ“ λ£° μž‘μ„± 방법

# .simple/simple_rule.txt
μ½”λ”© κ°€μ΄λ“œλΌμΈ:
1. λͺ…ν™•ν•˜κ³  읽기 μ‰¬μš΄ μ½”λ“œ μž‘μ„±
2. μ—λŸ¬ 처리λ₯Ό ν¬ν•¨ν•œ μ•ˆμ „ν•œ μ½”λ“œ μž‘μ„±
3. μ μ ˆν•œ 주석과 λ¬Έμ„œν™”
4. λ³€μˆ˜λͺ…은 λˆ„κ°€ 봐도 μ•Œ 수 있게 λͺ…ν™•ν•˜κ²Œ μž‘μ„±
5. μ½”λ“œ 변경이 쉽도둝 절차적으둜 μž‘μ„±

πŸ”„ λ£° 적용 κ³Όμ •

  1. μž‘μ—… λ‘œλ”©: simple_task.txtμ—μ„œ μž‘μ—… λͺ©λ‘ 읽기
  2. λ£° λ‘œλ”©: simple_rule.txtμ—μ„œ 곡톡 λ£° 읽기
  3. μžλ™ κ²°ν•©: 각 μž‘μ—… μ•žμ— 룰을 μžλ™μœΌλ‘œ μΆ”κ°€
  4. 전달: 룰이 ν¬ν•¨λœ μ™„μ „ν•œ μž‘μ—…μ„ AIμ—κ²Œ 전달

πŸ’‘ μ‹€μ œ μ˜ˆμ‹œ

μž‘μ—… 파일 (.simple/simple_task.txt):

둜그인 화면을 λ§Œλ“€μ–΄μ€˜

λŒ€μ‹œλ³΄λ“œλ₯Ό κ΅¬ν˜„ν•΄μ€˜

룰 파일 (.simple/simple_rule.txt):

μ½”λ”© κ°€μ΄λ“œλΌμΈ:
- λͺ…ν™•ν•˜κ³  읽기 μ‰¬μš΄ μ½”λ“œ μž‘μ„±
- μ—λŸ¬ 처리λ₯Ό ν¬ν•¨ν•œ μ•ˆμ „ν•œ μ½”λ“œ μž‘μ„±

μ΅œμ’… μ „λ‹¬λ˜λŠ” μž‘μ—…:

μ½”λ”© κ°€μ΄λ“œλΌμΈ:
- λͺ…ν™•ν•˜κ³  읽기 μ‰¬μš΄ μ½”λ“œ μž‘μ„±
- μ—λŸ¬ 처리λ₯Ό ν¬ν•¨ν•œ μ•ˆμ „ν•œ μ½”λ“œ μž‘μ„±

둜그인 화면을 λ§Œλ“€μ–΄μ€˜

πŸš€ λ£° μ‹œμŠ€ν…œμ˜ μž₯점

  1. 일관성: λͺ¨λ“  μž‘μ—…μ— λ™μΌν•œ κ°€μ΄λ“œλΌμΈ 적용
  2. νš¨μœ¨μ„±: 맀번 룰을 볡사/λΆ™μ—¬λ„£κΈ° ν•  ν•„μš” μ—†μŒ
  3. μœ μ§€λ³΄μˆ˜: 룰만 μˆ˜μ •ν•˜λ©΄ λͺ¨λ“  μž‘μ—…μ— μžλ™ 반영
  4. ν’ˆμ§ˆ ν–₯상: AIκ°€ 항상 μ΅œμ‹  룰을 따라 μž‘μ—… μˆ˜ν–‰

πŸ”§ λ£° λ³€κ²½ μ‹œ μ£Όμ˜μ‚¬ν•­

  • λ£° 파일 μˆ˜μ • ν›„ MCP μ„œλ²„ μž¬μ‹œμž‘ ν•„μš”
  • 룰이 λ„ˆλ¬΄ κΈΈλ©΄ μž‘μ—… λ‚΄μš©μ΄ κ°€λ €μ§ˆ 수 있음
  • λ£°κ³Ό μž‘μ—… 사이에 μ μ ˆν•œ ꡬ뢄을 μœ„ν•œ 빈 쀄 포함 ꢌμž₯

πŸ”„ μžλ™ 동기화 μ‹œμŠ€ν…œ

🎯 λ™κΈ°ν™”μ˜ ν•„μš”μ„±

μž‘μ—… λͺ©λ‘(simple_task.txt)이 λ³€κ²½λ˜λ©΄ κΈ°μ‘΄ μƒνƒœ(simple_state.json)와 λΆˆμΌμΉ˜κ°€ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€.

πŸš€ μžλ™ 동기화 κΈ°λŠ₯

  • ν•΄μ‹œ 기반 감지: 각 μž‘μ—…μ˜ λ‚΄μš©μ„ ν•΄μ‹œκ°’μœΌλ‘œ μ €μž₯ν•˜μ—¬ λ³€κ²½ 감지
  • μžλ™ μƒνƒœ μ‘°μ •: μž‘μ—…μ΄ μΆ”κ°€/μ‚­μ œ/μˆ˜μ •λ˜λ©΄ μƒνƒœλ₯Ό μžλ™μœΌλ‘œ μ‘°μ •
  • μ™„λ£Œ μƒνƒœ 보쑴: 기쑴에 μ™„λ£Œλœ μž‘μ—…μ€ λ‚΄μš©μ΄ λ™μΌν•œ ν•œ μ™„λ£Œ μƒνƒœ μœ μ§€

πŸ’‘ 동기화 μ‚¬μš©λ²•

# μžλ™ 동기화 μ‹€ν–‰
sync_tasks()

# λ˜λŠ” μžμ—°μ–΄λ‘œ
# "μž‘μ—… λͺ©λ‘κ³Ό μƒνƒœλ₯Ό λ™κΈ°ν™”ν•΄μ€˜"

πŸ“Š 동기화 κ²°κ³Ό μ˜ˆμ‹œ

πŸ”„ μž‘μ—… λͺ©λ‘κ³Ό μƒνƒœ 동기화 μ™„λ£Œ!

πŸ“Š ν˜„μž¬ μƒνƒœ:
- 총 μž‘μ—… 수: 5개
- μ™„λ£Œλœ μž‘μ—…: 2개
- ν˜„μž¬ 인덱슀: 2

πŸ“‹ λ™κΈ°ν™”λœ μž‘μ—… λͺ©λ‘:
0. βœ… 둜그인 ν™”λ©΄ λ§Œλ“€κΈ° (ν•΄μ‹œ: a1b2c3d4)
1. βœ… λŒ€μ‹œλ³΄λ“œ κ΅¬ν˜„ν•˜κΈ° (ν•΄μ‹œ: e5f6g7h8)
2. [λŒ€κΈ°] μ‚¬μš©μž 관리 κΈ°λŠ₯ μΆ”κ°€ν•˜κΈ° (ν•΄μ‹œ: i9j0k1l2)
3. [λŒ€κΈ°] API λ¬Έμ„œ μž‘μ„±ν•˜κΈ° (ν•΄μ‹œ: m3n4o5p6)
4. [λŒ€κΈ°] ν…ŒμŠ€νŠΈ μ½”λ“œ μž‘μ„±ν•˜κΈ° (ν•΄μ‹œ: q7r8s9t0)

πŸ“„ λΌμ΄μ„ μŠ€

이 ν”„λ‘œμ νŠΈλŠ” MIT λΌμ΄μ„ μŠ€ ν•˜μ— λ°°ν¬λ©λ‹ˆλ‹€.

πŸš€ MIT λΌμ΄μ„ μŠ€λž€?

  • 자유둜운 μ‚¬μš©: μ‚¬μš©, μˆ˜μ •, 배포, 상업적 이용 λͺ¨λ‘ 자유
  • μ €μž‘κΆŒ ν‘œμ‹œ ν•„μˆ˜: μ›μž‘μžμ™€ λΌμ΄μ„ μŠ€ 정보λ₯Ό μœ μ§€ν•΄μ•Ό 함
  • λ©΄μ±… μ‘°ν•­: "μžˆλŠ” κ·ΈλŒ€λ‘œ" 제곡, μ±…μž„ μ—†μŒ
  • ν˜Έν™˜μ„±: λ‹€λ₯Έ λΌμ΄μ„ μŠ€μ™€ 잘 μ„žμ—¬μ„œ μ‚¬μš© κ°€λŠ₯

πŸ’‘ μ‚¬μš© μ˜ˆμ‹œ

# 이 μ½”λ“œλ₯Ό κ·ΈλŒ€λ‘œ μ‚¬μš© βœ…
# 이 μ½”λ“œλ₯Ό μˆ˜μ •ν•΄μ„œ μ‚¬μš© βœ…
# 이 μ½”λ“œλ₯Ό μƒμ—…μ μœΌλ‘œ μ‚¬μš© βœ…
# 이 μ½”λ“œλ₯Ό λ‹€λ₯Έ ν”„λ‘œμ νŠΈμ— 포함 βœ…
# 이 μ½”λ“œλ₯Ό λ‹€λ₯Έ μ΄λ¦„μœΌλ‘œ 배포 βœ…
# 단, μ €μž‘κΆŒ ν‘œμ‹œμ™€ λΌμ΄μ„ μŠ€ 정보 μœ μ§€ ν•„μš” ⚠️

πŸ“ μ €μž‘κΆŒ ν‘œμ‹œ μš”κ΅¬μ‚¬ν•­

μ‚¬μš© μ‹œ λ‹€μŒ 정보λ₯Ό 포함해야 ν•©λ‹ˆλ‹€:

  • Copyright (c) 2024 Simple Task MCP
  • MIT License - see LICENSE file for details

MIT λΌμ΄μ„ μŠ€λŠ” 맀우 μžμœ λ‘­μ§€λ§Œ, μ €μž‘κΆŒ ν‘œμ‹œλŠ” ν•„μˆ˜μž…λ‹ˆλ‹€.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages