MCP — connect external tools, with credentials kept out of your config.MCP — conecta herramientas externas, manteniendo las credenciales fuera de tu configuración.
The Model Context Protocol lets free-code talk to external tool servers — databases, APIs, CI systems, design tools.El Model Context Protocol permite que free-code hable con servidores de herramientas externas — bases de datos, APIs, sistemas de CI, herramientas de diseño.
An MCP server exposes a set of tools over a standard protocol. Once a
server is configured and enabled, its tools appear in your next free-code session
automatically — alongside the built-in read, bash, and code
graph tools — and the agent can call them like any other tool.Un servidor MCP expone un conjunto de herramientas mediante un protocolo estándar. Una vez que un
servidor está configurado y habilitado, sus herramientas aparecen automáticamente en tu siguiente sesión de free-code
— junto con las herramientas integradas read, bash y el grafo
de código — y el agente puede invocarlas como a cualquier otra herramienta.
free-code supports two kinds of server:free-code admite dos tipos de servidor:
command + args). Most servers, including Docker- and npx-based ones.stdio — un proceso local que free-code lanza (definido con command + args). La mayoría de los servidores, incluidos los basados en Docker y en npx.url).HTTP — un endpoint remoto al que free-code se conecta (definido con url).mcp.json does not auto-start it. You opt in
explicitly with /mcp enable <name> — so importing a config never
silently runs code. See Enabling servers.
mcp.json no lo inicia automáticamente. Debes activarlo
explícitamente con /mcp enable <name> — así, importar una configuración nunca
ejecuta código en silencio. Consulta Habilitar servidores.
Server definitions and secrets are plain files under .free-code/.Las definiciones de servidores y los secretos son archivos planos bajo .free-code/.
| FileArchivo | PurposePropósito |
|---|---|
~/.free-code/agent/mcp.json |
Global server definitions — available in every project.Definiciones globales de servidores — disponibles en todos los proyectos. |
<project>/.free-code/mcp.json |
Project-local server definitions. Merged over the global file; on a name clash the project copy wins.Definiciones de servidores locales al proyecto. Se combinan con el archivo global; ante un conflicto de nombre, gana la copia del proyecto. |
~/.free-code/agent/.env |
Global secrets (tokens, API keys) as KEY=VALUE.Secretos globales (tokens, claves de API) como KEY=VALUE. |
<project>/.free-code/.env |
Project-local secrets. Override the global .env for that project.Secretos locales al proyecto. Sobrescriben el .env global para ese proyecto. |
~/.free-code/agent/mcp-status.json |
Which servers are enabled/disabled. Managed by the /mcp command — you normally don't edit it by hand.Qué servidores están habilitados/deshabilitados. Gestionado por el comando /mcp — normalmente no lo editas a mano. |
mcp.json freely without changing which servers start —
that state lives in mcp-status.json.
mcp.json libremente sin cambiar qué servidores se inician —
ese estado vive en mcp-status.json.
Edit mcp.json — global or project-local — under the mcpServers key.Edita mcp.json — global o local al proyecto — bajo la clave mcpServers.
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {}
}
}
}
Paths in command and args may use ~,
$HOME, or ${HOME} — they are expanded without needing a shell.Las rutas en command y args pueden usar ~,
$HOME o ${HOME} — se expanden sin necesitar un shell.
{
"mcpServers": {
"my-remote": {
"type": "http",
"url": "https://mcp.example.com/endpoint"
}
}
}
After editing, run /mcp enable <name> and then /reload
(or start a new session) for the tools to appear.Después de editar, ejecuta /mcp enable <name> y luego /reload
(o inicia una sesión nueva) para que las herramientas aparezcan.
Keep credentials in .env, out of mcp.json.Mantén las credenciales en .env, fuera de mcp.json.
For stdio servers, free-code injects environment variables into the server process from, in increasing priority:Para los servidores stdio, free-code inyecta variables de entorno en el proceso del servidor en este orden de prioridad creciente:
~/.free-code/agent/.envel ~/.free-code/agent/.env global<project>/.free-code/.envel <project>/.free-code/.env local al proyectoenv block written directly in the server's mcp.json entry (wins on conflict)cualquier bloque env escrito directamente en la entrada mcp.json del servidor (gana en caso de conflicto).envRecomendado: pon el secreto en .envAdd the credential as a KEY=VALUE line:Añade la credencial como una línea KEY=VALUE:
# ~/.free-code/agent/.env
GITHUB_PERSONAL_ACCESS_TOKEN=ghp_xxxxxxxxxxxxxxxx
OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxx
The server process inherits these in its environment, so a server that reads
GITHUB_PERSONAL_ACCESS_TOKEN just works. For Docker-based servers, forward
the variable with -e:El proceso del servidor las hereda en su entorno, así que un servidor que lee
GITHUB_PERSONAL_ACCESS_TOKEN simplemente funciona. Para servidores basados en Docker,
reenvía la variable con -e:
{
"mcpServers": {
"github": {
"command": "docker",
"args": ["run", "-i", "--rm", "-e", "GITHUB_PERSONAL_ACCESS_TOKEN", "ghcr.io/github/github-mcp-server"]
}
}
}
.env over inline envmcp.json works, but that file is the one you copy,
import, and share. Keeping tokens in .env avoids leaking them. Add
.free-code/.env to your .gitignore.
.env antes que env en líneamcp.json funciona, pero ese es el archivo que copias,
importas y compartes. Mantener los tokens en .env evita filtrarlos. Añade
.free-code/.env a tu .gitignore.
Some remote servers authenticate via OAuth instead of a static token. Run them through
the mcp-remote bridge as a stdio server:Algunos servidores remotos se autentican mediante OAuth en lugar de un token estático. Ejecútalos a través
del puente mcp-remote como un servidor stdio:
{
"mcpServers": {
"linear": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp.linear.app/sse"]
}
}
}
On first connect, free-code detects the authorization URL the server prints and surfaces it in the UI — open it in your browser to complete the login. No token to copy by hand.En la primera conexión, free-code detecta la URL de autorización que imprime el servidor y la muestra en la interfaz — ábrela en tu navegador para completar el inicio de sesión. No hay ningún token que copiar a mano.
/mcp commandsHabilitar servidores y los comandos /mcpControl which servers start, and import configs from other tools.Controla qué servidores se inician e importa configuraciones de otras herramientas.
| CommandComando | What it doesQué hace |
|---|---|
/mcp list |
List every configured server with its state — [on] (enabled) or [off] (disabled).Lista todos los servidores configurados con su estado — [on] (habilitado) o [off] (deshabilitado). |
/mcp enable <name> |
Mark a server to start automatically. Takes effect after /reload or a new session.Marca un servidor para que se inicie automáticamente. Tiene efecto después de /reload o de una sesión nueva. |
/mcp disable <name> |
Stop a server from starting automatically.Evita que un servidor se inicie automáticamente. |
/mcp-import |
Import MCP server definitions from another tool (see below).Importa definiciones de servidores MCP desde otra herramienta (ver más abajo). |
/mcp list # see what's configured and what's on
/mcp enable github # opt a server in
/reload # apply — github's tools appear next turn
/mcp list # ver qué está configurado y qué está activo
/mcp enable github # activar un servidor
/reload # aplicar — las herramientas de github aparecen en el siguiente turno
/mcp-import — bring in existing servers/mcp-import — traer servidores existentes
If you already use MCP in another tool, import its servers instead of writing
mcp.json by hand. /mcp-import reads from:Si ya usas MCP en otra herramienta, importa sus servidores en lugar de escribir
mcp.json a mano. /mcp-import lee desde:
It merges the chosen servers into ~/.free-code/agent/mcp.json and extracts
any env values it finds into ~/.free-code/agent/.env. Imported
servers arrive disabled — enable the ones you want, then
/reload.Combina los servidores elegidos en ~/.free-code/agent/mcp.json y extrae
cualquier valor env que encuentra hacia ~/.free-code/agent/.env. Los servidores
importados llegan deshabilitados — habilita los que quieras y luego
/reload.
From zero to a working MCP server.De cero a un servidor MCP funcionando.
# 1. Add the server definition to ~/.free-code/agent/mcp.json
# (or run /mcp-import to bring one in)
# 2. Put any token/API key in ~/.free-code/agent/.env
echo 'GITHUB_PERSONAL_ACCESS_TOKEN=ghp_xxx' >> ~/.free-code/agent/.env
# 3. Enable it and reload
/mcp enable github
/reload
# 4. Confirm it's on
/mcp list
# 1. Añade la definición del servidor a ~/.free-code/agent/mcp.json
# (o ejecuta /mcp-import para traer una)
# 2. Pon cualquier token/clave de API en ~/.free-code/agent/.env
echo 'GITHUB_PERSONAL_ACCESS_TOKEN=ghp_xxx' >> ~/.free-code/agent/.env
# 3. Habilítalo y recarga
/mcp enable github
/reload
# 4. Confirma que está activo
/mcp list