코드베이스를 구조화된 AST 지식 그래프로 인덱싱하여 AI 코딩 어시스턴트가 시맨틱 검색, 콜 그래프 탐색 및 영향 분석을 수행할 수 있도록 지원합니다.
다른 이름 sdsrss/code-graph-mcp, @sdsrs/code-graph
- 스타
- 96
- Tools
- 7
- 다운로드, 30일
- —
- 최신 버전
- —
- 마지막 커밋
- 2026년 11월 12일
- 라이선스
- MIT
code-graph MCP란?
code-graph은(는) MCP server입니다. 코드베이스를 구조화된 AST 지식 그래프로 인덱싱하여 AI 코딩 어시스턴트가 시맨틱 검색, 콜 그래프 탐색 및 영향 분석을 수행할 수 있도록 지원합니다. 7개 도구를 제공합니다. 예: project_map, semantic_code_search, get_call_graph.
프로젝트 README에서 생성된 요약
code-graph MCP server 정보
Claude Code, Cursor, Windsurf와 같은 AI 코딩 어시스턴트를 사용하는 개발자는 이 MCP server를 통해 모델에게 코드베이스 전체에 대한 깊고 구조화된 이해를 제공할 수 있습니다. 소스 코드를 구조화된 AST 지식 그래프로 인덱싱하여, AI가 단순한 텍스트 검색을 넘어 심볼 간의 복잡한 관계를 이해할 수 있도록 돕습니다. 이 서버는 SQLite 데이터베이스가 내장된 단일 바이너리 형태로 로컬 머신에서 실행되므로, 외부 클라우드 API나 Docker 컨테이너가 필요하지 않습니다.
TypeScript, Python, Go, Rust, Java, C++를 포함한 다중 언어 파싱을 지원하며, Express, Flask, FastAPI와 같은 프레임워크를 위한 HTTP 라우트 추적과 같은 특화된 기능을 제공합니다. 시스템은 BM25 풀텍스트 랭킹과 sqlite-vec을 통한 벡터 시맨틱 검색을 결합한 하이브리드 검색 방식을 사용합니다. 또한 Merkle tree를 이용한 증분 인덱싱으로 변경된 파일만 재처리하며, 토큰 인지형 컨텍스트 압축 기능을 통해 관련 코드 스니펫이 LLM 컨텍스트 창에 효율적으로 들어갈 수 있도록 지원합니다.
활용 사례
- 1코드 변경 영향 분석특정 함수나 변수를 수정할 때 시스템의 다른 부분에 어떤 영향을 미치는지 파악합니다.
- 2HTTP 요청 흐름 추적특정 URL 경로를 해당 요청을 처리하는 백엔드 핸들러 함수로 직접 매핑합니다.
- 3복잡한 콜 체인 탐색상위 레벨 함수부터 여러 계층의 서비스 로직에 이르는 실행 경로를 추적합니다.
프로젝트의 README를 바탕으로 작성되었습니다. 모든 활용 사례는 해당 내용의 인용문과 대조하여 확인합니다.
code-graph MCP 설치 방법
형식 확인: 2026년 11월 10일Cursor에 추가Goose에 추가Claude Code에 code-graph MCP 설치
$ claude mcp add code-graph-mcp -- npx -y @sdsrs/code-graphCursor에 code-graph MCP 설치
~/.cursor/mcp.json
{
"mcpServers": {
"code-graph-mcp": {
"command": "npx",
"args": [
"-y",
"@sdsrs/code-graph"
]
}
}
}VS Code에 code-graph MCP 설치
.vscode/mcp.json
{
"servers": {
"code-graph-mcp": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@sdsrs/code-graph"
]
}
}
}VS Code CLI에 code-graph MCP 설치
$ code --add-mcp '{"name":"code-graph-mcp","type":"stdio","command":"npx","args":["-y","@sdsrs/code-graph"]}'Claude Desktop에 code-graph MCP 설치
claude_desktop_config.json
{
"mcpServers": {
"code-graph-mcp": {
"command": "npx",
"args": [
"-y",
"@sdsrs/code-graph"
]
}
}
}Codex에 code-graph MCP 설치
$ codex mcp add code-graph-mcp -- npx -y @sdsrs/code-graphCodex config.toml에 code-graph MCP 설치
~/.codex/config.toml
[mcp_servers.code-graph-mcp] command = "npx" args = ["-y", "@sdsrs/code-graph"]
Gemini CLI에 code-graph MCP 설치
$ gemini mcp add -s user code-graph-mcp npx -- -y @sdsrs/code-graphGemini settings.json에 code-graph MCP 설치
~/.gemini/settings.json
{
"mcpServers": {
"code-graph-mcp": {
"command": "npx",
"args": [
"-y",
"@sdsrs/code-graph"
]
}
}
}code-graph MCP 도구 7
README에서 감지됨project_mapsemantic_code_searchget_call_graphget_ast_nodemodule_overviewast_searchfind_references
| project_map | — | |
| semantic_code_search | — | |
| get_call_graph | — | |
| get_ast_node | — | |
| module_overview | — | |
| ast_search | — | |
| find_references | — |
구성
CODE_GRAPH_MODEL_DIRCODE_GRAPH_QUIET_HOOKS
| 이름 | 설명 | 유형 |
|---|---|---|
| CODE_GRAPH_MODEL_DIR | — | |
| CODE_GRAPH_QUIET_HOOKS | — |
자동 검사
2026년 11월 12일에 실행됨전체 보고서 →자동 검사를 통과했습니다. 이는 보안 감사가 아닙니다. 코드를 직접 읽고 서버에 필요한 최소한의 권한만 부여하십시오. 검사 방식
- 소스 저장소 연결 및 접근 가능통과
- 오픈 소스 라이선스 (OSI)통과
- 최근 1년 내 커밋 또는 릴리스통과
- 패키지 이름이 인기 패키지와 유사하지 않음통과
- 원격 엔드포인트가 HTTPS 사용검사되지 않음
- 파괴적인 도구에 라벨 표시됨통과
- 모델에 대한 숨겨진 지침 없음통과
- 패키지 및 해당 종속성에 중요한 보안 권고 없음검사되지 않음
README
GitHub에서 보기code-graph-mcp
A high-performance code knowledge graph server implementing the Model Context Protocol (MCP). Indexes codebases into a structured AST knowledge graph with semantic search, call graph traversal, and HTTP route tracing — designed to give AI coding assistants deep, structured understanding of your code.
Features
- Multi-language parsing — Tree-sitter AST extraction across tiers of depth:
- Full (calls + imports + inheritance): TypeScript/TSX, JavaScript, Go, Python, Rust, Java. HTTP route extraction additionally covers TypeScript/TSX + JavaScript (Express/Connect), Go (
net/http), Python (Flask/FastAPI), and Rust axum (.route()chains with inline.nest()prefixes; named handlers only) — actix/rocket and Java Spring are not yet route-extracted - Smoke-tested (calls + imports + inheritance): C#, Kotlin, Ruby, PHP, Swift, Dart
- Limited (functions + calls +
#includeimports + gtest test markers + C++ base-class inheritance +Class::methodscope qualification): C, C++ - Scripting: Bash (functions + commands +
source/.imports), Markdown (headings) - File-FTS only (no AST symbol extraction): HTML, CSS, JSON
- Test markers — detected from the AST for Rust (
#[test]/#[cfg(test)]), JavaScript/TypeScript/TSX (describe/it/testblocks and their callbacks) and C/C++ (gtestTESTmacros). Go, Python, Java and the rest fall back to path/name heuristics (tests/,src/test/java/,*_test.*,*.test.js,test_*,*Test) - Value/type references — a
referencesrelation for symbols that are used without being called, imported or inherited (path-qualified constants, type-position uses, functions passed as values): Rust, TypeScript/TSX, JavaScript, Python, Go, Java, C, C++
- Full (calls + imports + inheritance): TypeScript/TSX, JavaScript, Go, Python, Rust, Java. HTTP route extraction additionally covers TypeScript/TSX + JavaScript (Express/Connect), Go (
- Semantic code search — Hybrid BM25 full-text + vector semantic search with Reciprocal Rank Fusion (RRF), powered by sqlite-vec
- Call graph traversal — Recursive CTE queries to trace callers/callees with cycle detection
- HTTP route tracing — Map route paths to backend handler functions (Express, Flask/FastAPI, Go
net/http, Rust axum) - Dead code detection — Find unreferenced symbols with smart Orphan/Exported-Unused classification
- Impact analysis — Determine the blast radius of code changes by tracing all dependents
- Incremental indexing — Merkle tree change detection with a file system watcher; changed files are re-indexed when the next MCP query tool call arrives (
get_index_statusdoes not count). Smart event filtering skips metadata-only changes (chmod, xattr) - Context compression — Token-aware snippet extraction for LLM context windows (L0→full code, L1→summaries, L2→file groups, L3→directory overview). Every MCP tool except
ast_searchtakescompact: true, which drops code bodies from the response; what else it trims is per-tool (get_ast_nodekeeps the signature,module_overviewdrops it), and how much it saves depends on the tool and the repo, so no fixed figure is quoted here - Embedding model — Optional local embedding via Candle (feature-gated
embed-model). Context reordered to prioritize structural relations over code for better embedding quality - Self-healing — Automatic SQLite corruption recovery with rebuild. Startup repair for incomplete indexing (Phase 3 failures)
- MCP protocol — JSON-RPC 2.0 over stdio, plug-and-play with Claude Code, Cursor, Windsurf, and other MCP clients
- Claude Code Plugin — First-class plugin with skills (
explore,index), acode-exploreragent, auto-indexing hooks, StatusLine integration, and self-updating
Why code-graph-mcp?
Unlike naive full-text search or simple AST dumps, code-graph-mcp builds a structured knowledge graph that understands the relationships between symbols across your entire codebase.
Incremental by Design
BLAKE3 Merkle tree tracks every file's content hash. On re-index, only changed files are re-parsed — unchanged directory subtrees are skipped entirely via mtime cache. When a function signature changes, dirty propagation automatically regenerates context for all downstream callers across files.
Hybrid Search, Not Just Grep
Combines BM25 full-text ranking (FTS5) with vector semantic similarity (sqlite-vec) via Reciprocal Rank Fusion (RRF) with raw score blending — so searching "handle user login" finds the right function even if it's named authenticate_session. Results are auto-compressed to fit LLM context windows.
Scope-Aware Relation Extraction
The parser doesn't just find function calls — it tracks them within their proper scope context. Extracts calls, imports, inheritance, interface implementations, exports (ESM export and CommonJS module.exports = { … } / exports.name = …), value/type references, and HTTP route bindings. Same-file targets are preferred over cross-file matches to minimize false-positive edges.
HTTP Request Flow Tracing
Unique to code-graph-mcp: trace from GET /api/users → route handler → service layer → database call in a single query. Supports Express/Connect, Flask/FastAPI, Go net/http, and Rust axum.
Zero External Dependencies at Runtime
Single binary, embedded SQLite, bundled sqlite-vec extension, optional local embedding model via Candle — no database server, no cloud API, no Docker required. Runs entirely on your machine.
Built for AI Assistants
Every design decision — from token-aware compression to node_id-based snippet expansion — is optimized for LLM context windows. Works out of the box with Claude Code, Cursor, Windsurf, and any MCP-compatible client.
Performance
Every row below is a line code-graph-mcp benchmark prints, measured on this
repository (283 files, 5,311 nodes, 11,215 edges) with a release build — median
of three consecutive runs on an otherwise idle machine. Run the same command on
your own project: the numbers that matter are yours, and these scale with tree
size and machine.
benchmark line |
This repo, v0.129.0 |
|---|---|
| Full index | ~2.0s (≈139 files/second, single-threaded) |
| Incremental (noop) | ~28ms no-change detection via BLAKE3 Merkle tree |
| Query latency P50 / P99 | ~655us / ~2.1ms |
| DB size | ~22.4MB (≈4.2MB per 1,000 nodes) |
| Avg tokens/node | ~242 |
Efficiency: code-graph vs Traditional Tools
How many TOOL CALLS each question takes, comparing code-graph-mcp against Grep
- Read + Glob. These are call counts, not token measurements: the left column is the round trips the traditional approach needs before it can answer, the right column is the single call that answers it. Token cost follows call count only loosely — how much source lands in the context window depends on the files, so this table does not claim a token ratio.
Tool Call Reduction
| Scenario | Traditional | code-graph | Savings |
|---|---|---|---|
| Project architecture overview | 5-8 calls | 1 call (project_map) |
~85% |
| Find function by concept | 3-5 calls | 1 call (semantic_code_search) |
~75% |
| Trace 2-level call chain | 8-15 calls | 1 call (get_call_graph) |
~90% |
| Pre-change impact analysis | 10-20+ calls | 1 call (get_ast_node + include_impact) |
~95% |
| Module structure & exports | 5+ calls | 1 call (module_overview) |
~80% |
| File dependency mapping | 3-5 calls | 1 call (module_overview + include_deps) |
~75% |
| Similar code detection | N/A | 1 call (get_ast_node + include_similar) |
unique |
Session token savings
tests/effectiveness_bench.rs is the only reproducible number here, and it is
worth being precise about what it measures. For each of five navigation tasks it
runs the real CLI on a fixture project and compares the response size in bytes
against a hand-set baseline_bytes for the Grep+Read approach. Bytes stand
in for tokens; the baselines are estimates committed once and held fixed, so its
value is regression tracking over releases, not a measurement of your project.
cargo build --no-default-features
cargo test --test effectiveness_bench --no-default-features -- --ignored --nocapture
On the fixture at v0.123.0 that prints 942 / 23000 = 0.04x, and the test fails
if the overall ratio ever exceeds 0.60. Earlier revisions of this README carried
an "Overall Session Efficiency" table (~80% fewer calls, ~95% fewer lines read,
40-60% session savings) whose first rows had no source at all; they are gone
rather than dressed up.
What code-graph Uniquely Enables
- Impact analysis — "Changing
connaffects 33 functions across 4 files, 78 tests at HIGH risk" — impossible to derive manually with Grep - Transitive call tracing — Follow
main→run_serve→handle_message→handle_tools_call→connin one query - Semantic search — Find
authenticate_sessionwhen searching "handle user login" - Dependency strength — Not just "file A imports file B", but "file A uses 38 symbols from file B"
When Traditional Tools Are Still Better
| Use Case | Best Tool |
|---|---|
| Exact string / constant search | Grep |
| Reading a file to edit it | Read |
| Finding files by name pattern | Glob |
What the Graph Does Not See
Call edges are resolved by name, so a few spellings produce no edge. These are known boundaries, not bugs to report:
- A method call reached through a module path.
module::Type::method()produces no call edge — the same whether the path starts with the crate name,crate::, or a bare module. A bareType::method()does resolve, and so does a free function through the same kind of path:my_crate::cli::cmd_grep()binds, whichpath_qualifier_strips_own_crate_nameintests/integration_call_qualifier.rsexists to keep true. It is theType::segment in front of the method that drops the edge, not the length of the path. Measured on this repo at v0.132.0:Database::openhas 173 caller edges and none of them come from the 53 call sites intests/cli_e2e.rsspelledcode_graph_mcp::storage::db::Database::open(...). - A receiver call whose method name is shared by several types.
obj.method()normally resolves: the receiver has no statically-known type, so the resolver binds it when exactly one same-language method carries that name (receiver_call_resolves_unique_method). When several types define the same name it is dropped rather than fanned out (receiver_call_with_ambiguous_method_name_stays_unresolved). - Cross-file constant and type-position uses, callbacks, and function
pointers. None of these are call edges, but none are invisible either: they
are carried as the
referencesrelation, whichfind_referencesreturns andimpactreports separately asvalue reference(s) — callbacks / fn-pointers / type positions. Together with the row above, this is whyinclude_deadresults are candidates to verify rather than a verdict. - Dispatch by name. A function reached through a string key, a reflection
call or an event name (
handlers["save"],getattr(obj, "save"),send(:save),bus.on("save", …)) has no edge. Whencallgraph,impactorrefsfinds no caller for a function, the answer lists up to 5 lines where the name appears in such a shape or is passed as a value (boundariesin--jsonand MCP), and acode-graph-mcp grepthat shows every occurrence. It is a disclosure, not an edge, and a lexical one: a line it does not list is not proof that nothing dispatches to the function.
Architecture
src/
├── domain.rs # Shared constants, relation types, env-var config
├── resolve.rs # Shared symbol resolution + ambiguity verdicts (CLI and MCP)
├── outcome.rs # Retrieval-adoption metrics from session transcripts
├── budget.rs # Output budgets (--budget / max_tokens): rank, shorten, drop, next step
├── cli/ # Every `code-graph-mcp <cmd>` subcommand (one file per command)
├── mcp/ # MCP protocol layer (JSON-RPC, tool registry, server)
│ └── server/ # McpServer with IndexingState + CacheState sub-structs
├── parser/ # Tree-sitter parsing, relation extraction, LanguageConfig dispatch
├── indexer/ # 3-phase pipeline, Merkle tree, file watcher
├── storage/ # SQLite schema (v10), CRUD, FTS5, migrations
├── graph/ # Recursive CTE call graph queries
├── search/ # RRF fusion search combining BM25 + vector
├── embedding/ # Candle embedding model (optional, masked mean pooling)
├── snapshot/ # Portable graph snapshots (create / verify / install)
├── sandbox/ # Context compressor with token estimation
└── utils/ # Language detection, config
Installation
Option 1: Claude Code Plugin (Recommended)
Install as a Claude Code plugin for the best experience — includes skills, the code-explorer agent, auto-indexing hooks, StatusLine health display, and automatic updates:
# Step 1: Add the marketplace
/plugin marketplace add sdsrss/code-graph-mcp
# Step 2: Install the plugin
/plugin install code-graph-mcp
What you get:
- MCP Server — All code-graph tools available to Claude
- Skills —
explore(structure-first navigation before reading files) andindex(health-check / re-index / full rebuild); see Plugin Skills - Code Explorer Agent — Deep code understanding expert via
code-explorer - Auto-indexing — The MCP server's file watcher records edited files, and the next code-graph MCP query (
get_call_graph,find_references, … — notget_index_status) re-indexes them before it answers; a PostToolUse hook that re-indexes per edit is off by default (CODE_GRAPH_HOOK_INDEX=onturns it on for CLI-only use) - StatusLine — Real-time health display (nodes, files, watch status) and what code-graph did in this session (
5 answers · 2 calls: answers its grep, edit, read, subagent and Stop hooks delivered to Claude, code-graph queries Claude ran) — compatible with other plugins' StatusLine via composite multiplexer - Auto-update — Checks for a new version at session start (throttled to at most one check every 2 minutes). Between forced checks the re-check interval is 30 minutes after an "up to date" answer and 6 hours while an update is already pending. Updates install silently.
Manual Update
npm update -g @sdsrs/code-graph
Then reconnect the MCP server in Claude Code with /mcp.
Note: Auto-update is disabled in the source repo directory (dev mode). Use manual update when developing the plugin itself.
Turning auto-update off
| Environment variable | Effect |
|---|---|
CODE_GRAPH_NO_AUTO_UPDATE=1 |
Skips the update check entirely — no version check, no download, and no updater process is started. A missing binary is still installed on first run, so the MCP server can't be left with no engine. Update manually with the command above. |
Set it in the env block of ~/.claude/settings.json (the environment of the
process hosting the MCP server), then reconnect with /mcp.
An update that keeps failing also stops hammering: after 5 failed attempts at
the same release the updater drops to one retry per day (and retries
immediately when a newer release is published), instead of re-downloading on
every session. While it is in that state the statusline shows ⚠ update stuck
and code-graph-mcp doctor prints the manual update command.
Invited-memory mode (quieter prompts)
By default, every user prompt the plugin deems code-related gets a small context injection from code-graph CLI output. If you'd rather rely on explicit tool calls, opt into invited-memory mode:
- Adopt the plugin contract into your project (idempotent, self-heals):
This writes a sentinel-wrapped managed block intocode-graph-mcp adopt<cwd>/CLAUDE.md(auto-loaded each session) plus<cwd>/.claude/plugin_code_graph_mcp.md(the full decision table, opened on demand). Runcode-graph-mcp unadoptto remove both; content outside the managed block is kept. - Set the activation env var in
~/.claude/settings.json:{ "env": { "CODE_GRAPH_QUIET_HOOKS": "1" } } - Restart Claude Code. The hooks inject nothing (the grep, read, edit, prompt, subagent and Stop hooks stay silent, and session startup skips the project-map injection), and the MCP
instructionsshrink to a one-line command pointer.
Option 2: Claude Code MCP Server Only
Register as an MCP server without the plugin features:
claude mcp add code-graph-mcp -- npx -y @sdsrs/code-graph
Option 3: Cursor / Windsurf / Other MCP Clients
Add to your MCP settings file (e.g. ~/.cursor/mcp.json):
{
"mcpServers": {
"code-graph": {
"command": "npx",
"args": ["-y", "@sdsrs/code-graph"]
}
}
}
Option 4: npx (No Install)
Run directly without installing:
npx -y @sdsrs/code-graph
Option 5: npm (Global Install)
Install globally, then run anywhere:
npm install -g @sdsrs/code-graph
code-graph-mcp
Uninstallation
Claude Code Plugin
# Uninstall the plugin
/plugin uninstall code-graph-mcp
# (Optional) Remove the marketplace
/plugin marketplace remove code-graph-mcp
# (Optional) Clean up all config and cache data
node ~/.claude/plugins/cache/code-graph-mcp/code-graph-mcp/*/scripts/lifecycle.js uninstall
Claude Code MCP Server
claude mcp remove code-graph-mcp
Cursor / Windsurf / Other MCP Clients
Remove the code-graph entry from your MCP settings file (e.g. ~/.cursor/mcp.json).
npm (Global)
Run the teardown first, while the CLI still exists — npm 7 removed the
preuninstall/postuninstall lifecycle scripts, so nothing runs on your behalf
during npm uninstall. Doing it in the other order leaves the hook entries in
~/.claude/settings.json and the ~40 MB binary cache behind, with no command
left on disk to remove them.
code-graph-mcp uninstall # restore statusline, strip hooks, drop the cache
npm uninstall -g @sdsrs/code-graph
Built from source (cargo)
uninstall lives in the npm wrapper, so a cargo install / cargo build binary
does not carry it — that binary tells you as much and points here. Run the
teardown through npx without installing globally (npx still downloads the package
and its platform binary into the npm cache), then remove your binary:
npx -y @sdsrs/code-graph uninstall # statusline, hooks, cache
cargo uninstall code-graph-mcp # or delete the target/release binary
MCP Tools
tools/list advertises exactly these seven. Several older niche tools were folded into flags on them, so one call now covers what used to take a separate tool:
| Tool | Description |
|---|---|
project_map |
Full project architecture: modules, dependencies, entry points, hot functions. include_centrality adds architectural chokepoints |
semantic_code_search |
Hybrid BM25 + vector search (RRF) for AST nodes. Supports compact mode |
get_call_graph |
Trace upstream/downstream call chains for a function. Pass route_path='GET /api/x' to trace an HTTP route → handler → downstream instead |
get_ast_node |
One symbol with signature, body and relations. include_impact adds the blast radius, include_similar embedding-similar nodes, include_references callers/callees. Supports compact mode |
module_overview |
Symbols in a directory or file, grouped by type and caller count. include_dead lists unreferenced symbols under the path; include_deps adds the file dependency graph (single-file paths only) |
ast_search |
Search AST nodes by text and/or structural filters (type, return type, params) |
find_references |
Find all references to a symbol (callers, importers, inheritors, implementors, value/type references). Supports compact mode |
Output budget. project_map, module_overview, get_call_graph and get_ast_node take an optional max_tokens (100-100000, counted as bytes/3 of the JSON answer). The answer is ranked by caller count; lower-ranked items are first shortened (no key symbols, no signature, no source body), then left out, and never cut in the middle. A budget object reports what was shortened or left out and budget.next holds the CLI command that returns it (one per section that lost entries, joined by ; ). On module_overview and project_map, budget.over_budget is true when even the fixed part of the answer is larger than the budget. Without max_tokens the answer is unchanged. Every existing size cut in these four tools (hot_functions_truncated, active_capped, the call-graph rollup, compressed_node, _truncated) now carries a next command too.
Hidden aliases. These names are not in tools/list but still dispatch via tools/call, so existing clients keep working: trace_http_chain / find_http_route (→ get_call_graph with route_path), read_snippet (→ get_ast_node), dependency_graph, find_similar_code, find_dead_code, plus the management tools start_watch, stop_watch, get_index_status and rebuild_index. impact_analysis is removed — calling it returns Unknown tool; use get_ast_node with include_impact=true, or the CLI's impact --json for the full report.
code-graph MCP 질문
code-graph MCP를 Claude Code에 추가하려면 어떻게 하나요?
터미널에서 claude mcp add code-graph-mcp -- npx -y @sdsrs/code-graph를 실행합니다. 모든 프로젝트에서 사용할 수 있게 하려면 --scope user를 추가합니다.
code-graph MCP를 Cursor에 추가하려면 어떻게 하나요?
~/.cursor/mcp.json를 열고 mcpServers 아래에 서버를 추가합니다. 위 설치 섹션에 표시된 Cursor 구성을 사용합니다.
code-graph MCP는 어떤 도구를 제공하나요?
7개 도구를 제공합니다. 예: project_map, semantic_code_search, get_call_graph, get_ast_node, module_overview.
지원하는 프로그래밍 언어는 무엇인가요?
TypeScript, JavaScript, Go, Python, Rust, Java, C#, Kotlin, Ruby, PHP, Swift, Dart, C, C++ 등 다양한 언어를 지원하며, 언어별로 AST 깊이가 다를 수 있습니다.
코드 변경 사항은 어떻게 처리하나요?
Merkle tree 기반의 변경 감지 기술과 파일 시스템 워처를 활용한 증분 인덱싱을 통해 변경된 파일만 다시 인덱싱합니다.
HTTP 라우트를 추적할 수 있나요?
네, Express/Connect, Flask/FastAPI, Go net/http, Rust axum과 같은 프레임워크에서 라우트 경로를 백엔드 핸들러 함수로 매핑할 수 있습니다.