Claude Assist MCP
Permite la comunicación entre Claude Code y Claude Desktop para revisiones de código.
Documentación
MCP Claude Desktop
Un servidor de Model Context Protocol (MCP) que permite a Claude Code comunicarse con Claude Desktop. Este servidor permite a Claude Code enviar prompts a Claude Desktop y consultar respuestas.
Inspirado en claude-chatgpt-mcp, este proyecto adapta el concepto para el ecosistema de Apple utilizando automatización nativa de macOS.
Características
- Enviar prompts desde Claude Code a Claude Desktop
- Consulta automática de respuestas con tiempo de espera configurable
- Listar conversaciones disponibles en Claude Desktop
- Manejo de errores y lógica de reintentos
- Registro (logging) exhaustivo
Instalación
Puedes instalar y usar este servidor MCP de dos maneras:
Opción 1: Usando npx (Recomendado)
La forma más sencilla de usar este servidor es directamente con npx, sin necesidad de instalación:
{
"mcpServers": {
"claude-desktop": {
"command": "npx",
"args": ["mcp-claude-desktop"]
}
}
}
Opción 2: Instalación Local
- Clona este repositorio:
git clone https://github.com/dpaluy/mcp-claude-desktop
cd mcp-claude-desktop
- Instala las dependencias:
npm install
- Compila el proyecto:
npm run build
- Configura MCP:
{
"mcpServers": {
"claude-desktop": {
"command": "node",
"args": ["/path/to/mcp-claude-desktop/dist/index.js"]
}
}
}
Requisitos del Sistema
- macOS 11.0+ (Big Sur o posterior)
- Node.js 18+
- Aplicación Claude Desktop instalada
- Permisos de accesibilidad otorgados para AppleScript
Otorgar Permisos de Accesibilidad
- Abre Preferencias del Sistema > Seguridad y Privacidad > Privacidad
- Selecciona "Accesibilidad" en la barra lateral izquierda
- Haz clic en el candado para realizar cambios
- Agrega Terminal (o tu aplicación de terminal) a las aplicaciones permitidas
- Reinicia tu terminal
Herramientas MCP
Este servidor MCP proporciona dos herramientas:
ask
- Propósito: Enviar un prompt a Claude Desktop y obtener una respuesta
- Parámetros:
prompt: El texto a enviar a Claude Desktop (obligatorio)conversationId: ID opcional para continuar una conversación específicatimeout: Tiempo de espera de respuesta en segundos (opcional, predeterminado: 30, máximo: 300)pollingInterval: Frecuencia de verificación de respuesta en segundos (opcional, predeterminado: 1.5, mínimo: 0.5)
get_conversations
- Propósito: Obtener una lista de conversaciones disponibles en Claude Desktop
- Parámetros: Ninguno
Uso
Una vez configurado, Claude Code puede usar el MCP de diversas maneras:
Uso General
Cuando Claude usa estas herramientas, las llamará con parámetros como:
Uso básico:
- Herramienta:
ask - Parámetros:
{ "prompt": "What is dependency injection?" }
Con tiempo de espera personalizado:
- Herramienta:
ask - Parámetros:
{ "prompt": "Explain quantum computing", "timeout": 120 }
Con tiempo de espera e intervalo de consulta:
- Herramienta:
ask - Parámetros:
{ "prompt": "Quick question", "timeout": 10, "pollingInterval": 0.5 }
Obtener conversaciones:
- Herramienta:
get_conversations - Parámetros:
{}
Cómo Usarlo en Claude
Una vez que el servidor MCP está configurado y en ejecución, puedes usar estas herramientas directamente en Claude:
Uso básico:
- "Usa la herramienta ask para preguntar a Claude Desktop: ¿Cuáles son las mejores prácticas para el manejo de errores en Python?"
- "Usa get_conversations para listar todas mis conversaciones de Claude Desktop"
Con tiempo de espera personalizado:
- "Usa la herramienta ask con tiempo de espera 60 para preguntar a Claude Desktop: Explica la implementación del árbol B+"
- "Usa ask con tiempo de espera 10 y pollingInterval 0.5 para preguntar a Claude Desktop: ¿Cuánto es 2+2?"
Importante: La configuración del servidor MCP (mostrada arriba) solo indica a Claude cómo iniciar el servidor. Los parámetros de tiempo de espera y pollingInterval se especifican al usar la herramienta en Claude, no en el archivo de configuración del servidor.
Limitaciones Conocidas
Lectura de Respuestas
Debido a la arquitectura basada en Electron de Claude Desktop, esta integración MCP no puede leer las respuestas de Claude programáticamente. La herramienta puede:
- ✅ Enviar prompts a Claude Desktop
- ✅ Crear nuevas conversaciones
- ✅ Activar y enfocar la ventana de Claude
- ❌ Leer las respuestas de Claude
Esta es una limitación de cómo las aplicaciones Electron exponen los elementos de interfaz a través de las APIs de accesibilidad. Cuando uses la herramienta ask, recibirás una confirmación de que el mensaje fue enviado, pero deberás verificar la ventana de Claude Desktop directamente para ver la respuesta.
Soluciones Alternativas
- Usa la API de Claude: Para acceso programático a respuestas, considera usar la API de Claude directamente en lugar de la automatización de escritorio
- Verificación manual: Después de enviar un prompt, verifica manualmente la ventana de Claude Desktop para ver la respuesta
- Automatización unidireccional: Usa esta herramienta para escenarios donde solo necesites enviar prompts sin leer respuestas
Integración con Claude Commands
Claude Commands te permite crear flujos de trabajo reutilizables que combinan herramientas MCP. Este proyecto funciona perfectamente con Claude Commands para habilitar automatización potente.
Ejemplo: Comando de Revisión de Código entre Pares
Hemos incluido un ejemplo de Claude Command que demuestra cómo usar MCP Claude Desktop para revisiones de código automatizadas. El comando usa git para analizar cambios recientes y los envía a Claude Desktop para obtener retroalimentación de revisión entre pares.
Configuración
-
Copia el comando de ejemplo a tu directorio de Claude Commands:
cp examples/claude-peer-review.md ~/.claude/commands/ -
El comando estará disponible en Claude Code como
/claude-peer-review
Uso
El comando de revisión entre pares acepta hasta 3 argumentos:
- description: Qué cambios revisar (ej., "corrección de autenticación")
- polling_interval: Frecuencia de verificación de respuesta (predeterminado: 1.5s)
- timeout: Tiempo máximo de espera para la respuesta (predeterminado: 30s)
Ejemplos:
# Review most recent commit with defaults
/claude-peer-review
# Review with description
/claude-peer-review "bug fix for user login"
# Custom polling interval (2 seconds)
/claude-peer-review "API update" 2
# Custom timeout for complex reviews (2 minutes)
/claude-peer-review "major refactor" 1.5 120
Cómo Funciona
-
Integración con Git: El comando obtiene automáticamente:
- Estado actual de git
- Estadísticas de commits recientes
- Diff completo de los cambios
- Nombre de la rama actual
-
Revisión de Claude Desktop: Envía los cambios a Claude Desktop con preguntas de revisión específicas:
- Adecuación del código y calidad de implementación
- Problemas de seguridad o posibles errores
- Calidad del código y mejores prácticas
- Sugerencias de mejoras
-
Manejo de Respuestas: Usa el mecanismo de consulta del servidor MCP para esperar la respuesta de Claude
-
Generación de Resumen: Proporciona un resumen estructurado de:
- Cambios revisados
- Retroalimentación de Claude
- Acciones tomadas basadas en la retroalimentación
- Estado final de la revisión
Creando Tus Propios Comands
Puedes crear Claude Commands personalizados que aprovechen MCP Claude Desktop. Los comandos deben:
-
Incluir las herramientas en el frontmatter:
--- allowed-tools: mcp__claude-desktop__ask, mcp__claude-desktop__get_conversations --- -
Usar las herramientas MCP con parámetros apropiados:
mcp__claude-desktop__ask prompt: "Your prompt here" timeout: 60 pollingInterval: 2 -
Manejar los tiempos de espera con elegancia y sugerir tiempos de espera más largos para consultas complejas
Consulta el comando de ejemplo para una implementación completa.
Desarrollo
Ejecución en Modo de Desarrollo
npm run dev
Ejecución de Pruebas
npm test
Linting
npm run lint
Verificación de Tipos
npm run typecheck
API
Herramientas
ask
Envía un prompt a Claude Desktop y obtén una respuesta.
Parámetros:
prompt(string, obligatorio): El prompt a enviarconversationId(string, opcional): Continuar una conversación específicatimeout(number, opcional): Tiempo de espera de respuesta en segundos- Predeterminado: 30 segundos
- Mínimo: 1 segundo
- Máximo: 300 segundos (5 minutos)
pollingInterval(number, opcional): Frecuencia de verificación de respuesta en segundos- Predeterminado: 1.5 segundos
- Mínimo: 0.5 segundos
- Máximo: 10 segundos
Respuesta:
String containing Claude's response
get_conversations
Obtén una lista de conversaciones disponibles en Claude Desktop.
Parámetros: Ninguno
Respuesta:
{
conversations: string[];
timestamp: string;
}
Arquitectura
El servidor MCP usa AppleScript para comunicarse con Claude Desktop:
- Claude Code envía un prompt a través de MCP
- AppleScript activa Claude Desktop y crea una nueva conversación
- El prompt se escribe en Claude Desktop
- El servidor consulta Claude Desktop por la respuesta
- Una vez que se detecta una respuesta, se analiza y se devuelve a Claude Code
Solución de Problemas
Problemas Comunes
-
"La ejecución de AppleScript falló"
- Asegúrate de que Claude Desktop esté instalado y en ejecución
- Verifica los permisos de accesibilidad
- Intenta ejecutar el servidor con un nivel de registro más alto:
LOG_LEVEL=3
-
"Tiempo de espera de respuesta agotado"
- Aumenta el parámetro de tiempo de espera:
timeout: 60(60 segundos) - Para consultas complejas, usa tiempos de espera más largos:
timeout: 120(2 minutos) - Reduce el intervalo de consulta para una detección más rápida:
pollingInterval: 0.5 - Verifica si Claude Desktop está respondiendo normalmente
- Asegúrate de que el sistema no esté bajo carga pesada
- Aumenta el parámetro de tiempo de espera:
-
"Permiso denegado"
- Otorga permisos de accesibilidad a tu terminal
- Ejecuta el comando de compilación con los permisos adecuados
-
El Servidor MCP se Bloquea Después de Enviar Solicitudes Si el servidor MCP se bloquea después de manejar solicitudes, puedes:
-
Deshabilitar la consulta de respuestas (recomendado para estabilidad):
export SKIP_CLAUDE_POLLING=trueEsto enviará el mensaje a Claude Desktop pero no intentará leer la respuesta.
-
Habilitar el registro de depuración para ver qué está sucediendo:
export LOG_LEVEL=3 -
Verificar la salida de stderr - Todos los registros ahora se escriben en stderr para evitar interferir con el protocolo MCP en stdout.
-
Limitaciones Conocidas con la Consulta de Respuestas
La consulta de respuestas puede causar inestabilidad ocasionalmente debido a:
- Duración extendida de la consulta (30 segundos predeterminado)
- Lectura compleja de elementos de interfaz de aplicaciones Electron
- Problemas de sincronización con la generación de respuestas de Claude
Considera usar SKIP_CLAUDE_POLLING=true para una operación más confiable si no necesitas leer respuestas.
Contribuciones
¡Damos la bienvenida a contribuciones a MCP Claude Desktop! Ya sea que estés corrigiendo errores, agregando funciones o mejorando la documentación, tu ayuda es apreciada.
Primeros Pasos
- Haz un fork del repositorio
- Clona tu fork:
git clone https://github.com/YOUR_USERNAME/mcp-claude-desktop cd mcp-claude-desktop - Instala las dependencias:
npm install - Crea una nueva rama:
git checkout -b feature/your-feature-name
Flujo de Trabajo de Desarrollo
- Realiza tus cambios
- Ejecuta las pruebas para asegurarte de que todo funcione:
npm test - Ejecuta el linting para mantener la calidad del código:
npm run lint - Ejecuta la verificación de tipos:
npm run typecheck - Compila el proyecto:
npm run build
Pautas de Estilo de Código
- Usa TypeScript para todo el código fuente
- Sigue el estilo de código existente (aplicado por ESLint)
- Escribe mensajes de commit significativos
- Agrega pruebas para nuevas funciones
- Actualiza la documentación según sea necesario
Envío de Cambios
- Haz commit de tus cambios con un mensaje descriptivo:
git commit -m "feat: add support for conversation history" - Haz push a tu fork:
git push origin feature/your-feature-name - Crea un Pull Request en GitHub
Pautas para Pull Requests
- Proporciona una descripción clara de los cambios
- Haz referencia a cualquier problema relacionado
- Asegúrate de que todas las pruebas pasen
- Actualiza el README si agregas nuevas funciones
- Sé receptivo a la retroalimentación de la revisión de código
Reporte de Problemas
- Usa GitHub Issues para reportar errores
- Incluye la versión de macOS y la versión de Node.js
- Proporciona pasos para reproducir el problema
- Incluye mensajes de error o registros relevantes
Solicitudes de Funciones
- Abre un issue para discutir nuevas funciones
- Explica el caso de uso y los beneficios
- Sé abierto a la retroalimentación y enfoques alternativos
Licencia
MIT