Local TypeScript contextfor agents
NCI indexes symbols, dependencies, and versions across packages—so agents move quickly with context that matches the latest APIs you ship against.
From install to query
Same path your terminal takes
Here we pull in effect as a real dependency so the later index has declarations to chew on.
Step 1
Add the dependency you care about
npm warn EBADENGINE … added 12 packages, and audited 13 packages in 3s 2 packages are looking for funding run `npm fund` for details found 0 vulnerabilities
Built for day-to-day engineering decisions
Four practical workflows where NCI removes API guesswork and speeds up your development cycle.
Search Real API Surfaces
Run structured queries over exported symbols and declaration graphs so you see what a package actually exposes — not only what a README claims.
Trace Dependency Context
Inspect package versions and declared dependencies to understand integration impact before shipping to production.
Build Fast, Repeatable Indexes
Index large node modules trees with cache-aware workflows so lookup stays fast across daily iteration.
Discover Invisible Semantics
Surface deprecation tags, visibility, and version notes from TypeScript declarations and JSDoc so agents and humans avoid internal or sunset APIs.
Interfaces for humans and agents
NCI exposes its relational index through a high-performance CLI and a native MCP server for AI agents.
CLI
Initialize, index, and query your declaration graph with a single native binary. Built for sub-millisecond response times and zero-config setup.
MCP
Bridge the gap between code and intelligence. Connect AI agents directly to your local index via the Model Context Protocol.
Benchmark
Average tool calls per task
3 pilot runs averaged, same tasks with and without NCI indexed in the agent
Cursor · Composer 2.5 benchmarks run through the Cursor SDK with the same tasks.
Common questions
Answers before you wire it in
Short clarifications on what NCI indexes, how agents reach it, and what to expect in a real repo.
- NCI builds a local SQLite index of TypeScript declarations and package relationships from the node_modules tree you actually compile against. Agents and the CLI query that index for exact signatures, overloads, and dependency edges instead of repeating open-ended text search every turn.
- Grep chases strings; public docs rarely match your pinned versions. NCI stores structured rows (symbols, versions, source packages) so nci query and nci sql return cite-ready answers from the same files on disk.
- Run nci index when dependencies change (after install, branch switch, or lockfile updates). The database is local; nothing is uploaded. Your config (nci.config.json) controls roots, scope, and output format.
- Yes. nci-mcp exposes nci_query and nci_sql plus primer resources. The MCP server shells out to the same nci binary as your terminal, so CLI and agent stay aligned.
- One shared nci.sqlite lives in your OS cache by default (set database or NCI_CACHE_DIR to override). Size grows with indexed packages—nci db status reports it; nci db clear wipes rows. Queries stay read-only.
- Skip it if you have no installed packages to index, or your task is only about files you already have open in the editor. NCI pays off on large trees, generated .d.ts files, and recurring agent questions about third-party APIs.