Cursor adoptó Model Context Protocol a finales de 2024 y desde entonces es uno de los clientes MCP más usados por desarrolladores. La diferencia con Claude Desktop está en los detalles: ubicación del config, scopes per-project y un par de gotchas. Esta guía cubre el setup que usamos en nuestros propios proyectos.
Dónde vive el config en Cursor
A diferencia de Claude Desktop (un único JSON global), Cursor permite configuración por proyecto. Dos archivos posibles:
- Global:
~/.cursor/mcp.json— aplica a todos los workspaces. - Por proyecto:
.cursor/mcp.jsonen la raíz del repo — sobreescribe la global y se versiona en git para tu equipo.
El formato es idéntico al de Claude Desktop:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "."]
}
}
}
El "." en filesystem es relativo a la raíz del proyecto Cursor — un detalle que ahorra repetir rutas absolutas para cada repo.
Stack mínimo recomendado para devs
En proyectos full-stack, este es el stack que funciona sin sobrecargar la app:
- filesystem apuntado a la raíz del proyecto.
- github-mcp con un PAT para crear PRs sin salir del IDE.
- postgres-mcp apuntando al staging (no a prod) para queries ad-hoc.
- sequential-thinking-mcp para refactors complejos y debugging asistido.
- brave-search-mcp para buscar errores raros sin saltar al navegador.
Más de 5-6 servidores activos hace que el arranque del agente se vuelva pesado. Si trabajas con varios proyectos muy distintos (un backend Rust + un mobile React Native), usa configs por proyecto en vez de uno global.
Diferencias clave con Claude Desktop
- Cursor invoca tools en flujo Agent; Claude Desktop pregunta confirmación más a menudo. Si quieres más control, usa el modo “Manual” de Cursor.
- Cursor expone tools en context window de forma comprimida — si tu servidor MCP define muchas tools (>15), considera dividirlo.
- Logs: Cursor → menú View → Output → “Cursor MCP”. En Claude Desktop el log está en disco.
- Restart: Cursor recarga MCP desde el menú command palette (“MCP: Reload”); Claude Desktop requiere cerrar la app.
Sincronización entre máquinas (laptop + desktop)
Si usas Cursor en dos máquinas, versiona .cursor/mcp.json en el repo (sin secretos) y pon las API keys en variables de entorno locales que el config consume vía "env": {"GITHUB_TOKEN": "..."}. Nunca commitees tokens directamente — esto lo escaneamos en muchos repos públicos y es vector de incidente.
Patrón “agente especializado” por proyecto
Para un repo de SaaS con Stripe, agrega stripe-mcp en su .cursor/mcp.json. Para un repo de scraping, agrega Playwright. Cursor solo carga lo del proyecto activo, así no contamina contextos cruzados.
Debugging cuando MCP no responde
Lista en orden:
- ¿El JSON parsea? (un comma extra rompe todo).
- ¿El comando funciona en una terminal con el mismo PATH?
- ¿Cursor tiene Node.js/uv en el PATH? — en macOS los procesos GUI a veces ignoran
~/.zshrc. - ¿El servidor escribe a stdout (rompe protocolo) o a stderr (correcto)?
Próximos pasos
Si vas a construir tu primer servidor MCP custom, el flujo de iteración con Cursor es excelente: editas el código, recargas MCP, pruebas. Lee nuestro tutorial cómo crear tu propio servidor MCP en Python para empezar.