Local-first code-intelligence MCP server: parses your codebase into a queryable symbol graph for AI agents — deep TypeScript & Java analysis + 13-language baseline breadth, Prisma & Next.js aware.
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio · streamable-http · http counts 28 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
affected
-
circular_imports
-
explore
-
export_code_intel
-
file_skeleton
-
find_callees
-
find_callers
-
find_handlers
-
find_implementations
-
find_importers
-
find_imports
-
find_interfaces
-
find_overridden_by
-
find_overrides
-
find_referrers
-
find_returns
-
find_routes
-
find_type_users
-
find_types_used
-
get_code_snippet
-
get_graph_schema
-
impact_analysis
-
index_repository
-
index_status
-
node
-
search_code
-
search_symbol
-
sync_index
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit f1cb7ac · analyzer v33 · 7h ago
skills & prompt files 3
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 451
filesystem 68
- fs (weak) mka-rainmaker-ama-f1cb7ac/scripts/benchmark.mjs :9
import * as fs from "node:fs"; - fs (weak) mka-rainmaker-ama-f1cb7ac/scripts/build-bundle.mjs :19
import * as fs from "node:fs"; - fs (weak) mka-rainmaker-ama-f1cb7ac/scripts/java-resolution-rate.ts :2
import * as fs from "node:fs"; - fs mka-rainmaker-ama-f1cb7ac/src/analyzers/baseline/analyzer.ts :1
import * as fs from "node:fs"; - fs mka-rainmaker-ama-f1cb7ac/src/analyzers/baseline/csharp.ts :1
import * as fs from "node:fs"; - fs mka-rainmaker-ama-f1cb7ac/src/analyzers/baseline/go.ts :1
import * as fs from "node:fs"; - fs mka-rainmaker-ama-f1cb7ac/src/analyzers/baseline/kotlin.ts :1
import * as fs from "node:fs"; - fs mka-rainmaker-ama-f1cb7ac/src/analyzers/baseline/php.ts :1
import * as fs from "node:fs"; - fs mka-rainmaker-ama-f1cb7ac/src/analyzers/baseline/treesitter.ts :1
import * as fs from "node:fs"; - fs mka-rainmaker-ama-f1cb7ac/src/analyzers/dotenv/analyzer.ts :1
import * as fs from "node:fs"; - fs mka-rainmaker-ama-f1cb7ac/src/analyzers/java-bytecode/analyzer.ts :1
import * as fs from "node:fs"; - fs mka-rainmaker-ama-f1cb7ac/src/analyzers/java-deep/analyzer.ts :2
import * as fs from "node:fs"; - fs mka-rainmaker-ama-f1cb7ac/src/analyzers/java-deep/classpath.ts :2
import * as fs from "node:fs"; - fs mka-rainmaker-ama-f1cb7ac/src/analyzers/java-deep/source.ts :1
import * as fs from "node:fs"; - fs mka-rainmaker-ama-f1cb7ac/src/analyzers/prisma/analyzer.ts :1
import * as fs from "node:fs"; - fs mka-rainmaker-ama-f1cb7ac/src/analyzers/sfc/analyzer.ts :1
import * as fs from "node:fs"; - fs mka-rainmaker-ama-f1cb7ac/src/cli/commands/install.ts :1
import * as fs from "node:fs"; - fs mka-rainmaker-ama-f1cb7ac/src/cli/commands/lifecycle.ts :1
import * as fs from "node:fs"; - fs mka-rainmaker-ama-f1cb7ac/src/cli/commands/search.ts :1
import * as fs from "node:fs"; - fs mka-rainmaker-ama-f1cb7ac/src/cli/commands/status.ts :1
import * as fs from "node:fs"; - fs mka-rainmaker-ama-f1cb7ac/src/cli/commands/sync.ts :1
import * as fs from "node:fs"; - fs mka-rainmaker-ama-f1cb7ac/src/cli/commands/upgrade.ts :2
import { existsSync } from "node:fs"; - fs mka-rainmaker-ama-f1cb7ac/src/cli/index.ts :2
import * as fs from "node:fs"; - fs mka-rainmaker-ama-f1cb7ac/src/cli/query-runner.ts :1
import * as fs from "node:fs"; - fs mka-rainmaker-ama-f1cb7ac/src/indexer/ignore.ts :1
import * as fs from "node:fs"; - fs mka-rainmaker-ama-f1cb7ac/src/indexer/indexer.ts :2
import * as fs from "node:fs"; - fs mka-rainmaker-ama-f1cb7ac/src/indexer/watcher.ts :1
import * as fs from "node:fs"; - fs mka-rainmaker-ama-f1cb7ac/src/mcp/build-info.ts :1
import * as fs from "node:fs"; - fs mka-rainmaker-ama-f1cb7ac/src/mcp/startup.ts :1
import * as fs from "node:fs"; - fs mka-rainmaker-ama-f1cb7ac/src/query/service.ts :1
import * as fs from "node:fs"; - fs mka-rainmaker-ama-f1cb7ac/src/runtime/entrypoint.ts :1
import { realpathSync } from "node:fs"; - fs (weak) mka-rainmaker-ama-f1cb7ac/tests/analyzers/java-bytecode/analyzer.test.ts :1
import * as fs from "node:fs"; - fs (weak) mka-rainmaker-ama-f1cb7ac/tests/analyzers/java-deep/analyzer.test.ts :1
import * as fs from "node:fs"; - fs (weak) mka-rainmaker-ama-f1cb7ac/tests/cli/affected.test.ts :1
import * as fs from "node:fs"; - fs (weak) mka-rainmaker-ama-f1cb7ac/tests/cli/cli.test.ts :1
import * as fs from "node:fs"; - fs (weak) mka-rainmaker-ama-f1cb7ac/tests/cli/codex-install.test.ts :1
import * as fs from "node:fs"; - fs (weak) mka-rainmaker-ama-f1cb7ac/tests/cli/cycles.test.ts :1
import * as fs from "node:fs"; - fs (weak) mka-rainmaker-ama-f1cb7ac/tests/cli/files.test.ts :1
import * as fs from "node:fs"; - fs (weak) mka-rainmaker-ama-f1cb7ac/tests/cli/impact.test.ts :1
import * as fs from "node:fs"; - fs (weak) mka-rainmaker-ama-f1cb7ac/tests/cli/install.test.ts :1
import * as fs from "node:fs"; - fs (weak) mka-rainmaker-ama-f1cb7ac/tests/cli/lifecycle.test.ts :1
import * as fs from "node:fs"; - fs (weak) mka-rainmaker-ama-f1cb7ac/tests/cli/overrides.test.ts :1
import * as fs from "node:fs"; - fs (weak) mka-rainmaker-ama-f1cb7ac/tests/cli/query-relations.test.ts :1
import * as fs from "node:fs"; - fs (weak) mka-rainmaker-ama-f1cb7ac/tests/cli/query.test.ts :1
import * as fs from "node:fs"; - fs (weak) mka-rainmaker-ama-f1cb7ac/tests/cli/routes.test.ts :1
import * as fs from "node:fs"; - fs (weak) mka-rainmaker-ama-f1cb7ac/tests/cli/search.test.ts :1
import * as fs from "node:fs"; - fs (weak) mka-rainmaker-ama-f1cb7ac/tests/cli/skeleton.test.ts :1
import * as fs from "node:fs"; - fs (weak) mka-rainmaker-ama-f1cb7ac/tests/cli/status.test.ts :1
import * as fs from "node:fs"; - fs (weak) mka-rainmaker-ama-f1cb7ac/tests/cli/sync.test.ts :1
import * as fs from "node:fs"; - fs (weak) mka-rainmaker-ama-f1cb7ac/tests/cli/wasm-tier.test.ts :2
import * as fs from "node:fs"; - fs (weak) mka-rainmaker-ama-f1cb7ac/tests/indexer/file-size-cap.test.ts :1
import * as fs from "node:fs"; - fs (weak) mka-rainmaker-ama-f1cb7ac/tests/indexer/indexer.test.ts :1
import * as fs from "node:fs"; - fs (weak) mka-rainmaker-ama-f1cb7ac/tests/indexer/isolation.test.ts :1
import * as fs from "node:fs"; - fs (weak) mka-rainmaker-ama-f1cb7ac/tests/indexer/large-file-skip.test.ts :1
import * as fs from "node:fs"; - fs (weak) mka-rainmaker-ama-f1cb7ac/tests/indexer/persist.test.ts :1
import * as fs from "node:fs"; - fs (weak) mka-rainmaker-ama-f1cb7ac/tests/indexer/reindex.test.ts :1
import * as fs from "node:fs"; - fs (weak) mka-rainmaker-ama-f1cb7ac/tests/indexer/safe-root.test.ts :1
import * as fs from "node:fs"; - fs (weak) mka-rainmaker-ama-f1cb7ac/tests/indexer/sync.test.ts :1
import * as fs from "node:fs"; - fs (weak) mka-rainmaker-ama-f1cb7ac/tests/indexer/watcher.test.ts :1
import * as fs from "node:fs"; - fs (weak) mka-rainmaker-ama-f1cb7ac/tests/mcp/catchup.test.ts :1
import * as fs from "node:fs"; - fs (weak) mka-rainmaker-ama-f1cb7ac/tests/mcp/coverage.test.ts :1
import * as fs from "node:fs"; - fs (weak) mka-rainmaker-ama-f1cb7ac/tests/mcp/server.test.ts :1
import * as fs from "node:fs"; - fs (weak) mka-rainmaker-ama-f1cb7ac/tests/mcp/session.test.ts :1
import * as fs from "node:fs"; - fs (weak) mka-rainmaker-ama-f1cb7ac/tests/mcp/staleness.test.ts :1
import * as fs from "node:fs"; - fs (weak) mka-rainmaker-ama-f1cb7ac/tests/mcp/watch.test.ts :1
import * as fs from "node:fs"; - fs (weak) mka-rainmaker-ama-f1cb7ac/tests/runtime/entrypoint.test.ts :1
import * as fs from "node:fs"; - fs (weak) mka-rainmaker-ama-f1cb7ac/tests/runtime/wasm-tier.test.ts :2
import * as fs from "node:fs"; - fs (weak) mka-rainmaker-ama-f1cb7ac/tests/store/sqlite.test.ts :1
import * as fs from "node:fs";
shell / exec 9
- shell (weak) mka-rainmaker-ama-f1cb7ac/scripts/benchmark.mjs :8
import { execFileSync } from "node:child_process"; - shell (weak) mka-rainmaker-ama-f1cb7ac/scripts/build-bundle.mjs :17
import { execFileSync } from "node:child_process"; - shell mka-rainmaker-ama-f1cb7ac/src/analyzers/java-deep/analyzer.ts :1
import { spawnSync } from "node:child_process"; - shell mka-rainmaker-ama-f1cb7ac/src/analyzers/java-deep/classpath.ts :1
import { spawnSync } from "node:child_process"; - shell mka-rainmaker-ama-f1cb7ac/src/analyzers/sidecar/analyzer.ts :1
import { spawn } from "node:child_process"; - shell mka-rainmaker-ama-f1cb7ac/src/cli/commands/upgrade.ts :1
import { execFileSync } from "node:child_process"; - shell mka-rainmaker-ama-f1cb7ac/src/runtime/wasm-tier.ts :18
import { spawn } from "node:child_process"; - shell (weak) mka-rainmaker-ama-f1cb7ac/tests/cli/wasm-tier.test.ts :1
import { spawnSync } from "node:child_process"; - shell (weak) mka-rainmaker-ama-f1cb7ac/tests/runtime/wasm-tier.test.ts :1
import { spawnSync } from "node:child_process";
network 4
- net (weak) mka-rainmaker-ama-f1cb7ac/scripts/build-bundle.mjs :119
const res = await fetch(url); - net mka-rainmaker-ama-f1cb7ac/src/cli/commands/upgrade.ts :100
const res = await fetch(`https://api.github.com/repos/${REPO}/releases/latest`, { - net mka-rainmaker-ama-f1cb7ac/src/mcp/http.ts :2
import * as http from "node:http"; - net (weak) mka-rainmaker-ama-f1cb7ac/tests/mcp/http.test.ts :1
import type { AddressInfo } from "node:net";
secrets 2
- secrets mka-rainmaker-ama-f1cb7ac/src/graph/env-link.ts :3
/** The TS analyzer tags a `process.env.KEY` access with a candidate edge whose target - secrets mka-rainmaker-ama-f1cb7ac/src/indexer/indexer.ts :495
* `process.env.KEY` → the `.env` Variable origin node) over the full store — mirrors
database 1
- db (weak) mka-rainmaker-ama-f1cb7ac/tests/fixtures/ts-prisma-field/queries.ts :1
import { PrismaClient } from "@prisma/client";
tool registrations 28
- index_repository mka-rainmaker-ama-f1cb7ac/src/mcp/server.ts :250
- index_status mka-rainmaker-ama-f1cb7ac/src/mcp/server.ts :263
- sync_index mka-rainmaker-ama-f1cb7ac/src/mcp/server.ts :277
- search_symbol mka-rainmaker-ama-f1cb7ac/src/mcp/server.ts :291
- find_callers mka-rainmaker-ama-f1cb7ac/src/mcp/server.ts :346
- find_callees mka-rainmaker-ama-f1cb7ac/src/mcp/server.ts :368
- find_handlers mka-rainmaker-ama-f1cb7ac/src/mcp/server.ts :390
- find_routes mka-rainmaker-ama-f1cb7ac/src/mcp/server.ts :407
- find_overrides mka-rainmaker-ama-f1cb7ac/src/mcp/server.ts :424
- find_overridden_by mka-rainmaker-ama-f1cb7ac/src/mcp/server.ts :443
- find_referrers mka-rainmaker-ama-f1cb7ac/src/mcp/server.ts :462
- find_implementations mka-rainmaker-ama-f1cb7ac/src/mcp/server.ts :483
- find_interfaces mka-rainmaker-ama-f1cb7ac/src/mcp/server.ts :503
- find_importers mka-rainmaker-ama-f1cb7ac/src/mcp/server.ts :520
- find_imports mka-rainmaker-ama-f1cb7ac/src/mcp/server.ts :537
- find_type_users mka-rainmaker-ama-f1cb7ac/src/mcp/server.ts :554
- find_types_used mka-rainmaker-ama-f1cb7ac/src/mcp/server.ts :571
- find_returns mka-rainmaker-ama-f1cb7ac/src/mcp/server.ts :588
- get_code_snippet mka-rainmaker-ama-f1cb7ac/src/mcp/server.ts :606
- node mka-rainmaker-ama-f1cb7ac/src/mcp/server.ts :623
- file_skeleton mka-rainmaker-ama-f1cb7ac/src/mcp/server.ts :642
- impact_analysis mka-rainmaker-ama-f1cb7ac/src/mcp/server.ts :662
- get_graph_schema mka-rainmaker-ama-f1cb7ac/src/mcp/server.ts :694
- export_code_intel mka-rainmaker-ama-f1cb7ac/src/mcp/server.ts :709
- circular_imports mka-rainmaker-ama-f1cb7ac/src/mcp/server.ts :725
- affected mka-rainmaker-ama-f1cb7ac/src/mcp/server.ts :742
- search_code mka-rainmaker-ama-f1cb7ac/src/mcp/server.ts :772
- explore mka-rainmaker-ama-f1cb7ac/src/mcp/server.ts :806
install hooks 1
- prepublishOnly mka-rainmaker-ama-f1cb7ac/package.json :55
npm run build && npm test
declared dependencies 9
- @modelcontextprotocol/sdk@^1.13.0
- tree-sitter-wasms@^0.1.13
- typescript@^5.8.0
- web-tree-sitter@^0.20.8
- zod@^3.24.0
- @biomejs/biome@^1.9.0
- @types/node@^24.0.0
- tsx@^4.19.0
- vitest@^3.0.0
obfuscation 1
- dynamic require()/import() mka-rainmaker-ama-f1cb7ac/tests/runtime/wasm-tier.test.ts :27
const { createDefaultIndexer } = await import(${JSON.stringify(indexerModule)});