cpp-coro-graph
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/repopython3(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개뿐)
종류 | 시각화 | 의미 |
| 실선 | 직접 / 동기 호출 (스레드 헬퍼 포함) |
| 점선 |
|
| 회색 | 파일이 함수/클래스를 소유함 |
| 녹색 점선 |
|
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, …
This server cannot be installed
Maintenance
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
- FlicenseNot gradedqualityFmaintenanceProvides 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
- FlicenseNot gradedqualityBmaintenanceBuilds 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
- AlicenseNot gradedqualityBmaintenanceExposes code graphs across multi-program repositories via MCP, enabling humans and agents to query the fleet with evidence.MIT
- FlicenseNot gradedqualityAmaintenanceCodeGraph 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
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).
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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