Skip to main content
Glama
ArcherLin13

cpp-coro-graph

by ArcherLin13

cpp-coro-graph (V1)

구문 수준의 C++17 코루틴 + 디바이스 도메인 그래프.
주요 대상: Linux. 표준 라이브러리만 사용하는 Python 3.9+ (실행에 pip 의존성 불필요).

V1이 할 수 있는 것:

  • 모든 함수를 노드로**: 정의 {...} 선언 Foo(); / = default / = delete (헤더 포함)

  • 클래스/구조체 멤버는 Class::Method로 한정 (ctor/dtor 포함)

  • exec::task<…> Name / co_await / co_return이 있는 함수 찾기

  • co_await Foo(…)에서 await 엣지를 그리고 일반 **calls**도 그립니다

  • 멤버 파이프라인: SosModel::Call 내부의 co_await m.Init()SosModel::Init으로 해석됩니다 (둘러싼 클래스 + 지역 변수 SosModel m)

  • rules/devices.json을 통해 디바이스 도메인(cpu / gpu / npu / dsp) 태그 지정

  • SQLite DB + HTML 시각화 + CLI (query / callers / callees / explore) + MCP

V1이 할 수 없는 것:

  • 템플릿 / 매크로 / 오버로드 해석 (나중에 compile_commands 필요)

  • 크로스 스레드 재개 / 시간 기반의 실제 병렬 엣지

  • 완벽한 C++ 파싱 (정규식 + 중괄호 매칭, 컴파일러가 아님)

Linux에 설치

git clone https://github.com/ArcherLin13/cpp-coro-graph.git
cd cpp-coro-graph

# option A — no install (recommended for a quick try)
chmod +x scripts/cpp-coro-graph scripts/index_repo.sh
./scripts/cpp-coro-graph index /path/to/your/repo

# option B — install CLI on PATH
python3 -m pip install -e .
cpp-coro-graph index /path/to/your/repo

python3(3.9+)만 필요합니다. 표준 라이브러리의 sqlite3 모듈을 사용합니다.

Related MCP server: cpp-semantic-graph

Linux 코드 트리 인덱싱

# one-shot: index + HTML + status
./scripts/index_repo.sh /path/to/your/linux/repo

# or step by step
python3 -m cpp_coro_graph index /path/to/your/linux/repo
python3 -m cpp_coro_graph viz --db /path/to/your/linux/repo/.cpp-coro-graph/graph.db
python3 -m cpp_coro_graph status --db /path/to/your/linux/repo/.cpp-coro-graph/graph.db

출력물:

  • /path/to/your/linux/repo/.cpp-coro-graph/graph.db

  • /path/to/your/linux/repo/.cpp-coro-graph/graph.html (브라우저에서 열기)

소스가 있는 Linux 머신(또는 WSL2 Linux 파일시스템)에서 도구를 실행하세요. WSL에서 /mnt/c/...를 통해 인덱싱하지 마세요.

스모크 테스트:

./scripts/cpp-coro-graph index fixtures/sample --db fixtures/sample/.cpp-coro-graph/graph.db
./scripts/cpp-coro-graph viz --db fixtures/sample/.cpp-coro-graph/graph.db

시각화 (모듈 트렁크, 전체가 아님)

기본 HTML은 모듈 → 엔트리 → await 트렁크 → 더블클릭 확장입니다:

# recommended: one module’s entries + main await flow
python3 -u -m cpp_coro_graph -q viz --db "$DB" --module path/to/module --depth 1

# pin one entry
python3 -u -m cpp_coro_graph -q viz --db "$DB" --around Call --depth 1

# legacy full graph (avoid on large trees)
python3 -u -m cpp_coro_graph -q viz --db "$DB" --full

브라우저에서: 모듈을 선택하고 엔트리 칩을 클릭한 다음, 노드를 더블클릭하여 다음 await 레이어를 확장하세요. 필요하면 calls를 토글하세요. 이 모드에서는 파일/contains 엣지가 표시되지 않습니다.

그래프 쿼리 (codegraph 스타일)

대형 그래프(10k+ 노드) — HTML보다 이 방법을 권장합니다:

DB=/path/to/repo/.cpp-coro-graph/graph.db

# search symbols
python3 -u -m cpp_coro_graph -q query OnSos --db "$DB"

# who calls / awaits this
python3 -u -m cpp_coro_graph -q callers OnSos --db "$DB"

# what it calls / awaits / spawns
python3 -u -m cpp_coro_graph -q callees OnSos --db "$DB" --edge-kind calls,await,spawns

# neighborhood BFS
python3 -u -m cpp_coro_graph -q explore OnSos --depth 2 --db "$DB"

# incoming blast radius
python3 -u -m cpp_coro_graph -q impact OnSos --depth 2 --db "$DB"

# JSON for scripting
python3 -u -m cpp_coro_graph -q callers OnSos --db "$DB" --json

인덱싱된 저장소로 cd한 경우 --db는 생략할 수 있습니다 (상위 디렉터리에서 .cpp-coro-graph/graph.db를 검색합니다).

Cursor MCP (선택 사항)

{
  "mcpServers": {
    "cpp-coro-graph": {
      "command": "python3",
      "args": [
        "-m", "cpp_coro_graph", "mcp",
        "--db", "/path/to/your/linux/repo/.cpp-coro-graph/graph.db"
      ],
      "cwd": "/path/to/cpp-coro-graph"
    }
  }
}

도구: coro_explore, coro_stats.

사용자 정의 디바이스 규칙

rules/devices.json을 편집하거나 --rules your.json을 전달하세요:

{
  "patterns": [
    {"match": "RunOnNpu", "domain": "npu", "backend": "custom"},
    {"match": "clEnqueue", "domain": "gpu", "backend": "opencl"}
  ]
}

첫 번째 일치 항목이 우선합니다. 더 길고 구체적인 문자열을 먼저 배치하세요.

엣지 종류 (4개뿐)

종류

시각화

의미

calls

실선

직접 / 동기 호출 (스레드 헬퍼 포함)

await

점선

co_await / CO_AWAIT

contains

회색

파일이 함수/클래스를 소유함

inherits

녹색 점선

class Child : public Base

callers / callees는 기본적으로 제어 = calls+await만 사용합니다 (파일/상속 제외). 따라서 두 방향이 구별됩니다.

python3 -u -m cpp_coro_graph -q callees Call --db "$DB"           # await+calls
python3 -u -m cpp_coro_graph -q callers Init --db "$DB"
python3 -u -m cpp_coro_graph -q explore SosModel --edge-kind inherits,contains --db "$DB"

건너뛰는 디렉터리

.git, build, out, third_party, node_modules, .codegraph, bazel-*, .repo, prebuilts, …

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    Not graded
    quality
    F
    maintenance
    Provides a local code knowledge graph for Java projects, enabling querying of classes, methods, fields, calls, inheritance, and imports via MCP tools like query, context, impact, and cypher.
    1
  • F
    license
    Not graded
    quality
    B
    maintenance
    Builds a semantic knowledge graph of C++ code and exposes 9 MCP tools for AI assistants to search classes, functions, inheritance, callers, callees, overrides, and more.
    3
  • F
    license
    Not graded
    quality
    A
    maintenance
    CodeGraph MCP is a powerful standalone tool that parses your entire C/C++ codebase into a semantic knowledge graph and seamlessly exposes it to AI coding assistants via the Model Context Protocol (MCP). By providing AI (like Claude Desktop, Cursor, or Google Antigravity) with a structural map of your project—including caller/callee relationships, file dependencies, and dynamic function definition

View all related MCP servers

Related MCP Connectors

  • Code intelligence for coding agents: semantic, AST, graph, and full-text search. 279+ languages.

  • MCP server for static security analysis of Android source code

  • Persistent memory and cross-session learning for AI coding assistants (hosted remote MCP).

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ArcherLin13/cpp-coro-graph'

If you have feedback or need assistance with the MCP directory API, please join our Discord server