Safe File MCP

Un servidor de prueba que demuestra todas las características del protocolo MCP, incluyendo prompts, herramientas, recursos y muestreo.

Documentación

🥥 Context Coder MCP

Context Coder (también conocido como Coco) proporciona a los modelos de IA una herramienta MCP para cargar todo tu código base en el contexto del LLM. Esto les da a los asistentes de IA todo lo que necesitan para escribir código que se ajuste a tus patrones y arquitectura existentes.

📦 Disponible en npm

Demo

Rediseño complejo de una sola pasada con un prompt vago que no menciona ningún archivo específico.

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

Inicio Rápido

Context Coder admite tres formas principales de ejecutarlo:

  1. Vía Claude Desktop
  2. Vía Claude Code
  3. Vía otros clientes

Claude Desktop + npx

Instrucciones de configuración

Abre una terminal en la carpeta de tu proyecto actual y ejecuta:

npx context-coder

Para edición parcial basada en líneas en lugar de reescrituras completas de archivos, usa:

npx context-coder --edit-file-mode

Luego agrega esto a la configuración de Claude Desktop y reinicia Claude Desktop después:

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

A continuación, crea un Proyecto de Claude e inserta el prompt inicial recomendado justo debajo de esta sección.

Claude Desktop + Docker

Instrucciones de configuración

Ejecutar a través de Docker proporciona un mejor aislamiento ya que el contenedor no podrá escribir cosas fuera del directorio de tu proyecto.

Crea un archivo docker-compose.yml en el/los proyecto(s) en los que quieras trabajar.

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

Para la variante de edición (ediciones parciales basadas en líneas):

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

Inicia el servicio:

docker-compose up

Luego agrega esto a la configuración de Claude Desktop y reinicia Claude Desktop después:

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

Dado que docker-compose up ya sabe en qué carpeta se está ejecutando, podemos cambiar fácilmente entre proyectos lanzando docker-compose up en diferentes directorios. ¡No olvides cambiar entre Proyectos de Claude cuando hagas esto!

A continuación, crea un Proyecto de Claude e inserta el prompt inicial recomendado justo debajo de esta sección.

Prompt inicial de Claude Desktop

Configuración recomendada y prompt inicial: Crea un Proyecto de Claude y agrega esto a las instrucciones de tu proyecto:

Prompt inicial (predeterminado - sin modo de edición)
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 (con modo de edición habilitado)

Si estás usando --edit-file-mode, usa este prompt en su lugar:

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

Instrucciones de configuración

Opción 1: npx

Crea .mcp.json en la raíz de tu proyecto:

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

Para edición parcial basada en líneas en lugar de reescrituras completas de archivos, usa:

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

¡Listo!

Opción 2: Docker

Ejecutar a través de Docker proporciona un mejor aislamiento ya que el contenedor no podrá escribir cosas fuera del directorio de tu proyecto.

Crea .mcp.json en la raíz de tu proyecto:

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

Opción 3: Vía HTTP + mcp-remote

Para Claude Code, crea .mcp.json en la raíz de tu proyecto:

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

Y crea docker-compose.yml en tu proyecto:

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

Inicia Context Coder con docker-compose up y Claude Code se conectará automáticamente.

La razón para usar la compilación mini es que Claude Code ya viene con herramientas de edición de archivos integradas.

Prompt inicial recomendado: Agrega esto al inicio de tu archivo 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 qué archivos se incluyen al obtener el código base

Context Coder funciona mejor en repositorios pequeños y medianos, ya que está limitado al contexto máximo de tu LLM (en el caso de Claude Sonnet/Opus 4, eso son 200,000 tokens). Es posible que todo tu código base no quepa, y para este caso tienes dos opciones.

Excluyendo Archivos (.cocoignore)

Crea un archivo .cocoignore en la raíz de tu proyecto. Este archivo funciona de manera similar a .gitignore, permitiéndote especificar archivos y directorios que deben excluirse del comando para agregar tu código; esto podría ser fixtures de prueba, snapshots, archivos de prueba grandes u otra información secundaria que no sea útil para el LLM.

Minificando Archivos (.cocominify)

Crea un archivo .cocominify en la raíz de tu proyecto para incluir archivos con contenido de marcador de posición en lugar de excluirlos por completo. Esto ahorra tokens mientras informa a la IA que los archivos existen y permite que la IA los lea con la herramienta read_file si es necesario. Esto es útil para archivos generados grandes, activos compilados o archivos que no necesitan su contenido completo en el contexto de la IA.

Muchos artefactos de compilación y carpetas comunes ya se excluyen automáticamente (como node_modules). El LLM también puede ayudarte con esto: pídele que ejecute la herramienta get_codebase_top_largest_files y sugiera archivos que sean grandes y/o adecuados para incluir en un archivo .cocoignore o .cocominify.

Combinando

Puedes tener tanto un archivo .cocoignore como un .cocominify en el mismo repositorio.

Configuración

Montajes de Volúmenes y Variables de Entorno

Montajes de Volúmenes

Monta un directorio específico:

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

Variables de Entorno

  • COCO_DEV: "true" o "false" para montar la carpeta ./mount en lugar de usar /app
  • COCO_MCP_TRANSPORT: Establece a stdio o http (predeterminado: http)
  • COCO_PORT: Sobrescribe el puerto predeterminado 3001 (solo modo HTTP)
  • CONTEXT_CODER_EDIT_MODE: Establece a "true" para habilitar la herramienta edit_file (equivalente a la bandera --edit-file-mode)

Herramientas Disponibles

HerramientaPropósito
get_codebase_sizeVerifica el tamaño del código base y los recuentos de tokens - Los LLMs deben llamar esto primero para asegurarse de que el código base no sea demasiado grande
get_codebaseGenera un resumen digerible por IA de todo el código base (paginado) - Llama después de verificar el tamaño
get_codebase_top_largest_filesObtén los X archivos más grandes del código base - útil para identificar archivos para agregar a .cocoignore/.cocominify
read_fileLee el contenido de archivos (solo úsalo cuando se te pida específicamente releer o para depuración)
write_fileCrea o sobrescribe archivos
edit_fileRealiza ediciones parciales basadas en líneas a archivos (disponible cuando --edit-file-mode está habilitado)
create_directoryCrea directorios
list_directoryLista el contenido del directorio (solo úsalo cuando se te pida específicamente o para depuración)
directory_treeObtén la estructura del directorio como JSON (solo úsalo cuando se te pida específicamente o para depuración)
move_fileMueve o renombra archivos
search_filesBusca por patrón
execute_commandEjecuta comandos de shell

Prompts Disponibles

Context Coder proporciona prompts MCP que ayudan a configurar Claude correctamente para tu flujo de trabajo de desarrollo:

PromptPropósito
context-coder-claude-desktopPrompt inicial predeterminado para Claude Desktop - configura el uso adecuado de las herramientas MCP
context-coder-claude-codePrompt inicial predeterminado para Claude Code - explica cómo usar ambos conjuntos de herramientas juntos

Para usar estos prompts en Claude Code:

  1. Escribe / para abrir el menú de prompts
  2. Busca "context-coder" en la lista, luego "Context Coder: Claude Code Setup"
  3. El prompt se insertará automáticamente
  4. Puedes agregar directamente una tarea después del prompt, por ejemplo /context-coder:Context Coder: Claude Code Setup (MCP) Add a new endpoint that returns a random number

Para usar estos prompts en Claude Desktop:

Usa el botón "más" justo debajo del cuadro de texto del chat, el Add from <name of server>.

Comandos CLI

Context Coder también proporciona un comando CLI conveniente para inspeccionar tu código base:

Comando de Listado de Archivos

npx context-coder ls [options]

Lista todos los archivos que se incluirán en el análisis del código base, mostrando los tamaños de archivo y respetando los patrones .cocoignore y .cocominify.

Opciones:

  • --sort-by <type> - Ordena por "size" o "path" (predeterminado: "size")
  • -r, --reverse - Invierte el orden de clasificación (ascendente en lugar de descendente)
  • -d, --directory <dir> - Directorio a analizar (predeterminado: directorio actual)
  • --help - Muestra información de uso

Ejemplos:

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

El comando muestra:

  • Recuento total de archivos y estimaciones de tokens para Claude y ChatGPT
  • Si se están usando los archivos .cocoignore y .cocominify
  • Lista formateada de todos los archivos con tamaños

Opciones de Ejecución

Context Coder admite varias opciones de ejecución para modificar su comportamiento:

npx context-coder [options]

Opciones:

  • -m, --mini - Ejecuta en modo mini (solo herramientas principales)
  • -f, --full - Ejecuta en modo completo (todas las herramientas) - este es el predeterminado
  • -s, --stdio - Usa transporte stdio en lugar de HTTP
  • -e, --edit - Habilita la herramienta edit_file para ediciones parciales basadas en líneas en lugar de requerir reescrituras completas de archivos con write_file
  • --edit-file-mode - Igual que -e, --edit (bandera heredada)
  • -p, --port <number> - Puerto para escuchar (predeterminado: 3001)
  • -c, --claude-token-limit <number> - Establece el límite de tokens de Claude - útil para modelos con ventanas de contexto más grandes (predeterminado: 150000)
  • -g, --gpt-token-limit <number> - Establece el límite de tokens de GPT - útil para modelos con ventanas de contexto más grandes (predeterminado: 128000)

Ejemplos:

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

Ejemplos de Límites de Tokens:

Context Coder ayuda a detectar cuándo tu código base podría exceder la ventana de contexto de tu modelo. Puedes ajustar estos límites según el modelo que estés 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

Referencia de Ventana de Contexto del Modelo:

  • Claude Sonnet 3.5: ~200k tokens
  • Claude Enterprise: ~500k tokens
  • GPT-4: ~128k tokens
  • GPT-4 Turbo: ~128k tokens
  • Modelos Personalizados/Locales: Varía ampliamente

Establecer límites de tokens apropiados ayuda a Context Coder a proporcionar mejores advertencias cuando tu código base podría no caber en la ventana de contexto de tu modelo.

Desarrollo

Configuración de desarrollo y comandos

Clona e instala las dependencias:

npm install

Compila y ejecuta:

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

Modo de desarrollo con recarga automática:

npm run dev

En modo de desarrollo, las operaciones de archivos están aisladas en el directorio ./mount.

Variantes de Docker

Context Coder proporciona tres variantes de Docker:

VarianteImagenDescripción
Fullghcr.io/khromov/context-coder:fullModo completo con todas las herramientas usando write_file (reescrituras completas de archivos)
Minighcr.io/khromov/context-coder:miniSolo herramientas de análisis principales (get_codebase_size, get_codebase, get_codebase_top_largest_files)
Editghcr.io/khromov/context-coder:editModo completo con la herramienta edit_file para ediciones parciales basadas en líneas además de write_file

Compilación de Docker

Instrucciones de compilación de Docker

Compila todas las versiones:

./build-all.sh

O compila 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 .

Construye una imagen personalizada:

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

O compila desde el código fuente:

docker build -t my-coco .

Licencia

MIT