mirror of
https://github.com/DeusData/codebase-memory-mcp.git
synced 2026-11-10 09:13:53 +08:00
Language expansion (13 → 25): Add Ruby, C, Bash, Zig, Elixir, Haskell, OCaml, HTML, CSS, YAML, TOML, HCL with tree-sitter grammars and language specs. Restore Erlang and SQL with extraction fixes. CLI install/update/uninstall commands: Auto-detect Claude Code and Codex CLI, register MCP server, install task-specific skills, self-update with SHA-256 verification. Embedded skills (4): exploring, tracing, quality, reference — auto-trigger in Claude Code for graph-first code discovery. Pipeline improvements: Docstring extraction, enrichment pass for params/returns/complexity, graceful context cancellation, improved test detection. 35-language benchmark (BENCHMARK.md): 12 questions × 35 repos, 91.8% overall score, Linux kernel stress test (20K nodes, zero timeouts). Replaces old benchmark artifacts.
1.7 KiB
1.7 KiB
Codebase Knowledge Graph
This project has a code knowledge graph available via MCP tools. Use it for structural questions instead of grep — one graph query returns what would take dozens of file-by-file searches.
Finding Code
- "Who calls X?" → use
trace_call_pathwithdirection=inbound - "What does X call?" → use
trace_call_pathwithdirection=outbound - "Find functions matching pattern" → use
search_graphwithname_pattern - "Find all routes" → use
search_graphwithlabel=Route - "Show codebase structure" → use
get_graph_schemafor overview
Tracing Dependencies
- Always discover exact names first:
search_graph(name_pattern=".*Partial.*") - Then trace:
trace_call_path(function_name="ExactName", direction="both") - Cross-service HTTP calls:
query_graph("MATCH (a)-[r:HTTP_CALLS]->(b) RETURN a.name, b.name, r.url_path") - Read source:
get_code_snippet(qualified_name="project.path.FunctionName")
Quality Analysis
- Dead code:
search_graphwithmax_degree=0,exclude_entry_points=true,relationship=CALLS,direction=inbound - High fan-out:
search_graphwithmin_degree=10,relationship=CALLS,direction=outbound - Change coupling:
query_graph("MATCH (a)-[r:FILE_CHANGES_WITH]->(b) WHERE r.coupling_score >= 0.5 RETURN ...")
Important
- Always check
list_projectsfirst — runindex_repositoryif the project is missing - Use
search_graphto discover exact names beforetrace_call_path(it requires exact match) - The graph doesn't index text content — use grep for string literals, error messages, config values
- Results default to 10 per page — check
has_moreand useoffsetto paginate - Use
projectparameter when multiple repos are indexed