MCP + Cursor: integración para devs en 2026

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.json en 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:

  1. filesystem apuntado a la raíz del proyecto.
  2. github-mcp con un PAT para crear PRs sin salir del IDE.
  3. postgres-mcp apuntando al staging (no a prod) para queries ad-hoc.
  4. sequential-thinking-mcp para refactors complejos y debugging asistido.
  5. 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:

  1. ¿El JSON parsea? (un comma extra rompe todo).
  2. ¿El comando funciona en una terminal con el mismo PATH?
  3. ¿Cursor tiene Node.js/uv en el PATH? — en macOS los procesos GUI a veces ignoran ~/.zshrc.
  4. ¿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.