๐Ÿ—๏ธ CodeGraphContext (CGC)

June 1, 2026 ยท View on GitHub

์ฝ”๋“œ ์ €์žฅ์†Œ๋ฅผ AI ์—์ด์ „ํŠธ๊ฐ€ ์ฟผ๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ทธ๋ž˜ํ”„๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๐ŸŒ ์–ธ์–ด:

๐ŸŒ CodeGraphContext๋ฅผ ์—ฌ๋Ÿฌ๋ถ„์˜ ์–ธ์–ด๋กœ ๋ฒˆ์—ญํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ฃผ์„ธ์š”! https://github.com/Shashankss1205/CodeGraphContext/issues ์—์„œ ์ด์Šˆ์™€ PR์„ ์ƒ์„ฑํ•ด ์ฃผ์„ธ์š”!


๋”ฅ ์ฝ”๋“œ ๊ทธ๋ž˜ํ”„์™€ AI ์ปจํ…์ŠคํŠธ ์‚ฌ์ด์˜ ๊ฐ„๊ทน์„ ํ•ด์†Œํ•ฉ๋‹ˆ๋‹ค.

PyPI ๋ฒ„์ „ PyPI ๋‹ค์šด๋กœ๋“œ ๋ผ์ด์„ ์Šค MCP ํ˜ธํ™˜

Stars Forks ์ด์Šˆ PR ๊ธฐ์—ฌ์ž

ํ…Œ์ŠคํŠธ E2E ํ…Œ์ŠคํŠธ ์›น์‚ฌ์ดํŠธ ๋ฌธ์„œ YouTube ๋ฐ๋ชจ

๋กœ์ปฌ ์ฝ”๋“œ๋ฅผ ๊ทธ๋ž˜ํ”„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ธ๋ฑ์‹ฑํ•˜์—ฌ AI ์–ด์‹œ์Šคํ„ดํŠธ์™€ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ปจํ…์ŠคํŠธ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฐ•๋ ฅํ•œ MCP ์„œ๋ฒ„ ๋ฐ CLI ๋„๊ตฌ ๋ชจ์Œ์ž…๋‹ˆ๋‹ค. ํฌ๊ด„์ ์ธ ์ฝ”๋“œ ๋ถ„์„์„ ์œ„ํ•œ ๋…๋ฆฝ ์‹คํ–‰ํ˜• CLI๋กœ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, MCP๋ฅผ ํ†ตํ•ด ์„ ํ˜ธํ•˜๋Š” AI IDE์— ์—ฐ๊ฒฐํ•˜์—ฌ AI ๊ธฐ๋ฐ˜ ์ฝ”๋“œ ์ดํ•ด๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ“ ๋น ๋ฅธ ํƒ์ƒ‰


โœจ CGC ์ฒดํ—˜ํ•˜๊ธฐ

๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป ์„ค์น˜ ๋ฐ CLI

pip์œผ๋กœ ๋ช‡ ์ดˆ ๋งŒ์— ์„ค์น˜ํ•˜๊ณ  ๊ฐ•๋ ฅํ•œ ์ฝ”๋“œ ๊ทธ๋ž˜ํ”„ ๋ถ„์„ CLI๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. CLI๋ฅผ ์ฆ‰์‹œ ์„ค์น˜ํ•˜๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ

๐Ÿ› ๏ธ ๋ช‡ ์ดˆ ๋งŒ์— ์ธ๋ฑ์‹ฑ

CLI๊ฐ€ tree-sitter ๋…ธ๋“œ๋ฅผ ์ง€๋Šฅ์ ์œผ๋กœ ํŒŒ์‹ฑํ•˜์—ฌ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค. MCP ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‚ฌ์šฉํ•œ ์ธ๋ฑ์‹ฑ

๐Ÿค– AI ์–ด์‹œ์Šคํ„ดํŠธ ์ง€์›

์ž์—ฐ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ MCP๋ฅผ ํ†ตํ•ด ๋ณต์žกํ•œ ํ˜ธ์ถœ ์ฒด์ธ์„ ์ฟผ๋ฆฌํ•˜์„ธ์š”. MCP ์„œ๋ฒ„ ์‚ฌ์šฉ


ํ”„๋กœ์ ํŠธ ์„ธ๋ถ€ ์ •๋ณด


๐Ÿ‘จโ€๐Ÿ’ป ๋ฉ”์ธํ…Œ์ด๋„ˆ

CodeGraphContext๋Š” ๋‹ค์Œ์— ์˜ํ•ด ์ œ์ž‘ ๋ฐ ์ ๊ทน์ ์œผ๋กœ ์œ ์ง€ ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค:

Shashank Shekhar Singh

๊ธฐ์—ฌ์™€ ํ”ผ๋“œ๋ฐฑ์€ ์–ธ์ œ๋‚˜ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค! ์งˆ๋ฌธ, ์ œ์•ˆ ๋˜๋Š” ํ˜‘์—… ๊ธฐํšŒ์— ๋Œ€ํ•ด ์ž์œ ๋กญ๊ฒŒ ์—ฐ๋ฝํ•ด ์ฃผ์„ธ์š”.


Star ๊ธฐ๋ก

Star History Chart


๊ธฐ๋Šฅ

  • ์ฝ”๋“œ ์ธ๋ฑ์‹ฑ: ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•˜๊ณ  ๊ตฌ์„ฑ ์š”์†Œ์˜ ์ง€์‹ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ด€๊ณ„ ๋ถ„์„: ํ˜ธ์ถœ์ž, ํ”ผํ˜ธ์ถœ์ž, ํด๋ž˜์Šค ๊ณ„์ธต ๊ตฌ์กฐ, ํ˜ธ์ถœ ์ฒด์ธ ๋“ฑ์„ ์ฟผ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • ์‚ฌ์ „ ์ธ๋ฑ์‹ฑ๋œ ๋ฒˆ๋“ค: .cgc ๋ฒˆ๋“ค๋กœ ์œ ๋ช…ํ•œ ์ €์žฅ์†Œ๋ฅผ ์ฆ‰์‹œ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค - ์ธ๋ฑ์‹ฑ์ด ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค! (์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ)
  • ์‹ค์‹œ๊ฐ„ ํŒŒ์ผ ๊ฐ์‹œ: ๋””๋ ‰ํ† ๋ฆฌ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ฐ์‹œํ•˜๊ณ  ๊ทธ๋ž˜ํ”„๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ž๋™ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค (cgc watch).
  • ๋Œ€ํ™”ํ˜• ์„ค์ •: ์‰ฌ์šด ์„ค์ •์„ ์œ„ํ•œ ์‚ฌ์šฉ์ž ์นœํ™”์ ์ธ ๋ช…๋ น์ค„ ๋งˆ๋ฒ•์‚ฌ.
  • ๋“€์–ผ ๋ชจ๋“œ: ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ๋…๋ฆฝ ์‹คํ–‰ํ˜• CLI ๋„๊ตฌ ๋ชจ์Œ๊ณผ AI ์—์ด์ „ํŠธ๋ฅผ ์œ„ํ•œ MCP ์„œ๋ฒ„๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
  • ๋‹ค๊ตญ์–ด ์ง€์›: 14๊ฐœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ์™„๋ฒฝ ์ง€์›.
  • ์œ ์—ฐํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐฑ์—”๋“œ: KรนzuDB (๊ธฐ๋ณธ, ๋ชจ๋“  ํ”Œ๋žซํผ์—์„œ ์„ค์ • ๋ถˆํ•„์š”), FalkorDB Lite (Unix ์ „์šฉ), FalkorDB Remote, ๋˜๋Š” Neo4j (Docker/๋„ค์ดํ‹ฐ๋ธŒ๋ฅผ ํ†ตํ•œ ๋ชจ๋“  ํ”Œ๋žซํผ).

์ง€์› ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด

CodeGraphContext๋Š” ๋‹ค์Œ ์–ธ์–ด์— ๋Œ€ํ•œ ํฌ๊ด„์ ์ธ ํŒŒ์‹ฑ ๋ฐ ๋ถ„์„์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค:

์–ธ์–ด์–ธ์–ด์–ธ์–ด
๐ŸPython๐Ÿ“œJavaScript๐Ÿ”ทTypeScript
โ˜•Java๐Ÿ—๏ธC / C++#๏ธโƒฃC#
๐ŸนGo๐Ÿฆ€Rust๐Ÿ’ŽRuby
๐Ÿ˜PHP๐ŸŽSwift๐ŸŽจKotlin
๐ŸŽฏDart๐ŸชPerl

๊ฐ ์–ธ์–ด ํŒŒ์„œ๋Š” ํ•จ์ˆ˜, ํด๋ž˜์Šค, ๋ฉ”์„œ๋“œ, ๋งค๊ฐœ๋ณ€์ˆ˜, ์ƒ์† ๊ด€๊ณ„, ํ•จ์ˆ˜ ํ˜ธ์ถœ ๋ฐ ์ž„ํฌํŠธ๋ฅผ ์ถ”์ถœํ•˜์—ฌ ํฌ๊ด„์ ์ธ ์ฝ”๋“œ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค.


๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์˜ต์…˜

CodeGraphContext๋Š” ์‚ฌ์šฉ ํ™˜๊ฒฝ์— ๋งž๋Š” ๋‹ค์–‘ํ•œ ๊ทธ๋ž˜ํ”„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐฑ์—”๋“œ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค:

๊ธฐ๋ŠฅKรนzuDB (๊ธฐ๋ณธ)FalkorDB LiteNeo4j
์„ค์ •์„ค์ • ๋ถˆํ•„์š” / ์ž„๋ฒ ๋””๋“œ์„ค์ • ๋ถˆํ•„์š” / ์ธํ”„๋กœ์„ธ์ŠคDocker / ์™ธ๋ถ€
ํ”Œ๋žซํผ๋ชจ๋“  ํ”Œ๋žซํผ (Windows, macOS, Linux)Unix ์ „์šฉ (Linux/macOS/WSL)๋ชจ๋“  ํ”Œ๋žซํผ
์‚ฌ์šฉ ์‚ฌ๋ก€๋ฐ์Šคํฌํ†ฑ, IDE, ๋กœ์ปฌ ๊ฐœ๋ฐœํŠนํ™”๋œ Unix ๊ฐœ๋ฐœ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ, ๋Œ€๊ทœ๋ชจ ๊ทธ๋ž˜ํ”„
์š”๊ตฌ ์‚ฌํ•ญpip install kuzupip install falkordbliteNeo4j Server / Docker
์†๋„โšก ๋งค์šฐ ๋น ๋ฆ„โšก ๋น ๋ฆ„๐Ÿš€ ํ™•์žฅ ๊ฐ€๋Šฅ
์˜์†์„ฑ์˜ˆ (๋””์Šคํฌ)์˜ˆ (๋””์Šคํฌ)์˜ˆ (๋””์Šคํฌ)

์‚ฌ์šฉ ์‚ฌ๋ก€

CodeGraphContext๋Š” ์ด๋ฏธ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์šฉ๋„๋กœ ๊ฐœ๋ฐœ์ž์™€ ํ”„๋กœ์ ํŠธ์—์„œ ํ™œ์šฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค:

  • AI ์–ด์‹œ์Šคํ„ดํŠธ์—์„œ์˜ ์ •์  ์ฝ”๋“œ ๋ถ„์„
  • ํ”„๋กœ์ ํŠธ์˜ ๊ทธ๋ž˜ํ”„ ๊ธฐ๋ฐ˜ ์‹œ๊ฐํ™”
  • ๋ฐ๋“œ ์ฝ”๋“œ ๋ฐ ๋ณต์žก๋„ ํƒ์ง€

ํ”„๋กœ์ ํŠธ์—์„œ CodeGraphContext๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๊ณ„์‹œ๋‹ค๋ฉด, PR์„ ์ƒ์„ฑํ•˜์—ฌ ์—ฌ๊ธฐ์— ์ถ”๊ฐ€ํ•ด ์ฃผ์„ธ์š”! ๐Ÿš€


์˜์กด์„ฑ

  • neo4j>=5.15.0
  • watchdog>=3.0.0
  • stdlibs>=2023.11.18
  • typer[all]>=0.9.0
  • rich>=13.7.0
  • inquirerpy>=0.3.7
  • python-dotenv>=1.0.0
  • tree-sitter>=0.21.0
  • tree-sitter-language-pack>=0.6.0
  • pyyaml
  • pytest
  • nbformat
  • nbconvert>=7.16.6
  • pathspec>=0.12.1

์ฐธ๊ณ : Python 3.10-3.14์ด ์ง€์›๋ฉ๋‹ˆ๋‹ค.


๋น ๋ฅธ ์‹œ์ž‘

ํ•ต์‹ฌ ๋„๊ตฌ ๋ชจ์Œ ์„ค์น˜

pip install codegraphcontext

'cgc' ๋ช…๋ น์–ด๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ, ๋‹ค์Œ ํ•œ ์ค„ ์ˆ˜์ • ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜์„ธ์š”:

curl -sSL https://raw.githubusercontent.com/CodeGraphContext/CodeGraphContext/main/scripts/post_install_fix.sh | bash

์‹œ์ž‘ํ•˜๊ธฐ

๐Ÿ“‹ CodeGraphContext ๋ชจ๋“œ ์ดํ•ดํ•˜๊ธฐ

CodeGraphContext๋Š” ๋‘ ๊ฐ€์ง€ ๋ชจ๋“œ๋กœ ์ž‘๋™ํ•˜๋ฉฐ, ๋‘˜ ์ค‘ ํ•˜๋‚˜ ๋˜๋Š” ๋ชจ๋‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

๐Ÿ› ๏ธ ๋ชจ๋“œ 1: CLI ๋„๊ตฌ ๋ชจ์Œ (๋…๋ฆฝ ์‹คํ–‰ํ˜•)

CodeGraphContext๋ฅผ ์ฝ”๋“œ ๋ถ„์„์„ ์œ„ํ•œ ๊ฐ•๋ ฅํ•œ ๋ช…๋ น์ค„ ๋„๊ตฌ ๋ชจ์Œ์œผ๋กœ ์‚ฌ์šฉํ•˜์„ธ์š”:

  • ํ„ฐ๋ฏธ๋„์—์„œ ์ง์ ‘ ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ์ธ๋ฑ์‹ฑํ•˜๊ณ  ๋ถ„์„
  • ์ฝ”๋“œ ๊ด€๊ณ„ ์ฟผ๋ฆฌ, ๋ฐ๋“œ ์ฝ”๋“œ ์ฐพ๊ธฐ, ๋ณต์žก๋„ ๋ถ„์„
  • ์ฝ”๋“œ ๊ทธ๋ž˜ํ”„ ๋ฐ ์˜์กด์„ฑ ์‹œ๊ฐํ™”
  • CLI ๋ช…๋ น์„ ํ†ตํ•œ ์ง์ ‘ ์ œ์–ด๋ฅผ ์›ํ•˜๋Š” ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ ํ•ฉ

๐Ÿค– ๋ชจ๋“œ 2: MCP ์„œ๋ฒ„ (AI ๊ธฐ๋ฐ˜)

CodeGraphContext๋ฅผ AI ์–ด์‹œ์Šคํ„ดํŠธ๋ฅผ ์œ„ํ•œ MCP ์„œ๋ฒ„๋กœ ์‚ฌ์šฉํ•˜์„ธ์š”:

  • AI IDE (VS Code, Cursor, Windsurf, Claude, Kiro ๋“ฑ) ์—ฐ๊ฒฐ
  • AI ์—์ด์ „ํŠธ๊ฐ€ ์ž์—ฐ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ์ฟผ๋ฆฌ
  • ์ž๋™ ์ฝ”๋“œ ์ดํ•ด ๋ฐ ๊ด€๊ณ„ ๋ถ„์„
  • AI ์ง€์› ๊ฐœ๋ฐœ ์›Œํฌํ”Œ๋กœ์— ์ ํ•ฉ

๋‘ ๋ชจ๋“œ ๋ชจ๋‘ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค! ํ•œ ๋ฒˆ ์„ค์น˜ํ•˜๋ฉด CLI ๋ช…๋ น์„ ์ง์ ‘ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ AI ์–ด์‹œ์Šคํ„ดํŠธ์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„ค์น˜ (๋ชจ๋“  ๋ชจ๋“œ)

  1. ์„ค์น˜: pip install codegraphcontext

    โš™๏ธ ๋ฌธ์ œ ํ•ด๊ฒฐ: cgc ๋ช…๋ น์–ด๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ

    ์„ค์น˜ ํ›„ "cgc: command not found" ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด PATH ์ˆ˜์ • ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜์„ธ์š”:

    Linux/Mac:

    # ์ˆ˜์ • ์Šคํฌ๋ฆฝํŠธ ๋‹ค์šด๋กœ๋“œ
    curl -O https://raw.githubusercontent.com/CodeGraphContext/CodeGraphContext/main/scripts/post_install_fix.sh
    
    # ์‹คํ–‰ ๊ถŒํ•œ ๋ถ€์—ฌ
    chmod +x post_install_fix.sh
    
    # ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰
    ./post_install_fix.sh
    
    # ํ„ฐ๋ฏธ๋„์„ ์žฌ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ์…ธ ์„ค์ •์„ ๋‹ค์‹œ ๋กœ๋“œ
    source ~/.bashrc  # zsh ์‚ฌ์šฉ์ž๋Š” ~/.zshrc
    

    Windows (PowerShell):

    # ์ˆ˜์ • ์Šคํฌ๋ฆฝํŠธ ๋‹ค์šด๋กœ๋“œ
    curl -O https://raw.githubusercontent.com/CodeGraphContext/CodeGraphContext/main/scripts/post_install_fix.sh
    
    # bash๋กœ ์‹คํ–‰ (Git Bash ๋˜๋Š” WSL ํ•„์š”)
    bash post_install_fix.sh
    
    # PowerShell์„ ์žฌ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ํ”„๋กœํ•„์„ ๋‹ค์‹œ ๋กœ๋“œ
    . $PROFILE
    
  2. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค์ • (์ž๋™)

    • KรนzuDB (๊ธฐ๋ณธ): Windows, macOS, Linux์—์„œ ์„ค์ • ์—†์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. pip install kuzu๋งŒ ํ•˜๋ฉด ์ค€๋น„ ์™„๋ฃŒ!
    • FalkorDB Lite (๋Œ€์•ˆ): Python 3.12+์˜ Unix/macOS/WSL์—์„œ ์ง€์›๋ฉ๋‹ˆ๋‹ค.
    • Neo4j (๋Œ€์•ˆ): Neo4j๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์„œ๋ฒ„ ๊ธฐ๋ฐ˜ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์„ ํ˜ธํ•˜๋Š” ๊ฒฝ์šฐ: cgc neo4j setup ์‹คํ–‰

CLI ๋„๊ตฌ ๋ชจ์Œ ๋ชจ๋“œ

CLI ๋ช…๋ น์œผ๋กœ ์ฆ‰์‹œ ์‚ฌ์šฉ ์‹œ์ž‘:

# ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ ์ธ๋ฑ์‹ฑ
cgc index .

# ๋ชจ๋“  ์ธ๋ฑ์‹ฑ๋œ ์ €์žฅ์†Œ ๋ชฉ๋ก ์กฐํšŒ
cgc list

# ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ณณ ๋ถ„์„
cgc analyze callers my_function

# ๋ณต์žกํ•œ ์ฝ”๋“œ ์ฐพ๊ธฐ
cgc analyze complexity --threshold 10

# ๋ฐ๋“œ ์ฝ”๋“œ ์ฐพ๊ธฐ
cgc analyze dead-code

# ์‹ค์‹œ๊ฐ„ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ๊ฐ์‹œ (์„ ํƒ ์‚ฌํ•ญ)
cgc watch .

# ๋ชจ๋“  ๋ช…๋ น์–ด ๋ณด๊ธฐ
cgc help

์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๋ช…๋ น์–ด์™€ ์‚ฌ์šฉ ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” CLI ๋ช…๋ น ๊ฐ€์ด๋“œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๐ŸŽจ ํ”„๋ฆฌ๋ฏธ์—„ ๋Œ€ํ™”ํ˜• ์‹œ๊ฐํ™”

CodeGraphContext๋Š” ์ฝ”๋“œ์˜ ๋ฉ‹์ง„ ๋Œ€ํ™”ํ˜• ์ง€์‹ ๊ทธ๋ž˜ํ”„๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ •์  ๋‹ค์ด์–ด๊ทธ๋žจ๊ณผ ๋‹ฌ๋ฆฌ ํ”„๋ฆฌ๋ฏธ์—„ ์›น ๊ธฐ๋ฐ˜ ํƒ์ƒ‰๊ธฐ์ž…๋‹ˆ๋‹ค:

  • ํ”„๋ฆฌ๋ฏธ์—„ ๋ฏธํ•™: ๋‹คํฌ ๋ชจ๋“œ, ๊ธ€๋ž˜์Šค๋ชจํ”ผ์ฆ˜, ๋ชจ๋˜ ํƒ€์ดํฌ๊ทธ๋ž˜ํ”ผ (Outfit/JetBrains Mono).
  • ๋Œ€ํ™”ํ˜• ๊ฒ€์‚ฌ: ๋…ธ๋“œ๋ฅผ ํด๋ฆญํ•˜๋ฉด ์‹ฌ๋ณผ ์ •๋ณด, ํŒŒ์ผ ๊ฒฝ๋กœ ๋ฐ ์ปจํ…์ŠคํŠธ๊ฐ€ ํฌํ•จ๋œ ์ƒ์„ธ ์‚ฌ์ด๋“œ ํŒจ๋„์ด ์—ด๋ฆฝ๋‹ˆ๋‹ค.
  • ๋น ๋ฅธ ๊ฒ€์ƒ‰: ๊ทธ๋ž˜ํ”„์—์„œ ํŠน์ • ์‹ฌ๋ณผ์„ ์ฆ‰์‹œ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ์‹ค์‹œ๊ฐ„ ๊ฒ€์ƒ‰.
  • ์ง€๋Šฅํ˜• ๋ ˆ์ด์•„์›ƒ: ๋ณต์žกํ•œ ๊ด€๊ณ„๋ฅผ ์ฝ๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“œ๋Š” ํž˜ ๊ธฐ๋ฐ˜ ๋ฐ ๊ณ„์ธต์  ๋ ˆ์ด์•„์›ƒ.
  • ๋ฌด์˜์กด์„ฑ ๋ณด๊ธฐ: ๋ชจ๋“  ์ตœ์‹  ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ž‘๋™ํ•˜๋Š” ๋…๋ฆฝ ์‹คํ–‰ํ˜• HTML ํŒŒ์ผ.
# ํ•จ์ˆ˜ ํ˜ธ์ถœ ์‹œ๊ฐํ™”
cgc analyze calls my_function --viz

# ํด๋ž˜์Šค ๊ณ„์ธต ๊ตฌ์กฐ ํƒ์ƒ‰
cgc analyze tree MyClass --viz

# ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ์‹œ๊ฐํ™”
cgc find pattern "Auth" --viz

๐Ÿค– MCP ์„œ๋ฒ„ ๋ชจ๋“œ

AI ์–ด์‹œ์Šคํ„ดํŠธ์—์„œ CodeGraphContext๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •:

  1. ์„ค์ •: MCP ์„ค์ • ๋งˆ๋ฒ•์‚ฌ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ IDE/AI ์–ด์‹œ์Šคํ„ดํŠธ๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค:

    cgc mcp setup
    

    ๋งˆ๋ฒ•์‚ฌ๊ฐ€ ์ž๋™์œผ๋กœ ๊ฐ์ง€ํ•˜๊ณ  ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ:

    • VS Code
    • Cursor
    • Windsurf
    • Claude
    • Gemini CLI
    • ChatGPT Codex
    • Cline
    • RooCode
    • Amazon Q Developer
    • Kiro

    ์„ฑ๊ณต์ ์œผ๋กœ ๊ตฌ์„ฑ๋˜๋ฉด cgc mcp setup์ด ํ•„์š”ํ•œ ์„ค์ • ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ  ๋ฐฐ์น˜ํ•ฉ๋‹ˆ๋‹ค:

    • ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ์— ์ฐธ์กฐ์šฉ mcp.json ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž๊ฒฉ ์ฆ๋ช…์„ ~/.codegraphcontext/.env์— ์•ˆ์ „ํ•˜๊ฒŒ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
    • ์„ ํƒํ•œ IDE/CLI์˜ ์„ค์ • ํŒŒ์ผ(์˜ˆ: .claude.json ๋˜๋Š” VS Code์˜ settings.json)์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
  2. ์‹œ์ž‘: MCP ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค:

    cgc mcp start
    
  3. ์‚ฌ์šฉ: ์ด์ œ AI ์–ด์‹œ์Šคํ„ดํŠธ๋ฅผ ํ†ตํ•ด ์ž์—ฐ์–ด๋กœ ์ฝ”๋“œ๋ฒ ์ด์Šค์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜์„ธ์š”! ์•„๋ž˜ ์˜ˆ์‹œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.


ํŒŒ์ผ ๋ฌด์‹œํ•˜๊ธฐ (.cgcignore)

ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์— .cgcignore ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด CodeGraphContext๊ฐ€ ํŠน์ • ํŒŒ์ผ๊ณผ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋ฌด์‹œํ•˜๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์€ .gitignore์™€ ๋™์ผํ•œ ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

.cgcignore ํŒŒ์ผ ์˜ˆ์‹œ:

# ๋นŒ๋“œ ์‚ฐ์ถœ๋ฌผ ๋ฌด์‹œ
/build/
/dist/

# ์˜์กด์„ฑ ๋ฌด์‹œ
/node_modules/
/vendor/

# ๋กœ๊ทธ ๋ฌด์‹œ
*.log

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

cgc mcp setup ๋ช…๋ น์€ IDE/CLI๋ฅผ ์ž๋™์œผ๋กœ ๊ตฌ์„ฑํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. ์ž๋™ ์„ค์ •์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ๋„๊ตฌ๊ฐ€ ์ง€์›๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์ˆ˜๋™์œผ๋กœ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ์˜ ์„ค์ • ํŒŒ์ผ(์˜ˆ: VS Code์˜ settings.json ๋˜๋Š” .claude.json)์— ๋‹ค์Œ ์„œ๋ฒ„ ์„ค์ •์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”:

{
  "mcpServers": {
    "CodeGraphContext": {
      "command": "cgc",
      "args": [
        "mcp",
        "start"
      ],
      "env": {
        "NEO4J_URI": "YOUR_NEO4J_URI",
        "NEO4J_USERNAME": "YOUR_NEO4J_USERNAME",
        "NEO4J_PASSWORD": "YOUR_NEO4J_PASSWORD"
      },
      "disabled": false,
      "alwaysAllow": []
    }
  }
}

์ž์—ฐ์–ด ์ƒํ˜ธ์ž‘์šฉ ์˜ˆ์‹œ

์„œ๋ฒ„๊ฐ€ ์‹คํ–‰ ์ค‘์ด๋ฉด AI ์–ด์‹œ์Šคํ„ดํŠธ๋ฅผ ํ†ตํ•ด ์ผ๋ฐ˜ ํ•œ๊ตญ์–ด๋กœ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค:

์ธ๋ฑ์‹ฑ ๋ฐ ํŒŒ์ผ ๊ฐ์‹œ

  • ์ƒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ์ธ๋ฑ์‹ฑํ•˜๋ ค๋ฉด:

    • "/path/to/my-project ๋””๋ ‰ํ† ๋ฆฌ์˜ ์ฝ”๋“œ๋ฅผ ์ธ๋ฑ์‹ฑํ•ด ์ฃผ์„ธ์š”." ๋˜๋Š”
    • "~/dev/my-other-project์— ์žˆ๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์ฝ”๋“œ ๊ทธ๋ž˜ํ”„์— ์ถ”๊ฐ€ํ•ด ์ฃผ์„ธ์š”."
  • ์‹ค์‹œ๊ฐ„ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์œ„ํ•ด ๋””๋ ‰ํ† ๋ฆฌ ๊ฐ์‹œ๋ฅผ ์‹œ์ž‘ํ•˜๋ ค๋ฉด:

    • "/path/to/my-active-project ๋””๋ ‰ํ† ๋ฆฌ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ฐ์‹œํ•ด ์ฃผ์„ธ์š”." ๋˜๋Š”
    • "~/dev/main-app์—์„œ ์ž‘์—… ์ค‘์ธ ํ”„๋กœ์ ํŠธ์˜ ์ฝ”๋“œ ๊ทธ๋ž˜ํ”„๋ฅผ ์ตœ์‹  ์ƒํƒœ๋กœ ์œ ์ง€ํ•ด ์ฃผ์„ธ์š”."

    ๋””๋ ‰ํ† ๋ฆฌ ๊ฐ์‹œ๋ฅผ ์š”์ฒญํ•˜๋ฉด ์‹œ์Šคํ…œ์ด ๋‘ ๊ฐ€์ง€ ์ž‘์—…์„ ๋™์‹œ์— ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค:

    1. ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ์˜ ๋ชจ๋“  ์ฝ”๋“œ๋ฅผ ์ธ๋ฑ์‹ฑํ•˜๊ธฐ ์œ„ํ•œ ์ „์ฒด ์Šค์บ”์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์„ธ์Šค๋Š” ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์‹คํ–‰๋˜๋ฉฐ, ์ง„ํ–‰ ์ƒํ™ฉ์„ ์ถ”์ ํ•˜๊ธฐ ์œ„ํ•œ job_id๋ฅผ ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
    2. ๊ทธ๋ž˜ํ”„๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ตœ์‹  ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํŒŒ์ผ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ๊ฐ์‹œ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

    ์ฆ‰, ์‹œ์Šคํ…œ์— ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๊ฐ์‹œํ•˜๋ผ๊ณ  ์ง€์‹œํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ์ดˆ๊ธฐ ์ธ๋ฑ์‹ฑ๊ณผ ์ง€์†์ ์ธ ์—…๋ฐ์ดํŠธ๋ฅผ ๋ชจ๋‘ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์ฝ”๋“œ ์ฟผ๋ฆฌ ๋ฐ ์ดํ•ด

  • ์ฝ”๋“œ๊ฐ€ ์ •์˜๋œ ์œ„์น˜ ์ฐพ๊ธฐ:

    • "process_payment ํ•จ์ˆ˜๋Š” ์–ด๋””์— ์žˆ๋‚˜์š”?"
    • "User ํด๋ž˜์Šค๋ฅผ ์ฐพ์•„ ์ฃผ์„ธ์š”."
    • "'๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ'๊ณผ ๊ด€๋ จ๋œ ์ฝ”๋“œ๋ฅผ ๋ณด์—ฌ ์ฃผ์„ธ์š”."
  • ๊ด€๊ณ„ ๋ฐ ์˜ํ–ฅ๋„ ๋ถ„์„:

    • "get_user_by_id ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋‹ค๋ฅธ ํ•จ์ˆ˜๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?"
    • "calculate_tax ํ•จ์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด ์ฝ”๋“œ์˜ ์–ด๋–ค ๋ถ€๋ถ„์ด ์˜ํ–ฅ์„ ๋ฐ›๋‚˜์š”?"
    • "BaseController ํด๋ž˜์Šค์˜ ์ƒ์† ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ๋ณด์—ฌ ์ฃผ์„ธ์š”."
    • "Order ํด๋ž˜์Šค์—๋Š” ์–ด๋–ค ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ๋‚˜์š”?"
  • ์˜์กด์„ฑ ํƒ์ƒ‰:

    • "requests ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ž„ํฌํŠธํ•˜๋Š” ํŒŒ์ผ์€ ์–ด๋–ค ๊ฒƒ์ด ์žˆ๋‚˜์š”?"
    • "render ๋ฉ”์„œ๋“œ์˜ ๋ชจ๋“  ๊ตฌํ˜„์„ ์ฐพ์•„ ์ฃผ์„ธ์š”."
  • ๊ณ ๊ธ‰ ํ˜ธ์ถœ ์ฒด์ธ ๋ฐ ์˜์กด์„ฑ ์ถ”์  (์ˆ˜๋ฐฑ ๊ฐœ์˜ ํŒŒ์ผ์— ๊ฑธ์ณ): CodeGraphContext๋Š” ๊ด‘๋ฒ”์œ„ํ•œ ์ฝ”๋“œ๋ฒ ์ด์Šค์—์„œ ๋ณต์žกํ•œ ์‹คํ–‰ ํ๋ฆ„๊ณผ ์˜์กด์„ฑ์„ ์ถ”์ ํ•˜๋Š” ๋ฐ ๋›ฐ์–ด๋‚ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜ํ”„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํž˜์„ ํ™œ์šฉํ•˜์—ฌ ํ•จ์ˆ˜๊ฐ€ ์—ฌ๋Ÿฌ ์ถ”์ƒํ™” ๊ณ„์ธต์ด๋‚˜ ์ˆ˜๋งŽ์€ ํŒŒ์ผ์„ ํ†ตํ•ด ํ˜ธ์ถœ๋˜๋Š” ๊ฒฝ์šฐ์—๋„ ์ง์ ‘ ๋ฐ ๊ฐ„์ ‘ ํ˜ธ์ถœ์ž์™€ ํ”ผํ˜ธ์ถœ์ž๋ฅผ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์— ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค:

    • ์˜ํ–ฅ๋„ ๋ถ„์„: ํ•ต์‹ฌ ํ•จ์ˆ˜ ๋ณ€๊ฒฝ์˜ ์ „์ฒด ํŒŒ๊ธ‰ ํšจ๊ณผ๋ฅผ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค.

    • ๋””๋ฒ„๊น…: ์ง„์ž…์ ์—์„œ ํŠน์ • ๋ฒ„๊ทธ๊นŒ์ง€์˜ ์‹คํ–‰ ๊ฒฝ๋กœ๋ฅผ ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค.

    • ์ฝ”๋“œ ์ดํ•ด: ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ์˜ ์—ฌ๋Ÿฌ ๋ถ€๋ถ„์ด ์–ด๋–ป๊ฒŒ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š”์ง€ ํŒŒ์•…ํ•ฉ๋‹ˆ๋‹ค.

    • "main ํ•จ์ˆ˜์—์„œ process_data๊นŒ์ง€์˜ ์ „์ฒด ํ˜ธ์ถœ ์ฒด์ธ์„ ๋ณด์—ฌ ์ฃผ์„ธ์š”."

    • "validate_input์„ ์ง์ ‘ ๋˜๋Š” ๊ฐ„์ ‘์ ์œผ๋กœ ํ˜ธ์ถœํ•˜๋Š” ๋ชจ๋“  ํ•จ์ˆ˜๋ฅผ ์ฐพ์•„ ์ฃผ์„ธ์š”."

    • "initialize_system์ด ์ตœ์ข…์ ์œผ๋กœ ํ˜ธ์ถœํ•˜๋Š” ๋ชจ๋“  ํ•จ์ˆ˜๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?"

    • "DatabaseManager ๋ชจ๋“ˆ์˜ ์˜์กด์„ฑ์„ ์ถ”์ ํ•ด ์ฃผ์„ธ์š”."

  • ์ฝ”๋“œ ํ’ˆ์งˆ ๋ฐ ์œ ์ง€๋ณด์ˆ˜:

    • "์ด ํ”„๋กœ์ ํŠธ์— ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๋ฐ๋“œ ์ฝ”๋“œ๊ฐ€ ์žˆ๋‚˜์š”?"
    • "src/utils.py์˜ process_data ํ•จ์ˆ˜์˜ ์ˆœํ™˜ ๋ณต์žก๋„๋ฅผ ๊ณ„์‚ฐํ•ด ์ฃผ์„ธ์š”."
    • "์ฝ”๋“œ๋ฒ ์ด์Šค์—์„œ ๊ฐ€์žฅ ๋ณต์žกํ•œ ํ•จ์ˆ˜ 5๊ฐœ๋ฅผ ์ฐพ์•„ ์ฃผ์„ธ์š”."
  • ์ €์žฅ์†Œ ๊ด€๋ฆฌ:

    • "ํ˜„์žฌ ์ธ๋ฑ์‹ฑ๋œ ๋ชจ๋“  ์ €์žฅ์†Œ๋ฅผ ๋‚˜์—ดํ•ด ์ฃผ์„ธ์š”."
    • "/path/to/old-project์— ์žˆ๋Š” ์ธ๋ฑ์‹ฑ๋œ ์ €์žฅ์†Œ๋ฅผ ์‚ญ์ œํ•ด ์ฃผ์„ธ์š”."

๊ธฐ์—ฌํ•˜๊ธฐ

๊ธฐ์—ฌ๋ฅผ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค! ๐ŸŽ‰ ์ž์„ธํ•œ ๊ฐ€์ด๋“œ๋ผ์ธ์€ CONTRIBUTING.md๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ, ํ†ตํ•ฉ ๋˜๋Š” ๊ฐœ์„ ์— ๋Œ€ํ•œ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์œผ์‹œ๋ฉด ์ด์Šˆ๋ฅผ ์—ด๊ฑฐ๋‚˜ Pull Request๋ฅผ ์ œ์ถœํ•ด ์ฃผ์„ธ์š”.

ํ† ๋ก ์— ์ฐธ์—ฌํ•˜๊ณ  CodeGraphContext์˜ ๋ฏธ๋ž˜๋ฅผ ํ•จ๊ป˜ ๋งŒ๋“ค์–ด ๊ฐ€์„ธ์š”.