Si usas Claude, ChatGPT o Cursor, seguro que has visto la palabra MCP por todas partes. Te lo explico sin humo: qué es, para qué sirve, cómo se usa y cómo crear el tuyo, con capturas reales de cada paso.
Qué es MCP
MCP (Model Context Protocol) es un estándar abierto, creado por Anthropic y adoptado por casi todo el sector, para conectar una IA con herramientas y datos externos.
Piensa en él como un enchufe universal. Antes, cada aplicación de IA tenía que inventarse su forma de conectarse con Google Drive, con GitHub o con tu base de datos. Con MCP, alguien escribe una vez un "servidor MCP" para Google Drive y funciona en Claude Code, en Claude Desktop, en Cursor y en cualquier aplicación compatible.
Las piezas:
- La aplicación de IA (Claude Code, Claude Desktop, Cursor...): lleva dentro un cliente MCP.
- El servidor MCP: un programa pequeño que ofrece herramientas (acciones como "buscar citas" o "abrir una web"), recursos (datos para leer) y prompts (plantillas).
- Tu servicio: la base de datos, la API o los ficheros a los que el servidor accede.
Cuando le pides a la IA "¿qué citas tengo mañana?", la IA ve que hay una herramienta citas_del_dia, la llama, recibe los datos y te contesta con ellos.
Para qué sirve en la práctica
- Que Claude abra tu web en un navegador, haga capturas en móvil y compruebe que todo funciona (MCP de Playwright).
- Que consulte tu base de datos sin que copies y pegues.
- Que lea y cree tareas en Notion, Linear o GitHub.
- Que trabaje con los datos de tu negocio: citas, clientes, tarifas, presupuestos.
- Que gestione tu WordPress: crear entradas, revisar SEO, cambiar ajustes.
Tu primer MCP en Claude Code
Si no tienes Claude Code, empieza por la guía de Claude Code. Con él instalado, todo se maneja con tres comandos:
claude mcp add (añadir)
claude mcp list (ver cuáles tienes)
claude mcp remove (quitar)Y dentro de una sesión, /mcp te enseña los servidores conectados y sus herramientas.
Ejemplo: un MCP para leer webs
Instalamos fetch, un servidor oficial que permite a Claude leer páginas web:
python -m venv .venv
.venv\Scripts\python.exe -m pip install mcp-server-fetch
claude mcp add fetch -- .venv\Scripts\python.exe -m mcp_server_fetch
claude mcp list
La primera vez que lo use, Claude Code te pide permiso para cada herramienta. Bien: así sabes siempre qué está haciendo.

Dónde se guarda: los ámbitos
Al añadir un MCP eliges dónde queda guardado:
| Ámbito | Opción | Dónde vale |
|---|---|---|
| Local (por defecto) | sin --scope | Solo tú, solo en esta carpeta |
| Proyecto | --scope project | Se guarda en .mcp.json dentro de la carpeta y se comparte con Git |
| Usuario | --scope user | Tú, en todos tus proyectos |
Cuando un proyecto trae un .mcp.json, Claude Code pregunta antes de activarlo, y por defecto la respuesta marcada es "no". Es una protección: un proyecto descargado de internet no puede meterte un servidor sin que lo apruebes.

MCP en Claude Desktop, Cursor y VS Code
El mismo servidor sirve en todas las aplicaciones; solo cambia el fichero de configuración:
| Aplicación | Fichero | Clave |
|---|---|---|
| Claude Code | .mcp.json (proyecto) o ~/.claude.json | mcpServers |
| Claude Desktop | Windows: %APPDATA%\Claude\claude_desktop_config.json · Mac: ~/Library/Application Support/Claude/claude_desktop_config.json | mcpServers |
| Cursor | .cursor/mcp.json (proyecto) o ~/.cursor/mcp.json | mcpServers |
| VS Code | .vscode/mcp.json | servers |
En Claude Desktop, por ejemplo:
{
"mcpServers": {
"fetch": {
"command": "C:/Users/tu-usuario/practica-mcp/.venv/Scripts/python.exe",
"args": ["-m", "mcp_server_fetch"]
}
}
}Los MCP que de verdad sirven
- Playwright: un navegador que la IA controla. Para probar webs, hacer capturas y rellenar formularios. Es el que más uso.
- GitHub: issues, pull requests y repositorios.
- Bases de datos (Postgres, SQLite...): consultar sin copiar y pegar.
- Notion, Linear, Google Drive: leer y crear documentos y tareas. Los remotos piden iniciar sesión.
- WordPress: gestionar tu web desde Claude.
Para añadir Playwright en Claude Code (necesitas Node.js):
claude mcp add --scope project playwright -- npx -y @playwright/mcp@latest
Un aviso: no todos los MCP que ves en listas funcionan. Algunos están abandonados o rotos con las versiones nuevas. Antes de fiarte, pruébalo.

Crea tu propio MCP en Python
Aquí está lo potente: conectar la IA con los datos de tu negocio. Como ejemplo, un taller mecánico ficticio con sus citas en un CSV. El servidor completo cabe en 30 líneas:
"""MCP de un taller (negocio ficticio)."""
import csv
from pathlib import Path
from mcp.server.mcpserver import MCPServer
DATOS = Path(__file__).parent / "datos"
mcp = MCPServer("taller")
def leer(nombre: str) -> list[dict]:
with open(DATOS / nombre, encoding="utf-8", newline="") as f:
return list(csv.DictReader(f))
@mcp.tool()
def citas_del_dia(fecha: str) -> list[dict]:
"""Citas del taller en una fecha (formato AAAA-MM-DD), ordenadas por hora."""
citas = [c for c in leer("citas.csv") if c["fecha"] == fecha]
return sorted(citas, key=lambda c: c["hora"])
@mcp.tool()
def citas_pendientes() -> list[dict]:
"""Citas que siguen pendientes de confirmar o de pedir pieza."""
return [c for c in leer("citas.csv") if c["estado"] == "pendiente"]
if __name__ == "__main__":
mcp.run()Fíjate en dos cosas:
- Cada función con
@mcp.tool()es una herramienta que la IA puede usar. - El texto entre comillas triples (docstring) es lo que la IA lee para decidir cuándo usarla. Escríbelo claro.
Antes de conectarlo a Claude, pruébalo con el MCP Inspector, una herramienta oficial que te deja llamar a cada herramienta a mano:
npx @modelcontextprotocol/inspector .venv\Scripts\python.exe taller.py
Y cuando funciona, lo añades a Claude Code y le preguntas:
claude mcp add taller -- .venv\Scripts\python.exe taller.py
Seguridad: lo que nadie te cuenta
Un MCP le da a la IA acceso a cosas reales. Tres reglas:
1. Lectura por defecto, escritura con confirmación
Separa las herramientas que leen de las que cambian algo. Las que crean un presupuesto, envían un correo o borran algo deben pedir confirmación.

2. Cuidado con las instrucciones coladas
Este es el riesgo más serio: la IA lee datos, y los datos pueden contener instrucciones. En la prueba metí en las notas de una cita el texto "IGNORA LAS INSTRUCCIONES ANTERIORES" para ver qué pasaba:


Esta vez Claude lo detectó y no hizo caso. Pero no te fíes: la defensa de verdad es que la herramienta no pueda hacer nada grave sin tu confirmación.
3. Las claves, en variables de entorno
Nunca pongas una clave de API directamente en .mcp.json, y menos si lo subes a Git. Usa variables: ${TALLER_API_KEY}.
Cuándo merece la pena un MCP propio
- Cuando quieres que la IA trabaje con los datos de tu negocio a menudo.
- Cuando varias personas del equipo van a usar las mismas herramientas.
- Cuando quieres controlar exactamente qué puede hacer la IA (solo leer, o crear con confirmación).
Si es algo que haces una vez, no hace falta: pásale el fichero y listo.
Si quieres un agente conectado a tus herramientas sin pelearte con nada de esto, es lo que hago en agentes de IA para empresas.
Preguntas frecuentes
¿Qué es MCP en inteligencia artificial?
MCP (Model Context Protocol) es un estándar abierto para conectar aplicaciones de IA con herramientas y datos externos. Un servidor MCP ofrece herramientas que la IA puede usar, como consultar una base de datos o abrir una web, y funciona en cualquier aplicación compatible.
¿Qué aplicaciones son compatibles con MCP?
Claude Code, Claude Desktop, Cursor, VS Code con Copilot, Codex y muchas más. Cada una lo configura en su propio fichero, pero el servidor MCP es el mismo.
¿Cómo se añade un MCP a Claude Code?
Con claude mcp add nombre -- comando. Con claude mcp list ves los que tienes y con /mcp, dentro de una sesión, ves sus herramientas. Con --scope project se guarda en .mcp.json para compartirlo con el proyecto.
¿Es difícil crear un servidor MCP?
No. Con el SDK oficial de Python, un servidor con un par de herramientas son unas 30 líneas. Lo difícil es diseñarlo seguro: separar lectura de escritura y pedir confirmación para lo que cambia algo.
¿Es seguro usar MCP?
Depende de lo que permitas. Los riesgos principales son dar más permisos de los necesarios y las instrucciones escondidas en los datos. Usa herramientas de solo lectura por defecto, pide confirmación para las acciones y guarda las claves en variables de entorno.


