Skip to main content
Glama

CKB β€” Code Knowledge Backend

Know your code. Change it safely. Ship with confidence.

npm version Website Documentation LIP LIP docs

CKB transforms your codebase into a queryable knowledge base. Ask questions, understand impact, find owners, detect dead codeβ€”all through CLI, API, or AI assistants.

Think of it as a senior engineer who knows every line of code, every decision, and every ownerβ€”available 24/7 to answer your questions.


Instant Answers to Hard Questions

Question

Without CKB

With CKB

"What breaks if I change this?"

Grep and hope

Precise blast radius with risk score

"Who should review this PR?"

Guess from git blame

Data-driven reviewer suggestions

"Is this code still used?"

Delete and see what breaks

Confidence-scored dead code detection

"What tests should I run?"

Run everything (30 min)

Run affected tests only (2 min)

"How does this system work?"

Read code for hours

Query architecture instantly

"Who owns this code?"

Search CODEOWNERS manually

Ownership with drift detection

"Are there exposed secrets?"

Manual grep for patterns

Automated scanning with 26 patterns


Related MCP server: codebase-memory-mcp

What You Can Do

πŸ” Understand β€” Semantic search, call graphs, usage tracing, architecture maps

⚑ Analyze β€” Impact analysis, risk scoring, hotspot detection, coupling analysis

πŸ›‘οΈ Protect β€” Affected test detection, breaking change warnings, PR risk assessment

πŸ” Secure β€” Secret detection, credential scanning, security-sensitive code identification

πŸ‘₯ Collaborate β€” Ownership lookup, reviewer suggestions, architectural decisions (ADRs)

πŸ“Š Improve β€” Dead code detection, tech debt tracking, documentation coverage

πŸš€ Compound Operations β€” Single-call tools (explore, understand, prepareChange) reduce AI tool calls by 60-70%

πŸ”— Integrate β€” CLI, HTTP API, MCP for AI tools, CI/CD pipelines, custom scripts


Try It Now

# See what's risky in your codebase
ckb hotspots --format=human

# Check what changed and what might break
ckb diff-summary --format=human

# Scan for exposed secrets
ckb audit --format=human

# Check architecture at a glance
ckb arch --format=human

# Check system status
ckb status

Works Everywhere

AI Assistants

CI/CD

Your Tools

Claude Code, Cursor, Windsurf, VS Code, Grok

GitHub Actions, GitLab CI

CLI, HTTP API, Scripts

83% token reduction with smart presetsβ€”load only the tools you need.

# One command to connect to Claude Code
ckb setup

Building your own tools? Use CKB as a backend via CLI, HTTP API, or MCP. See the Integration Guide for examples in Node.js, Python, Go, and shell scripts.


Learn More

Resource

Description

πŸ“– Features Guide

Complete feature list with examples

πŸ’¬ Prompt Cookbook

Real prompts for real problems

πŸ”Œ Integration Guide

Use CKB in your own tools and scripts

⚑ Impact Analysis

Blast radius, affected tests, PR risk

πŸ”§ CI/CD Integration

GitHub Actions, GitLab CI templates


Quick Start

# Install globally
npm install -g @tastehub/ckb

# Or run directly with npx (no install needed)
npx @tastehub/ckb init

Option 2: Homebrew (macOS/Linux)

brew tap SimplyLiz/ckb
brew install ckb

Option 3: Build from Source

git clone https://github.com/SimplyLiz/CodeMCP.git
cd CodeMCP
go build -o ckb ./cmd/ckb

Setup

# 1. Initialize in your project
cd /path/to/your/project
ckb init   # or: npx @tastehub/ckb init

# 2. Generate SCIP index (optional but recommended)
ckb index  # auto-detects language and runs appropriate indexer

# 3. Connect to Claude Code
ckb setup  # creates .mcp.json automatically

# Or manually:
claude mcp add --transport stdio ckb -- npx @tastehub/ckb mcp

Token efficiency shown at startup:

CKB MCP Server v9.3.0
  Active tools: 25 / 110 (22%)
  Estimated context: ~4k tokens
  Preset: core

Now Claude can answer questions like:

  • "What calls the HandleRequest function?"

  • "How is ProcessPayment reached from the API?"

  • "What's the blast radius if I change UserService?"

  • "Who owns the internal/api module?"

  • "Is this legacy code still used?"

Why CKB?

Without CKB

With CKB

AI greps for patterns

AI navigates semantically

"I found 47 matches for Handler"

"HandleRequest is called by 3 routes via CheckoutService"

Guessing at impact

Knowing the blast radius with risk scores

Reading entire files for context

Getting exactly what's relevant

"Who owns this?" β†’ search CODEOWNERS

Instant ownership with reviewer suggestions

"Is this safe to change?" β†’ hope

Hotspot trends + impact analysis

Three Ways to Use It

Interface

Best For

MCP

AI-assisted development β€” Claude, Cursor, Windsurf, VS Code, OpenCode, Grok

CLI

Quick lookups from terminal, scripting

HTTP API

IDE plugins, CI integration, custom tooling

How Indexing Works

CKB uses SCIP indexes to understand your code. Think of it like a database that knows where every function is defined, who calls it, and how everything connects.

The Basics

# 1. Generate an index (auto-detects language)
ckb index

# 2. Check if your index is fresh
ckb status

Without an index, CKB still works using tree-sitter parsing (basic mode), but with an index you get:

  • Cross-file references ("who calls this function?")

  • Precise impact analysis

  • Call graph navigation

Language Support

Not all languages are equal. CKB classifies languages into quality tiers based on indexer maturity:

Tier

Quality

Languages

Tier 1

Full support, all features

Go

Tier 2

Full support, minor edge cases

TypeScript, JavaScript, Python

Tier 3

Basic support, call graph may be incomplete

Rust, Java, Kotlin, C++, Ruby, Dart

Tier 4

Experimental

C#, PHP

Key limitations:

  • Incremental indexing is Go-only. Other languages require full reindex.

  • TypeScript monorepos may need --infer-tsconfig flag

  • C/C++ requires compile_commands.json

  • Python works best with activated virtual environment

Run ckb doctor --tier standard to check if your language tools are properly installed.

See Language Support for indexer installation, known issues, and the full feature matrix.

Keeping Your Index Fresh

Your index becomes stale when you make commits. CKB offers several ways to stay current:

Method

Command

When to Use

Manual

ckb index

One-off updates, scripts

Watch mode

ckb index --watch

Auto-refresh during development

MCP watch

ckb mcp --watch

Auto-refresh in AI sessions

CI webhook

POST /api/v1/refresh

Trigger from CI/CD

Quick start for AI sessions:

ckb mcp --watch  # Auto-reindexes every 30s when stale

Check staleness:

ckb status
# Shows: "5 commits behind HEAD" or "Up to date"

For Go projects, CKB uses incremental indexingβ€”only changed files are processed, making updates fast.

See the Index Management Guide for complete documentation.

Features

Feature

Description

Compound Operations

explore, understand, prepareChange β€” single-call tools that reduce AI overhead by 60-70%

Code Navigation

Semantic search, call graphs, trace usage, find entrypoints

Impact Analysis

Blast radius, risk scoring, affected tests, breaking changes (compareAPI)

Architecture

Module overview, ADRs, dependency graphs, explain origin

Ownership

CODEOWNERS + git blame, reviewer suggestions, drift detection

Code Quality

Dead code detection (findDeadCode), coupling analysis, complexity

Security

Secret detection, credential scanning, allowlists

Documentation

Doc-symbol linking, staleness detection, coverage metrics

Multi-Repo

Federation, API contracts, remote index serving

Runtime

OpenTelemetry integration, observed usage, production dead code

Streaming

SSE streaming for findReferences, searchSymbols with real-time progress

Automation

Daemon mode, watch mode, webhooks, incremental indexing

πŸ“– Full Features Guide β€” Detailed documentation with examples

πŸ“‹ Changelog β€” Version history

PR Review

CKB review runs 21 quality checks in 5 seconds β€” secrets, breaking changes, dead code, complexity, test gaps, bug patterns, and more. Zero tokens, zero API calls.

When your AI assistant (Claude Code, Cursor, Windsurf) reviews a PR, it calls CKB first and gets structured analysis in ~1k tokens. Then it only reads the files that matter β€” saving 50-80% of tokens on large PRs.

ckb review --base=main              # Human-readable review
ckb review --base=main --ci         # CI mode (exit codes)
ckb review --base=main --post=123   # Post as PR comment

Works in CI without any LLM:

- run: npx @tastehub/ckb review --base=main --ci --format=sarif > review.sarif

Without CKB

With CKB

LLM tokens on 100-file PR

~200k

~50k

Files LLM reads

all

~10 (CKB-flagged)

Secrets/breaking/dead-code checked

no

yes (all files)

πŸ“– How it helps AI review Β· Benchmarks Β· CI Integration Β· Quickstart

CLI

ckb status           # System health (with remediation suggestions)
ckb search Handler   # Find symbols
ckb diff-summary     # Analyze what changed
ckb hotspots         # Risky areas
ckb arch             # Architecture overview
ckb ownership        # File/path ownership
ckb mcp              # Start MCP server

Compound Operations (via MCP):

# These tools combine multiple queries into single calls
explore      # Area exploration: symbols, dependencies, hotspots
understand   # Symbol deep-dive: refs, callers, explanation
prepareChange # Pre-change analysis: impact, tests, risk
batchGet     # Fetch up to 50 symbols at once
batchSearch  # Run up to 10 searches at once

πŸ“– User Guide β€” All CLI commands and options

HTTP API

# Start the HTTP server
ckb serve --port 8080

# Example calls
curl http://localhost:8080/health
curl http://localhost:8080/status
curl "http://localhost:8080/search?q=NewServer"
curl http://localhost:8080/architecture
curl "http://localhost:8080/ownership?path=internal/api"
curl http://localhost:8080/hotspots

# Index Server Mode (v7.3) - serve indexes to remote clients
ckb serve --port 8080 --index-server --index-config config.toml

# Index server endpoints
curl http://localhost:8080/index/repos
curl http://localhost:8080/index/repos/company%2Fcore-lib/meta
curl "http://localhost:8080/index/repos/company%2Fcore-lib/symbols?limit=100"
curl "http://localhost:8080/index/repos/company%2Fcore-lib/search/symbols?q=Handler"

# Upload endpoints (with compression + auth)
curl -X POST http://localhost:8080/index/repos \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer ckb_xxx" \
  -d '{"id":"my-org/my-repo","name":"My Repo"}'

gzip -c index.scip | curl -X POST http://localhost:8080/index/repos/my-org%2Fmy-repo/upload \
  -H "Content-Encoding: gzip" \
  -H "Authorization: Bearer ckb_xxx" \
  --data-binary @-

# Token management (index server admin)
ckb token create --name "ci-upload" --scope upload    # Create API key
ckb token list                                         # List all tokens
ckb token revoke ckb_xxx                              # Revoke a token
ckb token rotate ckb_xxx                              # Rotate (new secret, same ID)

MCP Integration

CKB works with any MCP-compatible AI coding tool.

# Auto-configure for current project
npx @tastehub/ckb setup

# Or add globally for all projects
npx @tastehub/ckb setup --global

Or manually add to .mcp.json:

{
  "mcpServers": {
    "ckb": {
      "command": "npx",
      "args": ["@tastehub/ckb", "mcp"]
    }
  }
}

Add to ~/.cursor/mcp.json (global) or .cursor/mcp.json (project):

{
  "mcpServers": {
    "ckb": {
      "command": "npx",
      "args": ["@tastehub/ckb", "mcp"]
    }
  }
}

Add to ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "ckb": {
      "command": "npx",
      "args": ["@tastehub/ckb", "mcp"]
    }
  }
}

Add to your VS Code settings.json:

{
  "mcp": {
    "servers": {
      "ckb": {
        "type": "stdio",
        "command": "npx",
        "args": ["@tastehub/ckb", "mcp"]
      }
    }
  }
}

Add to opencode.json in project root:

{
  "mcp": {
    "ckb": {
      "type": "local",
      "command": ["npx", "@tastehub/ckb", "mcp"],
      "enabled": true
    }
  }
}
# Auto-configure for current project
npx @tastehub/ckb setup --tool=grok

# Or add globally
npx @tastehub/ckb setup --tool=grok --global

Or manually add to .grok/settings.json (project) or ~/.grok/user-settings.json (global):

{
  "mcpServers": {
    "ckb": {
      "name": "ckb",
      "transport": "stdio",
      "command": "npx",
      "args": ["@tastehub/ckb", "mcp"]
    }
  }
}

Claude Desktop doesn't have a project context, so you must specify the repository path.

Automatic setup (recommended):

cd /path/to/your/repo
ckb setup --tool=claude-desktop

Manual configuration β€” add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "ckb": {
      "command": "npx",
      "args": ["-y", "@tastehub/ckb", "mcp"],
      "env": {
        "CKB_REPO": "/path/to/your/repo"
      }
    }
  }
}

The CKB_REPO environment variable tells CKB which repository to analyze. Claude Desktop can only work with one repository at a time.

Use cmd /c wrapper in any config above:

{
  "mcpServers": {
    "ckb": {
      "command": "cmd",
      "args": ["/c", "npx", "@tastehub/ckb", "mcp"]
    }
  }
}

CKB exposes 110+ tools, but most sessions only need a subset. Use presets to reduce token overhead by up to 77%:

# List all available presets with tool counts and token estimates
ckb mcp --list-presets

# Default: core preset (25 essential tools)
ckb mcp

# Workflow-specific presets
ckb mcp --preset=core        # 25 tools - search, explain, impact (default)
ckb mcp --preset=review      # 42 tools - core + diff, ownership, PR review
ckb mcp --preset=refactor    # 42 tools - core + coupling, dead code
ckb mcp --preset=federation  # 46 tools - core + cross-repo
ckb mcp --preset=docs        # 34 tools - core + doc-symbol linking
ckb mcp --preset=ops         # 43 tools - core + jobs, webhooks, metrics
ckb mcp --preset=full        # 110 tools - complete feature set

In MCP config:

{
  "mcpServers": {
    "ckb": {
      "command": "npx",
      "args": ["@tastehub/ckb", "mcp", "--preset=review"]
    }
  }
}

The AI can dynamically expand the toolset mid-session using the expandToolset tool.

Under the Hood

CKB orchestrates multiple code intelligence backends, using whatever is available and stacking their strengths β€” more backends running means richer answers:

  • Cartographer β€” Fast structural analysis (architecture, dependencies, blast-radius, coupling, directory rollup) that needs no index and works the moment CKB is installed. Compiled into the binary, so it ships in the npm and Homebrew builds by default.

  • SCIP β€” Precise, pre-indexed symbol data for exact definitions, references, and call graphs (run ckb index)

  • LSP β€” Real-time language server queries

  • Git β€” Blame, history, churn analysis, ownership

  • LIP β€” Semantic embedding daemon for nearest-neighbour search and re-ranking. Runs as a separate, optional daemon β€” install and start it alongside CKB.

Results are merged intelligently and compressed for LLM context limits. Every backend except Git is optional; CKB degrades gracefully to whatever is present.

LIP enhances semantic search, PR novelty detection, test discovery, file boundary analysis, and architecture coupling signals. When LIP is running alongside CKB, search quality improves significantly β€” especially for natural-language queries that don't match symbol names literally. See Hybrid Retrieval for details, or the LIP documentation.

Persistent knowledge survives across sessions:

  • Module Registry β€” Boundaries, responsibilities, tags

  • Ownership Registry β€” CODEOWNERS + git-blame with time decay

  • Hotspot Tracker β€” Historical snapshots with trend analysis

  • Decision Log β€” ADRs with full-text search

Who Should Use CKB?

  • Developers using AI assistants β€” Give your AI tools superpowers

  • Teams with large codebases β€” Navigate complexity efficiently

  • Anyone doing refactoring β€” Understand impact before changing

  • Code reviewers β€” See the full picture of changes

  • Tech leads β€” Track architectural health over time

Limitations (Honest Take)

CKB excels at:

  • Static code navigationβ€”finding definitions, references, call graphs

  • Impact analysis for safe refactoring

  • Ownership lookup (CODEOWNERS + git blame)

  • Architecture and module understanding

CKB won't help with:

  • Dynamic dispatch / runtime behavior (use debugger)

  • Generated code that isn't indexed

  • Code generation, linting, or formatting

  • Cross-repo calls (use federation for this)

CKB is static analysis, not magic. Always verify critical decisions by reading the actual code.

πŸ“– Practical Limits β€” Full guide on accuracy, blind spots, and when to trust results

Documentation

See the Full Documentation Wiki for:

Requirements

Using npm (recommended):

  • Node.js 16+

  • Git

Building from source:

  • Go 1.21+

  • Git

Optional (for enhanced analysis):

  • SCIP indexer for your language (scip-go, scip-typescript, etc.) β€” run ckb index to auto-install

  • LIP v2.3+ semantic embedding daemon (requires Rust/cargo) β€” strongly recommended for best search quality (docs, crates.io):

    cargo install lip-cli
    lip daemon --socket ~/.local/share/lip/lip.sock

License

Free for:

  • Personal use

  • Open source projects

  • Startups & small businesses under $25k annual revenue

Commercial license required for organizations with $25k+ annual revenue. See pricing for Team and Enterprise plans, or LICENSE for full terms.

F
license - not found
-
quality - not tested
-
maintenance - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

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/SimplyLiz/ckb'

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