Exposes a registry of code-knowledge graphs to AI clients for repository analysis, concept searching, and drift detection.
Also known as looptech-ai/understand-quickly, @looptech-ai/understand-quickly-mcp
- Stars
- 48
- Tools
- —
- Downloads, 30 days
- —
- Latest version
- 0.1.1
- Last commit
- Sep 17, 2026
- License
- Apache-2.0
What is understand-quickly MCP?
understand-quickly exposes a registry of code-knowledge graphs to AI clients for repository analysis, concept searching, and drift detection.
Summary generated from the project's README
About understand-quickly MCP server
Analyzing code repositories through knowledge graphs is what developers achieve using this MCP server. It connects AI clients like Claude Desktop, Cursor, or Codex to a registry of precomputed code-knowledge graphs, allowing for deep repository analysis and concept searching. The server runs locally via stdio JSON-RPC and requires Node 20 or higher to function.
Users can interact with the registry using four specific tools: list_repos to see available entries, find_graph_for_repo to locate a specific graph via a GitHub URL or ID, get_graph to retrieve parsed JSON data, and search_concepts to find specific terms. The system includes built-in drift detection, providing metadata such as how many commits a repository is behind its source.
This implementation is intentionally minimal and uses in-memory caching with a 60-second TTL for registry and stats data. It relies on a public registry.json and can be configured to use custom registry or stats sources via environment variables. While it lacks embeddings or streaming, it provides a structured way to navigate complex codebases through aggregated concept matches and graph-based node searches.
What you can do with it
- 1Searching for architectural conceptsRequest a list of common programming concepts across all available repositories in the registry.
Written from the project's README. Every use case is checked against a quote from it.
How to install understand-quickly MCP
Formats verified 10 Nov 2026Install understand-quickly MCP in Claude Code
$ claude mcp add understand-quickly -- npx -y @looptech-ai/understand-quickly-mcpInstall understand-quickly MCP in Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"understand-quickly": {
"command": "npx",
"args": [
"-y",
"@looptech-ai/understand-quickly-mcp"
]
}
}
}Install understand-quickly MCP in VS Code
.vscode/mcp.json
{
"servers": {
"understand-quickly": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@looptech-ai/understand-quickly-mcp"
]
}
}
}Install understand-quickly MCP in Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"understand-quickly": {
"command": "npx",
"args": [
"-y",
"@looptech-ai/understand-quickly-mcp"
]
}
}
}Install understand-quickly MCP in Codex
~/.codex/config.toml
[mcp_servers.understand-quickly] command = "npx" args = ["-y", "@looptech-ai/understand-quickly-mcp"]
Install understand-quickly MCP in Gemini CLI
~/.gemini/settings.json
{
"mcpServers": {
"understand-quickly": {
"command": "npx",
"args": [
"-y",
"@looptech-ai/understand-quickly-mcp"
]
}
}
}Configuration
UNDERSTAND_QUICKLY_REGISTRY
| Name | Description | |
|---|---|---|
| UNDERSTAND_QUICKLY_REGISTRY | — |
Automated checks
Ran Nov 13, 2026Full report →Passed our automated checks. That is not a security audit: read the code and give the server the narrowest access it needs. How checks work
- Source repository linked and reachablePass
- Open source license (OSI)Pass
- Commit or release in the last yearPass
- Package name not close to a popular packagePass
- Remote endpoint uses HTTPSNot checked
- Destructive tools are labelledNot checked
- No hidden instructions to the modelPass
- No critical advisory in the package or its dependenciesPass
README
View on GitHub@looptech-ai/understand-quickly-mcp
A thin Model Context Protocol server that exposes the understand-quickly registry to any MCP client (Claude Desktop, Codex, Cursor, etc.).
Status: stub-quality. It works end-to-end but is intentionally minimal — no streaming, no embeddings, no auth.
What it does
It wraps the public registry.json and exposes four tools:
| Tool | Params | Returns |
|---|---|---|
list_repos |
{ format?, tag?, status? } |
Array of { id, format, description, status, tags, last_synced, graph_url } |
find_graph_for_repo |
{ id?, github_url? } (at least one required) |
Single registry entry's graph_url + drift metadata, or { found: false, suggestions: [...] } with up to 5 fuzzy-matched ids |
get_graph |
{ id } |
Parsed graph JSON for that entry's graph_url |
search_concepts |
{ query, id? } |
Default: aggregated concept matches from the precomputed stats.json (single GET, cached 60s). With id: substring match across one graph's nodes. Falls back to a capped cross-graph fan-out if stats.json is unreachable. |
The registry response is cached in-memory for 60 seconds. stats.json uses an
identical 60-second TTL cache.
find_graph_for_repo
Accepts either an id (the registry id, owner/repo) or a github_url. The
URL parser tolerates:
https://github.com/owner/repohttps://github.com/owner/repo.githttps://github.com/owner/repo/(trailing slash)https://github.com/owner/repo/tree/main/...(branch / sub-path)git@github.com:owner/repo.git
When the entry is found, the response includes last_synced, last_sha,
source_sha, head_sha, commits_behind, and a pretty drift_summary
(e.g. "behind by 17 commits") when those fields are present in the registry.
If the entry is not found, the response is
{ found: false, suggestions: [...] } with up to 5 fuzzy-matched ids
(Levenshtein distance ≤ 3 against the lowercased id).
search_concepts
By default — that is, when id is not provided — search_concepts reads the
precomputed stats.json aggregate (a single, cached GET) and returns matching
concept terms with their entry counts and up to 3 sample registry ids. This
replaces the previous behaviour, which fanned out up to 5 graph fetches at
request time.
When id is provided, it falls back to the legacy single-graph node search
(substring match against id / label / name). When stats.json is
unavailable (404 or schema mismatch), it falls back to the capped cross-graph
fan-out for backward compatibility.
The source field on the response indicates which mode served the request:
"stats", "graph", or "fanout".
Install
cd mcp
npm install
npm run build # compiles TypeScript -> dist/
npm test # runs node:test across registry/cache and tool logic
Node 20+ is required (uses the global fetch).
Run locally
For development:
npm run dev
For a built binary:
npm start
The server speaks stdio JSON-RPC. It will not respond to keystrokes — point an MCP client at it.
Register with Claude Desktop
Add the following to Claude Desktop's claude_desktop_config.json (the path is
~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"understand-quickly": {
"command": "npx",
"args": [
"tsx",
"/absolute/path/to/understand-quickly/mcp/src/index.ts"
],
"env": {
"UNDERSTAND_QUICKLY_REGISTRY": "https://looptech-ai.github.io/understand-quickly/registry.json"
}
}
}
}
Replace /absolute/path/to/... with the actual path to your checkout. Restart
Claude Desktop after saving.
If you would rather run the compiled output, swap to:
{
"mcpServers": {
"understand-quickly": {
"command": "node",
"args": ["/absolute/path/to/understand-quickly/mcp/dist/index.js"]
}
}
}
Environment variables
| Variable | Default | Purpose |
|---|---|---|
UNDERSTAND_QUICKLY_REGISTRY |
https://looptech-ai.github.io/understand-quickly/registry.json |
Override the registry source (e.g. point at a local file or a fork). |
UNDERSTAND_QUICKLY_STATS |
https://looptech-ai.github.io/understand-quickly/stats.json |
Override the precomputed stats source consumed by search_concepts. |
Current limitations
- In-memory cache only. Every server process refetches once a minute. No cross-process or on-disk cache.
- Cross-graph fan-out is only a fallback. When
search_conceptsfalls back (no stats.json), it scans only the first 5status: okentries sequentially. - Substring search is dumb. No fuzzy matching, no ranking, no embeddings.
- No streaming or progress reporting. Tools block until the upstream responds.
- Best-effort node enumeration. The single-graph fallback assumes the graph
has a
nodes/entities/concepts/itemsarray; otherwise it walks top-level array values. - No retries or backoff on upstream
graph_urlfetch failures — failed fetches return an empty result for that entry instead of erroring out.
These are all acceptable for an MVP. If you need more, open an issue.
understand-quickly MCP questions
How do I add understand-quickly MCP to Claude Code?
Run claude mcp add understand-quickly -- npx -y @looptech-ai/understand-quickly-mcp in your terminal. Add --scope user to make it available in every project.
How do I add understand-quickly MCP to Cursor?
Open ~/.cursor/mcp.json and add the server under mcpServers, using the Cursor config shown in the install section above.
What tools does the server provide?
The server exposes four tools: list_repos, find_graph_for_repo, get_graph, and search_concepts.
Does this server support authentication?
No, the current version is a minimal implementation with no authentication.
How does the search_concepts tool work?
It primarily uses a precomputed stats.json file for aggregated concept matches, falling back to a cross-graph scan if the stats file is unavailable.