mcp-injector
Comprime bases de código com dobramento de corpo AST antes de enviar para Claude Code, Cursor ou VS Code — redução de 57-89% de tokens com saída determinística para acertos de cache KV.
Documentação
mcp-injector
Assistentes de codificação com IA frequentemente falham porque recuperam o contexto errado. Em uma base de código grande, despejar arquivos brutos cegamente no prompt leva a alucinações, respostas lentas e altos custos de API.
A Foldwork resolve isso. É um mecanismo determinístico de compreensão de repositórios que pré-indexa toda a sua base de código em um catálogo SQLite local. Ele atua como a Camada de Contexto para sua IDE, fornecendo exatamente as funções que a IA precisa—nada mais, nada menos—maximizando a taxa de sucesso na primeira tentativa e reduzindo o uso de tokens em 41-89%.
Ao combinar o dobramento de corpo AST (que remove os corpos das funções preservando as assinaturas) com determinismo canônico (que garante saídas byte-idênticas para maximizar os acertos de cache KV da Anthropic), a Foldwork transforma monorepos empresariais massivos em payloads leves e amigáveis ao cache. Isso reduz drasticamente o consumo de tokens, corta os custos de API em até 90% e elimina o estouro da janela de contexto.
Sem nuvem. Sem telemetria. Funciona inteiramente na sua máquina.--
Benchmarks de Contexto de Base de Código do Mundo Real
Estime o impacto da compressão de código AST em grandes repositórios de código aberto (calculado a $2,00 / milhão de tokens de entrada para Claude Sonnet 5):
| Repositório | Total de Arquivos | Tokens de Contexto Brutos | Tokens de Contexto Comprimidos | Redução de Tokens | Custo Economizado / Execução |
|---|---|---|---|---|---|
| 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 |
Os números são reproduzíveis. Execute a ferramenta de benchmark de código aberto em qualquer repositório público:
repositório mcp-benchmark
Como É na Prática
Execute mcp-benchmark no seu próprio projeto para ver suas economias exatas antes de instalar qualquer coisa:
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).
Ferramentas
get_project_map
Retorna uma visão geral estrutural comprimida do workspace. Os corpos das funções são dobrados e substituídos por placeholders para reduzir o uso de tokens.
tier(inteiro, opcional): Nível de compressão a ser aplicado (padrão: 2).unfolded_files(array de strings, opcional): Caminhos relativos ao workspace ou padrões glob para arquivos a serem servidos em resolução completa (sem compressão).path_prefixes(array de strings, opcional): Escopo do mapa do projeto para microsserviços ou pacotes específicos, reduzindo drasticamente o inchaço do payload.git_context: sempre inclui branch atual, arquivos alterados e commits recentes na resposta.secrets_redacted: contagem de credenciais automaticamente redigidas antes do envio para Claude.
Exemplo de chamada:
{
"tool": "get_project_map",
"arguments": {
"tier": 3,
"unfolded_files": ["src/auth/handler.go", "**/*_test.go"],
"path_prefixes": ["src/auth/"]
}
}
injector_retrieve
Recupera o código-fonte completo e sem compressão de um arquivo do cache local.
path(string, obrigatório): O caminho relativo ao workspace do arquivo a ser recuperado.retrievalKey(string, opcional): A chave de recuperação SHA-256 retornada em um payload comprimido anterior.start_line(inteiro, opcional): Linha inicial baseada em 1 para recuperação de intervalo.end_line(inteiro, opcional): Linha final baseada em 1 para recuperação de intervalo.expand_graph(booleano, opcional): Resolve e anexa dependências entre arquivos (limitado a 50 dependências de 1º grau).
injector_search
Busca de símbolos em texto completo classificada por BM25 no catálogo SQLite local. Suporta lógica booleana FTS5 (ex.: user AND (auth OR login)).
query(string, obrigatório): String de consulta FTS5 (termos simples, "frase", prefixo*).limit(inteiro, opcional): Máximo de resultados (padrão: 20).search_paths(array de strings, opcional): Escopo da busca para diretórios isolados específicos.
injector_diagram
Gera um diagrama de sequência Mermaid para um símbolo específico percorrendo suas dependências de saída (para após 500 nós).
symbol(string, obrigatório): O nome exato do símbolo.max_depth(inteiro, opcional): Profundidade máxima de travessia (padrão: 3).include_primitives(booleano, opcional): Inclui tipos básicos (String, boolean) e limites de frameworks.
injector_regex_search
Fallback para buscas por literal exato ou regex no conteúdo dos arquivos. Ignora a tokenização FTS5.
query(string, obrigatório): A string ou padrão regex a ser buscado.is_regex(booleano, opcional): Trata a consulta como regex estendido (-E).
injector_write_file
Escreve um arquivo completo no disco. CRÍTICO: Previne perda de dados interceptando e rejeitando payloads que contenham marcadores de dobramento comprimidos.
injector_blast_radius
Analisa o impacto arquitetural de alterar um símbolo percorrendo o grafo de dependências. Suporta travessia direcional de entrada e saída.
injector_git_context
Integra-se ao histórico Git local para trazer contexto de commits, autoria e evolução do código diretamente para o contexto do LLM.
injector_inspect_table
Habilita capacidades diretas de introspecção de banco de dados. Atualmente suporta PostgreSQL e MySQL.
CRÍTICO: Você deve iniciar o daemon com a variável de ambiente FOLDWORK_DB_DSN definida para sua string de conexão do banco de dados (ex.: postgres://user:pass@localhost:5432/dbname) para ativar esta ferramenta.
injector_clear_cache
Limpa o cache do índice SQLite e dispara uma reindexação completa de cold-start.
injector_stats
Retorna o status do índice, a taxa de compressão atual, o total de arquivos indexados e a taxa de acerto do cache.
injector_sync (Obsoleto)
As ferramentas de leitura automaticamente aguardam a indexação pendente implicitamente. Você nunca precisa chamar esta ferramenta manualmente.
Instalação Rápida
Instale o daemon localmente e configure suas IDEs:
curl -fsSL https://foldwork.dev/install | sh
Configura automaticamente Claude Desktop, Cursor IDE, VS Code, Devin Desktop e Antigravity.
Primeiros Passos
Passo 1: Verifique se seu projeto se qualifica para o nível gratuito
Execute o CLI de benchmark no seu projeto para ver suas economias de tokens e contagem de linhas:
mcp-benchmark ./your-project
Se o seu projeto tiver menos de 50.000 linhas, o mcp-injector é completamente gratuito. A saída do benchmark mostra sua contagem exata de linhas.
Passo 2: Instale o daemon
curl -fsSL https://foldwork.dev/install | sh
O instalador detecta automaticamente Claude Desktop, Cursor, VS Code, Devin Desktop e Antigravity e escreve a configuração MCP automaticamente. Você deve ver uma saída como:
* 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.
Passo 3: Reinicie sua IDE
O servidor MCP inicia automaticamente quando sua IDE é aberta. Nenhum processo daemon separado para gerenciar.
Passo 4: Verifique se está funcionando
No Claude Code ou Cursor, pergunte ao Claude:
"Use get_project_map para me mostrar a estrutura deste projeto"
Claude chamará a ferramenta mcp-injector e retornará um mapa comprimido de toda a sua base de código. Se você vir nomes de módulos, pontos de entrada e informações de dependência—está funcionando.
Passo 5: Obtenha o código-fonte completo quando necessário
Quando Claude precisar ver a implementação completa de uma função comprimida, ele automaticamente chama injector_retrieve. Você também pode acionar isso explicitamente:
"Mostre-me a implementação completa de UserService.java"
Claude buscará o código-fonte sem compressão do cache local.
Editando Código: Você DEVE usar a ferramenta injector_write_file para editar código. Se Claude tentar escrever placeholders dobrados de volta no seu código-fonte, o daemon rejeitará o payload para protegê-lo de perda de dados.
Passo 6: Verifique suas economias
injector_stats
Ou pergunte diretamente ao Claude: "Chame injector_stats e me diga minhas economias atuais de tokens."
Casos de Uso do Agente & Uso Avançado
Agora que sua IA tem ferramentas determinísticas para buscar, percorrer e recuperar código, você pode fazer perguntas arquiteturais de alto nível que geralmente falham em bases de código brutas:
- Rastreie o fluxo de autenticação — Peça ao agente para mapear sua sequência de login; ele usará
injector_retrievecomexpand_graph=truepara percorrer camadas de middleware, validação e banco de dados. - Encontre código morto — O agente pode aproveitar
injector_blast_radius(travessia de entrada) para identificar funções não utilizadas e structs isolados. - Gere diagramas de arquitetura — Diga à sua IA "Gere um diagrama Mermaid para este fluxo de trabalho"; ela usa
injector_diagrampara desenhar instantaneamente toda a sequência de execução de saída. - Entenda grafos de dependência — Use
injector_blast_radiuspara ver exatamente quais serviços ou pacotes dependem de um módulo central específico. - Localize implementações — O agente usa
injector_search(indexação de texto completo BM25) para encontrar definições exatas de funções em milhões de linhas de código. - Refatore com segurança — Antes de fazer uma alteração disruptiva, o agente verifica
injector_blast_radiuspara ver todos os chamadores que serão impactados. - Revise pull requests — Instrua o agente a analisar suas alterações não commitadas ou o diff do branch. Ele usa
injector_git_contextpara entender commits recentes e a intenção do autor junto com o código. - Navegue em monorepos grandes —
get_project_mapdá à IA uma visão comprimida de cima para baixo de toda a sua arquitetura, permitindo que ela aprofunde em microsserviços específicos usandopath_prefixes.
Inspecionando arquivos específicos sem compressão
Às vezes você precisa que Claude veja a implementação exata de um arquivo enquanto mantém o resto comprimido. Use o parâmetro unfolded_files:
Na sua chamada MCP ou perguntando ao Claude:
"Obtenha o mapa do projeto, mas mostre src/auth/handler.go em resolução completa"
Isso passa "unfolded_files": ["src/auth/handler.go"] para get_project_map. Esse arquivo é servido bruto; todo o resto permanece comprimido.
Padrões glob também funcionam:
"**/*_test.go"- todos os arquivos de teste sem compressão"src/auth/*.go"- todos os arquivos em um diretório sem compressão
Alternando branches
O mcp-injector instala um hook git post-checkout quando é executado pela primeira vez. A troca de branch automaticamente dispara uma reindexação completa. Você verá isso nos logs do daemon:
[mcp-injector] Branch switched to feature/auth-refactor, re-indexing...
[mcp-injector] Re-index complete in 4.2s (47,293 lines indexed)
Segurança em Primeiro Lugar: Garantia de Zero Vazamento
Equipes de segurança empresarial frequentemente bloqueiam ferramentas de codificação com IA porque desenvolvedores vazam acidentalmente credenciais sensíveis em sua janela de contexto.
O mcp-injector resolve isso localmente. O daemon inclui um filtro de entropia Shannon embutido que analisa todas as strings e comentários AST em tempo real. Se ele detectar strings de alta entropia (como AWS Access Keys, chaves privadas SSH ou senhas de banco de dados), ele as redige dinamicamente como [REDACTED: high entropy] antes que elas saiam da sua máquina. Suas credenciais de API nunca são enviadas para a Anthropic.
Se sua base de código tiver uma chave de API hardcoded ou credencial AWS, a resposta de get_project_map incluirá:
"secrets_redacted": 2,
"files_with_redactions": ["config/db.go", "scripts/deploy.sh"]
Os valores reais são substituídos por [REDACTED: high entropy]. Os nomes das variáveis são preservados para que Claude ainda entenda a estrutura do código.
Configuração MCP manual
Se o instalador automático não detectar sua IDE, adicione isto à sua configuração MCP manualmente:
{
"mcpServers": {
"mcp-injector": {
"command": "/usr/local/bin/mcp-injector",
"env": {
"MCP_WORKSPACE": "/absolute/path/to/your/project",
"FOLDWORK_DB_DSN": "postgres://user:pass@localhost:5432/dbname"
}
}
}
}
Nota: O VS Code suporta
"${workspaceFolder}", mas Claude Desktop, Cursor e Devin Desktop exigem um caminho absoluto hardcoded para seu projeto.
Locais dos arquivos de configuração:
- 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
Como Funciona
- Parsing Incremental: A Foldwork escaneia seu repositório instantaneamente usando um parser AST de passagem única, identificando todas as interfaces, classes e assinaturas de funções sem bloqueio.
- Geração de Grafos: Ela constrói deterministicamente duas estruturas: um Grafo de Símbolos para definições precisas e um Grafo de Dependências rastreando relacionamentos de chamador/callee de saída.
- Catálogo Local: Os grafos são armazenados de forma durável em um catálogo SQLite FTS5 local. A indexação acontece exatamente uma vez por alteração de arquivo, significando zero overhead durante prompts de IA.
- Serviço MCP: Seu agente de IA se comunica com segurança com a Foldwork via Model Context Protocol, buscando sub-grafos em milissegundos sem que o código saia da sua máquina.
- Ciente de Branch e Determinístico: Trocar de branch dispara reindexação incremental automática via hooks git. Ao garantir saídas byte-idênticas entre execuções, a Foldwork maximiza os acertos de cache de prompt KV do Claude.
Suporta: Go, Python, TypeScript, JavaScript, Java, C++, C, C#, Rust.
Níveis de Preço
- Nível Gratuito: Workspaces com menos de 50.000 linhas de código no total (todas as ferramentas e recursos totalmente ativos).
- Nível Pro ($12/mês ou $99/ano): Desbloqueia tamanhos de workspace ilimitados e indexação incremental de diffs em alta velocidade.
Ative o Pro em foldwork.dev
Verifique seu ROI (Painel de Economia)
Você pode executar mcp-injector status no seu terminal a qualquer momento. Este painel CLI prova visualmente sua economia exata de tokens e os dólares estimados economizados, comparando os tokens brutos do seu código com os tokens comprimidos via AST em tempo real.
Segurança
O mcp-injector redige automaticamente segredos e credenciais antes que eles cheguem à janela de contexto do Claude:
- Chaves de acesso AWS, PATs do GitHub, chaves secretas do Stripe
- Tokens JWT e tokens bearer
- Strings de alta entropia detectadas via análise de entropia de Shannon
- Cabeçalhos de chaves privadas (
-----BEGIN RSA PRIVATE KEY-----) - Pronto para Air-Gapped: A validação da licença Pro usa criptografia Ed25519 estritamente offline. O daemon nunca faz uma requisição de rede de saída, nem mesmo para verificar sua assinatura.
O conteúdo redigido é substituído por [REDACTED BY MCP-INJECTOR]. Uma contagem de redações é incluída na resposta get_project_map para que você sempre saiba o que foi protegido.
Seu código nunca sai da sua máquina. A redação acontece localmente antes da compressão e está sempre ativa — não pode ser desativada.
Desinstalação
Para remover o mcp-injector completamente:
# 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)
O Que É Redigido
O mcp-injector redige automaticamente o seguinte antes que seu código chegue ao Claude:
| Padrão | Exemplo de Correspondência |
|---|---|
| IDs de chave de acesso AWS | AKIAIOSFODNN7EXAMPLE |
| PATs do GitHub (ghp_, ghs_) | ghp_aBcDeFg... |
| Chaves secretas do Stripe | sk_live_abc... / sk_test_abc... |
| Tokens JWT | eyJ... |
| Cabeçalhos de chaves privadas PEM | -----BEGIN RSA PRIVATE KEY----- |
| Strings genéricas de alta entropia >20 caracteres | Detectado via entropia de Shannon |
| Atribuições de senha / segredo / token | password = "abc123" |
Valores redigidos são substituídos por [REDACTED BY MCP-INJECTOR]. Caminhos de arquivo e nomes de variáveis nunca são redigidos — apenas os valores.
Licença
Comercial. Nível gratuito disponível. Código-fonte não público.
Contato de Suporte: foldwork@proton.me