Command Palette

Search for a command to run...

UnylyUnyly
Весь каталог

Injector

БесплатноНе проверен

Persistent daemon that compresses codebases via AST body folding before indexing them for AI coding assistants like Claude Code and Cursor 57-89% token reductio

GitHubEmbed

Описание

Persistent daemon that compresses codebases via AST body folding before indexing them for AI coding assistants like Claude Code and Cursor 57-89% token reduction with sub-millisecond queries, verified on Django, Spring, and Next.js.

README

AI coding assistants often fail because they retrieve the wrong context. On a large codebase, blindly dumping raw files into the prompt leads to hallucinations, slow responses, and high API costs.

Foldwork fixes this. It is a deterministic repository understanding engine that pre-indexes your entire codebase into a local SQLite catalog. It acts as the Context Layer for your IDE, serving exactly the functions the AI needs—no more, no less—maximizing the first-try success rate and reducing token usage by 41-89%.

I built this after my team's Claude API bill hit $400/month on a 500K line Spring Boot monorepo. After installing mcp-injector the same workflow costs ~$11/month. The difference is AST body folding (strips function bodies, keeps signatures) plus canonical determinism (byte-identical output every run so Anthropic's KV cache fires instead of miss).

No cloud. No telemetry. Runs entirely on your machine.--

Real-World Codebase Context Benchmarks

Estimate the impact of AST code compression on large open-source repositories (calculated at $2.00 / million input tokens for Claude Sonnet 5):

Repository Total Files Raw Context Tokens Compressed Context Tokens Token Reduction Cost Saved / Run
Django 2,359 5,554,607 596,752 89.3% $10.99
Tokio 789 1,597,813 444,164 72.2% $3.11
Gin 99 197,300 47,718 75.8% $0.39

Numbers are reproducible. Run the open-source benchmark tool on any public repository:
mcp-benchmark repository


What It Looks Like

Run mcp-benchmark on your own project to see your exact savings before installing anything:

mcp-benchmark ./your-project

════════════════════════════════════════════════════════════════════════════════
  mcp-injector Benchmark — context
  Tier 3 compression  |  $2.00/1M tokens  |  2026-07-15T12:00:00Z
════════════════════════════════════════════════════════════════════════════════

FILE                                          RAW TOKENS    COMPRESSED     SAVED   COST SAVED*
──────────────────────────────────────────────────────────────────────────────────────────
cmd/license-gen/main.go                            3,633           214       94%       $0.0072
main.go                                           17,555         1,917       89%       $0.0347
website/api/webhook.go                             2,682           295       89%       $0.0053
main_test.go                                       1,576           353       78%       $0.0031
──────────────────────────────────────────────────────────────────────────────────────────
TOTAL (4 files)                                   25,446         2,779     89.1%       $0.0503

  * Based on $2.00 / 1M input tokens

  💡 Running this codebase through Claude 10×/day costs $0.51/day raw.
     With mcp-injector:  $0.01/day.  You save $0.50/day ($15/month).

Tools

get_project_map

Returns a compressed structural overview of the workspace. Function bodies are folded and replaced with placeholders to reduce token usage.

  • tier (integer, optional): Compression tier to apply (default: 2).
  • unfolded_files (array of strings, optional): Workspace-relative paths or glob patterns for files to serve at full resolution (uncompressed).
  • path_prefixes (array of strings, optional): Scope the project map to specific microservices or packages, drastically reducing payload bloat.

injector_retrieve

Retrieves the full uncompressed source of a file from the local cache.

  • path (string, required): The workspace-relative path of the file to retrieve.
  • retrievalKey (string, optional): The SHA-256 retrieval key returned in a prior compressed payload.
  • start_line (integer, optional): 1-indexed start line for range retrieval.
  • end_line (integer, optional): 1-indexed end line for range retrieval.
  • expand_graph (boolean, optional): Resolves and appends cross-file dependencies (limited to 50 1st-degree dependencies).

injector_search

BM25-ranked full-text symbol search over the local SQLite catalog. Supports FTS5 boolean logic (e.g., user AND (auth OR login)).

  • query (string, required): FTS5 query string (bare terms, "phrase", prefix*).
  • limit (integer, optional): Maximum results (default: 20).
  • search_paths (array of strings, optional): Scope search to specific isolated directories.

injector_diagram

Generates a Mermaid sequence diagram for a given symbol by traversing its outbound dependencies (halts after 500 nodes).

  • symbol (string, required): The exact symbol name.
  • max_depth (integer, optional): Maximum traversal depth (default: 3).
  • include_primitives (boolean, optional): Include basic types (String, boolean) and framework boundaries.

injector_regex_search

Fallback for exact literal or regex searches against file contents. Bypasses FTS5 tokenization.

  • query (string, required): The string or regex pattern to search for.
  • is_regex (boolean, optional): Treats query as extended regex (-E).

injector_write_file

Write a full file to disk. CRITICAL: Prevents data loss by intercepting and rejecting payloads containing compressed fold markers.

injector_clear_cache

Wipes the SQLite index cache and triggers a clean cold-start full re-index.

injector_stats

Returns index status, current compression ratio, total files indexed, and cache hit rate.

injector_sync (Deprecated)

Read tools automatically wait for pending indexing implicitly. You never need to manually call this tool.


Quick Install

Install the daemon locally and configure your IDEs:

curl -fsSL https://foldwork.dev/install | sh

Automatically configures Claude Desktop, Cursor IDE, VS Code, Devin Desktop, and Antigravity.


Getting Started

Step 1: Check if your project qualifies for the free tier

Run the benchmark CLI on your project to see your token savings and line count:

mcp-benchmark ./your-project

If your project is under 50,000 lines, mcp-injector is completely free. The benchmark output shows your exact line count.

Step 2: Install the daemon

curl -fsSL https://foldwork.dev/install | sh

The installer auto-detects Claude Desktop, Cursor, VS Code, Devin Desktop, and Antigravity and writes the MCP config automatically. You should see output like:

* mcp-injector v0.2.0 installed to /usr/local/bin/mcp-injector
* Claude Desktop configured
* Cursor configured
Restart your IDE and mcp-injector will be active.

Step 3: Restart your IDE

The MCP server starts automatically when your IDE launches. No separate daemon process to manage.

Step 4: Verify it is working

In Claude Code or Cursor, ask Claude:

"Use get_project_map to show me the structure of this project"

Claude will call the mcp-injector tool and return a compressed map of your entire codebase. If you see module names, entry points, and dependency information - it is working.

Step 5: Get the full source when needed

When Claude needs to see the complete implementation of a compressed function, it automatically calls injector_retrieve. You can also trigger this explicitly:

"Show me the full implementation of UserService.java"

Claude will fetch the uncompressed source from the local cache.

Editing Code: You MUST use the injector_write_file tool to edit code. If Claude tries to write back folded placeholders into your source code, the daemon will hard-reject the payload to protect you from data loss.

Step 6: Check your savings

injector_stats

Or ask Claude directly: "Call injector_stats and tell me my current token savings."


Advanced Usage

Inspecting specific files uncompressed

Sometimes you need Claude to see the exact implementation of a file while keeping the rest compressed. Use the unfolded_files parameter:

In your MCP call or by asking Claude:

"Get the project map but show me src/auth/handler.go at full resolution"

This passes "unfolded_files": ["src/auth/handler.go"] to get_project_map. That file is served raw; everything else stays compressed.

Glob patterns work too:

  • "**/*_test.go" - all test files uncompressed
  • "src/auth/*.go" - all files in a directory uncompressed

Switching branches

mcp-injector installs a post-checkout git hook when it first runs. Branch switching automatically triggers a full re-index. You will see this in the daemon logs:

[mcp-injector] Branch switched to feature/auth-refactor, re-indexing...
[mcp-injector] Re-index complete in 4.2s (47,293 lines indexed)

Security First: Zero-Leak Guarantee

Enterprise security teams often block AI coding tools because developers accidentally leak sensitive credentials in their context window.

mcp-injector solves this locally. The daemon includes a built-in Shannon entropy filter that analyzes all AST strings and comments in real-time. If it detects high-entropy strings (like AWS Access Keys, SSH private keys, or database passwords), it dynamically redacts them as [REDACTED: high entropy] before they ever leave your machine. Your API credentials are never sent to Anthropic.

If your codebase has a hardcoded API key or AWS credential, the get_project_map response will include:

"secrets_redacted": 2,
"files_with_redactions": ["config/db.go", "scripts/deploy.sh"]

The actual values are replaced with [REDACTED: high entropy]. Variable names are preserved so Claude still understands the code structure.

Manual MCP configuration

If the auto-installer does not detect your IDE, add this to your MCP config manually:

{
  "mcpServers": {
    "mcp-injector": {
      "command": "/usr/local/bin/mcp-injector",
      "env": {
        "MCP_WORKSPACE": "/absolute/path/to/your/project"
      }
    }
  }
}

Note: VS Code supports "${workspaceFolder}", but Claude Desktop, Cursor, and Devin Desktop require a hardcoded absolute path to your project.

Config file locations:

  • Claude Desktop (Mac): ~/Library/Application Support/Claude/claude_desktop_config.json
  • Claude Desktop (Windows): %APPDATA%\Claude\claude_desktop_config.json
  • Claude Desktop (Linux): ~/.config/Claude/claude_desktop_config.json
  • Cursor: ~/.cursor/mcp.json
  • VS Code: .vscode/mcp.json
  • Devin Desktop: ~/.codeium/windsurf/mcp_config.json
  • Antigravity: ~/.gemini/antigravity/mcp_config.json

How It Works

  • Persistent Local Daemon: Indexes your repository structure into a high-performance WAL-mode SQLite database catalog.
  • Smart File Watchers: Monitors files incrementally via OS notification hooks (inotify/FSEvents) and local git post-checkout / post-merge triggers.
  • Branch-Aware Re-indexing: Installs a post-checkout git hook on startup. Switching branches triggers automatic workspace re-indexing. get_project_map always reflects your current branch including uncommitted changes.
  • Canonical Output Determinism: Guarantees byte-identical outputs across runs, maximizing Claude's KV prompt caching hits.
  • Compress-Cache-Retrieve (CCR): Employs lossless AST compression. The LLM gets the high-level outline and calls injector_retrieve to fetch raw file bodies on-demand.
  • 100% Local & Offline: Running entirely on your local machine, keeping your intellectual property private and secure.

Supports: Go, Python, TypeScript, JavaScript, Java, C++, C, C#, Rust.


Pricing Tiers

  • Free Tier: Workspaces under 50,000 total source lines (all tools and features fully active).
  • Pro Tier ($12/month or $99/year): Unlocks unlimited workspace sizes and high-speed incremental diff indexing.
    Activate Pro at foldwork.dev

Exposed MCP Tools

  • get_project_map - Generates a hierarchical outline of module exports, structures, and internal dependencies.

    • unfolded_files parameter: pass specific file paths or glob patterns to receive those files uncompressed while everything else stays folded.
    • path_prefixes parameter: scope the project map to specific microservices or packages.
    • git_context: always includes current branch, changed files, and recent commits in the response.
    • secrets_redacted: count of credentials automatically redacted before sending to Claude.

    Example call:

    {
      "tool": "get_project_map",
      "arguments": {
        "tier": 3,
        "unfolded_files": ["src/auth/handler.go", "**/*_test.go"],
        "path_prefixes": ["src/auth/"]
      }
    }
    
  • injector_retrieve - Retrieves the raw source code of any compressed symbol from the local cache. Supports start_line and end_line parameters for surgical snippet extraction, and expand_graph to inline 1st-degree dependencies.

  • injector_search - BM25 full-text search over indexed symbols. Returns line ranges, symbol types, and context snippets. Supports search_paths and FTS5 boolean logic (e.g., user AND (auth OR login)).

  • injector_diagram - Generates a Mermaid sequence diagram for a given symbol by traversing its outbound dependencies.

  • injector_regex_search - Bypasses FTS5 tokenization for exact punctuation or extended regex matching.

  • injector_write_file - The strict, FOLD-aware file-writing bridge mandated for all agent-driven codebase edits to prevent data loss.

  • injector_clear_cache - Wipes the SQLite index cache and triggers a clean cold-start full re-index.

  • injector_stats - Visualizes index status, current token savings, and CCR cache hit rates.

Check your ROI (Savings Dashboard)

You can run mcp-injector status in your terminal at any time. This CLI dashboard visually proves your exact token savings and estimated dollars saved by comparing your raw codebase tokens against the AST-compressed tokens in real-time.


Security

mcp-injector automatically redacts secrets and credentials before they reach Claude's context window:

  • AWS access keys, GitHub PATs, Stripe secret keys
  • JWT tokens and bearer tokens
  • High-entropy strings detected via Shannon entropy analysis
  • Private key headers (-----BEGIN RSA PRIVATE KEY-----)
  • Air-Gapped Ready: Pro license validation uses strictly offline Ed25519 cryptography. The daemon never makes an outbound network request, even to verify your subscription.

Redacted content is replaced with [REDACTED BY MCP-INJECTOR]. A count of redactions is included in the get_project_map response so you always know what was protected.

Your code never leaves your machine. Redaction happens locally before compression, and is always-on - it cannot be disabled.


Uninstall

To remove mcp-injector completely:

# Remove binary
sudo rm /usr/local/bin/mcp-injector

# Remove index cache and logs
rm -rf ~/.mcp-injector/

# Remove from IDE MCP config (edit manually):
# Claude Desktop (Linux): ~/.config/Claude/claude_desktop_config.json
# Claude Desktop (macOS): ~/Library/Application Support/Claude/claude_desktop_config.json
# Cursor: ~/.cursor/mcp.json
# VS Code: .vscode/mcp.json
# Devin Desktop: ~/.codeium/windsurf/mcp_config.json
# Antigravity: ~/.gemini/antigravity/mcp_config.json
# (Remove the "mcp-injector" entry from mcpServers)

What Gets Redacted

mcp-injector automatically redacts the following before your code reaches Claude:

Pattern Example Match
AWS access key IDs AKIAIOSFODNN7EXAMPLE
GitHub PATs (ghp_, ghs_) ghp_aBcDeFg...
Stripe secret keys sk_live_abc... / sk_test_abc...
JWT tokens eyJ...
PEM private key headers -----BEGIN RSA PRIVATE KEY-----
Generic high-entropy strings >20 chars Detected via Shannon entropy
Password / secret / token assignments password = "abc123"

Redacted values are replaced with [REDACTED BY MCP-INJECTOR]. File paths and variable names are never redacted - only the values.


License

Commercial. Free tier available. Source code not public.
Support Contact: [email protected]

from github.com/foldwork-dev/mcp-injector

Установка Injector

У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.

▸ github.com/foldwork-dev/mcp-injector

FAQ

Injector MCP бесплатный?

Да, Injector MCP бесплатный — установка в пару кликов через Unyly без оплаты.

Нужен ли API-ключ для Injector?

Нет, Injector работает без API-ключей и переменных окружения.

Injector — hosted или self-hosted?

Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.

Как установить Injector в Claude Desktop, Claude Code или Cursor?

Открой Injector на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.

Похожие MCP

Compare Injector with

Не уверен что выбрать?

Найди свой стек за 60 секунд

Автор?

Embed-бейдж для README

Похожее

Все в категории development