Safe File MCP

Um servidor de teste que demonstra todos os recursos do protocolo MCP, incluindo prompts, ferramentas, recursos e amostragem.

Documentação

🥥 Context Coder MCP

O Context Coder (também conhecido como Coco) fornece aos modelos de IA ferramentas MCP para carregar todo o seu código-fonte no contexto do LLM. Isso dá aos assistentes de IA tudo o que precisam para escrever código que se ajuste aos seus padrões e arquitetura existentes.

📦 Disponível no npm

Demonstração

Redesign complexo em uma única etapa com um prompt vago que não menciona nenhum arquivo específico.

https://github.com/user-attachments/assets/7eb4c39b-f069-47b5-b81a-d3d40c506f61

Início Rápido

O Context Coder suporta três formas principais de execução:

  1. Via Claude Desktop
  2. Via Claude Code
  3. Via outros clientes

Claude Desktop + npx

Instruções de configuração

Abra um terminal na pasta do seu projeto atual e execute:

npx context-coder

Para edição parcial baseada em linhas em vez de reescrita completa de arquivos, use:

npx context-coder --edit-file-mode

Em seguida, adicione isto à configuração do Claude Desktop e reinicie o Claude Desktop depois:

{
  "mcpServers": {
    "context-coder": {
      "command": "npx",
      "args": ["-y", "supergateway", "--streamableHttp", "http://localhost:3001/mcp"]
    }
  }
}

A seguir, crie um Projeto Claude e insira o prompt inicial recomendado logo abaixo desta seção.

Claude Desktop + Docker

Instruções de configuração

Executar via Docker proporciona melhor isolamento, pois o contêiner não conseguirá gravar nada fora do diretório do seu projeto.

Crie um arquivo docker-compose.yml no(s) projeto(s) em que deseja trabalhar.

services:
  context-coder:
    image: ghcr.io/khromov/context-coder:full
    ports:
      - '3001:3001'
    volumes:
      - ./:/app
    working_dir: /app

Para a variante de edição (edições parciais baseadas em linhas):

services:
  context-coder:
    image: ghcr.io/khromov/context-coder:edit
    ports:
      - '3001:3001'
    volumes:
      - ./:/app
    working_dir: /app

Inicie o serviço:

docker-compose up

Em seguida, adicione isto à configuração do Claude Desktop e reinicie o Claude Desktop depois:

{
  "mcpServers": {
    "context-coder": {
      "command": "npx",
      "args": ["-y", "supergateway", "--streamableHttp", "http://localhost:3001/mcp"]
    }
  }
}

Como o docker-compose up já sabe em qual pasta está sendo executado, podemos alternar facilmente entre projetos iniciando o docker-compose up em diretórios diferentes. Não se esqueça de alternar entre os Projetos Claude ao fazer isso!

A seguir, crie um Projeto Claude e insira o prompt inicial recomendado logo abaixo desta seção.

Prompt inicial do Claude Desktop

Configuração recomendada e prompt inicial: Crie um Projeto Claude e adicione isto às instruções do seu projeto:

Prompt inicial (padrão - sem modo de edição)
Use the Context Coder MCP to edit files. Remember that partial edits are not allowed, always write out the edited files in full through the MCP. You MUST call the get_codebase_size and get_codebase MCP tools at the start of every new chat. Do not call read_file, as you already have the codebase via get_codebase - use this reference instead. ONLY call read_file if you can't find the file in your context. Do not create any artifacts unless the user asks for it, just call the write_file tool directly with the updated code. If you get cut off when writing code and the user asks you to continue, continue from the last successfully written file to not omit anything.
Prompt inicial (com modo de edição ativado)

Se você estiver usando o --edit-file-mode, use este prompt:

Use the Context Coder MCP to edit files. You have access to both edit_file (for line-based partial edits) and write_file (for complete file rewrites) tools. Use edit_file when making small, targeted changes and write_file when rewriting entire files or making extensive changes. Always use write_file if writing with edit_file fails. You MUST call the get_codebase_size and get_codebase MCP tools at the start of every new chat. Do not call read_file, as you already have the codebase via get_codebase - use this reference instead. ONLY call read_file if you can't find the file in your context. Do not create any artifacts unless the user asks for it, just call the MCP tools directly with the updated code. If you get cut off when writing code and the user asks you to continue, continue from the last successfully written file to not omit anything.

Claude Code

Instruções de configuração

Opção 1: npx

Crie o arquivo .mcp.json na raiz do seu projeto:

{
  "mcpServers": {
    "context-coder": {
      "command": "npx",
      "args": ["-y", "context-coder", "--mini", "--stdio"]
    }
  }
}

Para edição parcial baseada em linhas em vez de reescrita completa de arquivos, use:

{
  "mcpServers": {
    "context-coder": {
      "command": "npx",
      "args": ["-y", "context-coder", "--mini", "--stdio", "--edit-file-mode"]
    }
  }
}

Pronto!

Opção 2: Docker

Executar via Docker proporciona melhor isolamento, pois o contêiner não conseguirá gravar nada fora do diretório do seu projeto.

Crie o arquivo .mcp.json na raiz do seu projeto:

{
  "mcpServers": {
    "context-coder": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-v",
        "./:/app",
        "-w",
        "/app",
        "-e",
        "COCO_MCP_TRANSPORT=stdio",
        "ghcr.io/khromov/context-coder:mini"
      ]
    }
  }
}

Opção 3: Via HTTP + mcp-remote

Para Claude Code, crie o arquivo .mcp.json na raiz do seu projeto:

{
  "mcpServers": {
    "context-coder": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "supergateway", "--streamableHttp", "http://localhost:3001/mcp"]
    }
  }
}

E crie o arquivo docker-compose.yml no seu projeto:

services:
  context-coder:
    image: ghcr.io/khromov/context-coder:mini
    ports:
      - '3001:3001'
    volumes:
      - ./:/app
    working_dir: /app
    environment:
      - COCO_MCP_TRANSPORT=http
    restart: unless-stopped

Inicie o Context Coder com docker-compose up e o Claude Code se conectará automaticamente.

A razão para usar a versão mini é que o Claude Code já vem com ferramentas de edição de arquivos integradas.

Prompt inicial recomendado: Adicione isto no início do seu arquivo CLAUDE.md.

You have access to both Claude Code's built-in file tools and the Context Coder MCP for enhanced codebase analysis. Follow this workflow:

1. ALWAYS start every new chat by calling get_codebase_size and get_codebase MCP tools to ingest and understand the full project context
2. Use Context Coders's codebase analysis as your primary reference - avoid reading files since you already have the complete codebase, only read file if you are missing something or if the user specifically requests it.
3. Remember: Context Coder gives you full codebase context, Claude Code gives you precise editing control - use both strategically

Limitando quais arquivos são incluídos ao buscar o código-fonte

O Context Coder funciona melhor em repositórios pequenos e médios, pois está limitado ao contexto máximo do seu LLM (no caso do Claude Sonnet/Opus 4, são 200.000 tokens). Seu código-fonte inteiro pode não caber, e para esse caso você tem duas opções.

Excluindo Arquivos (.cocoignore)

Crie um arquivo .cocoignore na raiz do seu projeto. Este arquivo funciona de forma semelhante ao .gitignore, permitindo especificar arquivos e diretórios que devem ser excluídos do comando de agregação do código — isso pode incluir fixtures de teste, snapshots, arquivos de teste grandes ou outras informações secundárias que não são úteis para o LLM.

Minificando Arquivos (.cocominify)

Crie um arquivo .cocominify na raiz do seu projeto para incluir arquivos com conteúdo de espaço reservado em vez de excluí-los completamente. Isso economiza tokens enquanto ainda informa à IA que os arquivos existem e permite que a IA os leia com a ferramenta read_file se necessário. Isso é útil para arquivos gerados grandes, artefatos compilados ou arquivos que não precisam de seu conteúdo completo no contexto da IA.

Muitos artefatos e pastas de build comuns já são excluídos automaticamente (como node_modules). O LLM também pode ajudar com isso — peça para executar a ferramenta get_codebase_top_largest_files e sugerir arquivos que sejam grandes e/ou adequados para inclusão em um arquivo .cocoignore ou .cocominify.

Combinando

Você pode ter tanto um arquivo .cocoignore quanto um .cocominify no mesmo repositório.

Configuração

Montagens de Volume e Variáveis de Ambiente

Montagens de Volume

Monte um diretório específico:

volumes:
  - ./src:/app # Only expose src directory

Variáveis de Ambiente

  • COCO_DEV: "true" ou "false" para montar a pasta ./mount em vez de usar /app
  • COCO_MCP_TRANSPORT: Defina como stdio ou http (padrão: http)
  • COCO_PORT: Substitui a porta padrão 3001 (somente modo HTTP)
  • CONTEXT_CODER_EDIT_MODE: Defina como "true" para habilitar a ferramenta edit_file (equivalente ao sinalizador --edit-file-mode)

Ferramentas Disponíveis

FerramentaFinalidade
get_codebase_sizeVerificar o tamanho do código-fonte e contagens de tokens — LLMs devem chamar isto primeiro para garantir que o código não seja grande demais
get_codebaseGerar resumo digerível por IA de todo o código-fonte (paginado) — Chamar após verificar o tamanho
get_codebase_top_largest_filesObter os X maiores arquivos do código-fonte — útil para identificar arquivos para adicionar ao .cocoignore/.cocominify
read_fileLer o conteúdo de arquivos (usar somente quando solicitado especificamente para reler ou para depuração)
write_fileCriar ou sobrescrever arquivos
edit_fileFazer edições parciais baseadas em linhas em arquivos (disponível quando --edit-file-mode está habilitado)
create_directoryCriar diretórios
list_directoryListar o conteúdo de diretórios (usar somente quando solicitado especificamente ou para depuração)
directory_treeObter a estrutura de diretórios como JSON (usar somente quando solicitado especificamente ou para depuração)
move_fileMover ou renomear arquivos
search_filesPesquisar por padrão
execute_commandExecutar comandos de shell

Prompts Disponíveis

O Context Coder fornece prompts MCP que ajudam a configurar o Claude adequadamente para seu fluxo de trabalho de desenvolvimento:

PromptFinalidade
context-coder-claude-desktopPrompt inicial padrão para Claude Desktop — configura o uso adequado das ferramentas MCP
context-coder-claude-codePrompt inicial padrão para Claude Code — explica como usar ambos os conjuntos de ferramentas juntos

Para usar esses prompts no Claude Code:

  1. Digite / para abrir o menu de prompts
  2. Encontre "context-coder" na lista e depois "Context Coder: Claude Code Setup"
  3. O prompt será inserido automaticamente
  4. Você pode adicionar diretamente uma tarefa após o prompt, por exemplo, /context-coder:Context Coder: Claude Code Setup (MCP) Add a new endpoint that returns a random number

Para usar esses prompts no Claude Desktop:

Use o botão "mais" logo abaixo da caixa de texto do chat, o Add from <name of server>.

Comandos CLI

O Context Coder também fornece um comando CLI conveniente para inspecionar seu código-fonte:

Comando de Listagem de Arquivos

npx context-coder ls [options]

Lista todos os arquivos que serão incluídos na análise do código-fonte, mostrando tamanhos de arquivos e respeitando os padrões de .cocoignore e .cocominify.

Opções:

  • --sort-by <type> - Ordenar por "size" ou "path" (padrão: "size")
  • -r, --reverse - Inverter a ordem de classificação (crescente em vez de decrescente)
  • -d, --directory <dir> - Diretório a analisar (padrão: diretório atual)
  • --help - Mostrar informações de uso

Exemplos:

npx context-coder ls                           # Default: sort by size descending
npx context-coder ls --sort-by path            # Sort alphabetically by path
npx context-coder ls -r                        # Sort by size ascending
npx context-coder ls --sort-by path --reverse  # Sort by path Z-A
npx context-coder ls -d ./src                  # Analyze specific directory

O comando mostra:

  • Contagem total de arquivos e estimativas de tokens para Claude e ChatGPT
  • Se os arquivos .cocoignore e .cocominify estão sendo usados
  • Lista formatada de todos os arquivos com tamanhos

Opções de Execução

O Context Coder suporta várias opções de execução para modificar seu comportamento:

npx context-coder [options]

Opções:

  • -m, --mini - Executar em modo mini (somente ferramentas principais)
  • -f, --full - Executar em modo completo (todas as ferramentas) — este é o padrão
  • -s, --stdio - Usar transporte stdio em vez de HTTP
  • -e, --edit - Habilitar a ferramenta edit_file para edições parciais baseadas em linhas em vez de exigir reescritas completas de arquivos com write_file
  • --edit-file-mode - Igual a -e, --edit (sinalizador legado)
  • -p, --port <number> - Porta para escutar (padrão: 3001)
  • -c, --claude-token-limit <number> - Definir limite de tokens do Claude — útil para modelos com janelas de contexto maiores (padrão: 150000)
  • -g, --gpt-token-limit <number> - Definir limite de tokens do GPT — útil para modelos com janelas de contexto maiores (padrão: 128000)

Exemplos:

npx context-coder                           # Default: full mode with HTTP transport
npx context-coder -m                        # Mini mode with core tools only
npx context-coder -s                        # Use stdio transport (for Claude Code)
npx context-coder -e                        # Enable partial file editing
npx context-coder -p 8080                   # Use port 8080 instead of 3001
npx context-coder -m -s                     # Combine options for mini mode with stdio
npx context-coder -s -e -p 8080             # stdio transport with edit mode enabled and custom port

Exemplos de Limites de Tokens:

O Context Coder ajuda a detectar quando seu código-fonte pode exceder a janela de contexto do seu modelo. Você pode ajustar esses limites com base no modelo que está usando:

# For Claude Enterprise with 500k context window
npx context-coder -c 500000

# For GPT-4 Turbo with 128k context
npx context-coder -g 128000

# For models with very large context windows
npx context-coder -c 1000000 -g 1000000

# Combine with other options
npx context-coder --edit-file-mode -c 300000 -p 8080

Referência de Janela de Contexto do Modelo:

  • Claude Sonnet 3.5: ~200 mil tokens
  • Claude Enterprise: ~500 mil tokens
  • GPT-4: ~128 mil tokens
  • GPT-4 Turbo: ~128 mil tokens
  • Modelos Personalizados/Locais: Varia amplamente

Definir limites de tokens adequados ajuda o Context Coder a fornecer melhores avisos quando seu código-fonte pode não caber na janela de contexto do seu modelo.

Desenvolvimento

Configuração de desenvolvimento e comandos

Clone e instale as dependências:

npm install

Compile e execute:

npm run build
npm start  # HTTP mode
npm start -- --stdio  # stdio mode

Modo de desenvolvimento com recarga automática:

npm run dev

No modo de desenvolvimento, as operações de arquivo são isoladas no diretório ./mount.

Variantes Docker

O Context Coder fornece três variantes Docker:

VarianteImagemDescrição
Completaghcr.io/khromov/context-coder:fullModo completo com todas as ferramentas usando write_file (reescritas completas de arquivos)
Minighcr.io/khromov/context-coder:miniSomente ferramentas principais de análise (get_codebase_size, get_codebase, get_codebase_top_largest_files)
Ediçãoghcr.io/khromov/context-coder:editModo completo com a ferramenta edit_file para edições parciais baseadas em linhas, além de write_file

Build Docker

Instruções de build Docker

Compile todas as versões:

./build-all.sh

Ou compile individualmente:

# Full version
docker build -t context-coder:latest .

# Mini version
docker build --build-arg COCO_BUILD_TYPE=mini -t context-coder:mini .

# Edit version
docker build --build-arg COCO_BUILD_TYPE=edit -t context-coder:edit .

Crie uma imagem personalizada:

FROM ghcr.io/khromov/context-coder:full
# Add customizations

Ou compile a partir do código-fonte:

docker build -t my-coco .

Licença

MIT