# Overview
> What CGraph is, the problem it solves, and how its pieces fit together.
[Source](https://open.nxtsoft.io/docs/cgraph/overview)

CGraph is a native C++ graph analysis engine for source trees. It scans a
project, extracts its structure into a deterministic graph, writes portable
exports, and exposes the same graph through a local daemon, a thin client, and
an MCP server — so coding agents navigate your code instead of grepping it.

## Why it exists

A coding agent that reads code by grepping sees text, not the graph of files,
symbols, and references that the text encodes. Every request re-derives that
structure from scratch, imperfectly, and the answer is only as good as the
search terms. There is no persistent, queryable model of the codebase for the
agent to reason over.

## What problem it solves

CGraph extracts the structure once and keeps it. Instead of "find every line
that mentions `parseConfig`", an agent asks "what calls `parseConfig`, and what
breaks if I change its signature" — and gets a precise answer from the graph
rather than a page of string matches.

## How it works

Extraction, a warm daemon, and an MCP server form a pipeline.

_Repository to query — extracted once, then kept warm_

```text
Repository -> Parser -> Resolver -> Graph -> Query
```

- **`cgraph`** — a one-shot CLI that scans a source tree into a deterministic
  graph and writes portable exports.
- **`graphd`** — a daemon that keeps the graph warm and can watch the tree.
- **`cgraph-client`** — a thin client for talking to the daemon.
- **`cgraph-mcp`** — an MCP server that exposes the graph to coding agents.

## What it does

  - **Tree-sitter extraction** — C, C++, Java, JavaScript, TypeScript, TSX, Kotlin, Scala, Groovy, Python, and Ruby, plus structured extraction for Apex, Delphi, and MSBuild/XML.
  - **8 MCP tools** — query, explain, impact, path, context, update, status, and shutdown.
  - **6 export formats** — JSON, HTML, SVG, Obsidian, Cypher, and a call-flow view.
  - **Warm daemon** — Keeps the graph resident so queries don't re-scan the tree.

## When to use it

Reach for CGraph when an agent (or a developer) needs to reason about how a
codebase fits together — call relationships, impact of a change, paths between
symbols — rather than just find where a string appears. It complements, rather
than replaces, full-text search.

## Where to go next

Continue to [Getting Started](/docs/cgraph/getting-started) for the shortest path
to a working graph, or [Installation](/docs/cgraph/installation) for the full
build.
