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.
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:
- Vía Claude Desktop
- Vía Claude Code
- 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./mounten lugar de usar/appCOCO_MCP_TRANSPORT: Establece astdioohttp(predeterminado:http)COCO_PORT: Sobrescribe el puerto predeterminado 3001 (solo modo HTTP)CONTEXT_CODER_EDIT_MODE: Establece a "true" para habilitar la herramientaedit_file(equivalente a la bandera--edit-file-mode)
Herramientas Disponibles
| Herramienta | Propósito |
|---|---|
get_codebase_size | Verifica 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_codebase | Genera un resumen digerible por IA de todo el código base (paginado) - Llama después de verificar el tamaño |
get_codebase_top_largest_files | Obtén los X archivos más grandes del código base - útil para identificar archivos para agregar a .cocoignore/.cocominify |
read_file | Lee el contenido de archivos (solo úsalo cuando se te pida específicamente releer o para depuración) |
write_file | Crea o sobrescribe archivos |
edit_file | Realiza ediciones parciales basadas en líneas a archivos (disponible cuando --edit-file-mode está habilitado) |
create_directory | Crea directorios |
list_directory | Lista el contenido del directorio (solo úsalo cuando se te pida específicamente o para depuración) |
directory_tree | Obtén la estructura del directorio como JSON (solo úsalo cuando se te pida específicamente o para depuración) |
move_file | Mueve o renombra archivos |
search_files | Busca por patrón |
execute_command | Ejecuta comandos de shell |
Prompts Disponibles
Context Coder proporciona prompts MCP que ayudan a configurar Claude correctamente para tu flujo de trabajo de desarrollo:
| Prompt | Propósito |
|---|---|
context-coder-claude-desktop | Prompt inicial predeterminado para Claude Desktop - configura el uso adecuado de las herramientas MCP |
context-coder-claude-code | Prompt inicial predeterminado para Claude Code - explica cómo usar ambos conjuntos de herramientas juntos |
Para usar estos prompts en Claude Code:
- Escribe
/para abrir el menú de prompts - Busca "context-coder" en la lista, luego "Context Coder: Claude Code Setup"
- El prompt se insertará automáticamente
- 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
.cocoignorey.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 herramientaedit_filepara ediciones parciales basadas en líneas en lugar de requerir reescrituras completas de archivos conwrite_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:
| Variante | Imagen | Descripción |
|---|---|---|
| Full | ghcr.io/khromov/context-coder:full | Modo completo con todas las herramientas usando write_file (reescrituras completas de archivos) |
| Mini | ghcr.io/khromov/context-coder:mini | Solo herramientas de análisis principales (get_codebase_size, get_codebase, get_codebase_top_largest_files) |
| Edit | ghcr.io/khromov/context-coder:edit | Modo 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