kernelee-mcp-tools
Architecture-index MCP tools for kernelee apps that combine static analysis and runtime wiring into a JSON index, enabling coding agents to query control flow and dependencies via the Model Context Protocol.
README
kernelee-mcp-tools
Architecture-index MCP tools for kernelee
apps — a ts-morph static scan and the kernel's own runtime wiring projection,
assembled into one JSON index and served to coding agents over the
Model Context Protocol. The TS port of
swift-kernelee's
KernelIntrospect / KernelIntrospectMCP.
A kernelee app's control flow is data (symbols, pipes, buffer states), so it can be indexed and queried instead of grepped: "who drives this endpoint?", "who writes this state?", "what is one hop downstream of this symbol?".
What it does
Three cooperating pieces:
- Foundation (
kernelee-mcp-tools) — builds anIndexDocumentfrom: the runtime wiring projection (projectWiringGraphover the app's live pipe catalog), a ts-morph static scan of the app's tsconfig program (input types,readsState/writesState, drive sites —dispatch/call/runand ReactuseDispatch— per-stage flows, fork branch selectors, declaration/implementation addresses), and a git stamp. Written atomically toindex.json. - MCP server (
kernelee-mcp-tools/server) —runKernelIntrospectMCPServer(configuration): a stdio MCP server that re-readsindex.jsonper query and prepends a staleness verdict (fresh/stale/unknownvs. the current working tree) to every answer. - CLI (
kernelee-introspect) —kernelee-introspect <config-module>regenerates the index from a consumer-supplied config and prints a one-line summary. Wire it into the app's build so the index can never silently rot.
The tools
| Tool | Args | Answers |
|---|---|---|
arch_overview |
— | The map: ring × device symbol counts, every endpoint headline, state / shared-stage / part lists. Start here. |
arch_endpoint |
key |
One endpoint in full: the stage tree (kinds, flows, notes, fork branches), its binding, and who drives / diverts-to / reads / writes around it. |
arch_state |
state |
One buffer state: declaration, named mutations, writers, and readers split into circuit vs. presentation. |
arch_trace |
from, edges?, depth? |
A typed-edge BFS neighborhood (drivenBy, divertsTo, callsSymbol, reads, writes, usesSharedStage) around any node. |
arch_refresh |
— | Runs the consumer's refresh command, then reloads the index. |
Misses come back with nearest-key suggestions rather than bare errors.
Consumer integration
The package hardcodes nothing about your app — everything arrives by injection. A consumer supplies two small pieces:
-
An
IntrospectConfigmodule for the CLI — repo root, tsconfig path, catalog file/function, state files, output path, and optional CI gates (failOnWiringIssues,failOnOffBufferControlValues, each with an allowlist):// package.json "scripts": { "introspect": "tsx node_modules/.bin/kernelee-introspect scripts/introspect.config.ts", "build": "npm run introspect && vite build" } -
A thin MCP launcher that bakes its defaults and starts the server — registered in the MCP client (e.g. Claude Code's
.mcp.json) as a stdio server:// scripts/introspect-mcp-server.mjs import { runKernelIntrospectMCPServer, configurationFromEnvironmentOverridingDefaults } from 'kernelee-mcp-tools/server'; await runKernelIntrospectMCPServer(configurationFromEnvironmentOverridingDefaults({ indexPath: '.claude/introspect/index.json', repoRoot: process.cwd(), refreshCommand: 'npm run introspect', refreshTimeoutSeconds: 300, }));Every default can be overridden via
KERNEL_INTROSPECT_INDEX_PATH,KERNEL_INTROSPECT_REPO_ROOT,KERNEL_INTROSPECT_REFRESH_COMMAND,KERNEL_INTROSPECT_REFRESH_TIMEOUT_SECONDS.
The reference consumer is
kernelee-lifegame — see its
scripts/introspect.config.ts, scripts/introspect-mcp-server.mjs, and
docs/kernel-introspect-mcp.md (an end-user guide with example outputs and
client-registration recipes).
Development
npm run build # tsc → dist/ (the bin needs this before first use)
npm test # vitest run — unit + MCP end-to-end integration tests
npm run typecheck # tsc --noEmit
Dependencies: @modelcontextprotocol/sdk, ts-morph, zod;
kernelee is a peer dependency. fixtures/authoringShapes/ is a minimal
kernelee app the scan tests run against; docs/ holds implementation
gotcha notes.
License
MIT © s-age
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.