Servidor MCP applescript-mcp
Un servidor de Protocolo de Contexto de Modelo que permite que las aplicaciones LLM interactúen con macOS mediante AppleScript. Este servidor proporciona una interfaz estandarizada para que las aplicaciones de IA controlen las funciones del sistema, administren archivos, gestionen notificaciones y más.
Características
- 🗓️ Gestión de calendario (eventos, recordatorios)
- Operaciones del portapapeles
- 🔍 Integración con Finder
- 🔔 Notificaciones del sistema
- ⚙️ Controles del sistema (volumen, modo oscuro, aplicaciones)
- Integración del terminal iTerm
- 📬 Correo (crear nuevo correo electrónico, listar correos electrónicos, recibir correo electrónico)
- 🔄 Automatización de atajos
- 💬 Mensajes (listar chats, recibir mensajes, buscar mensajes, enviar un mensaje)
- 🗒️ Notas (crear notas formateadas, enumerar notas, buscar notas)
- 📄 Páginas (crear documentos)
Funciones planificadas
- 🧭 Safari (abrir en Safari, guardar el contenido de la página, obtener la página/pestaña seleccionada)
- ✅ Recordatorios (crear, recibir)
Prerrequisitos
- macOS 10.15 o posterior
- Node.js 18 o posterior
Categorías disponibles
Calendario
Dominio | Descripción | Parámetros |
---|---|---|
add | Crear evento de calendario | title , startDate , endDate , calendar (opcional) |
list | Enumere los eventos de hoy | Ninguno |
Ejemplos
Portapapeles
Dominio | Descripción | Parámetros |
---|---|---|
set_clipboard | Copiar al portapapeles | content |
get_clipboard | Obtener el contenido del portapapeles | Ninguno |
clear_clipboard | Borrar el portapapeles | Ninguno |
Ejemplos
Descubridor
Dominio | Descripción | Parámetros |
---|---|---|
get_selected_files | Obtener archivos seleccionados | Ninguno |
search_files | Buscar archivos | query , location (opcional) |
quick_look | Archivo de vista previa | path |
Ejemplos
Notificaciones
Nota: Para enviar notificaciones es necesario habilitar las notificaciones en Configuración del sistema > Notificaciones > Editor de scripts.
Dominio | Descripción | Parámetros |
---|---|---|
send_notification | Mostrar notificación | title , message , sound (opcional) |
toggle_do_not_disturb | Activar o desactivar el modo DND | Ninguno |
Ejemplos
Sistema
Dominio | Descripción | Parámetros |
---|---|---|
volume | Establecer el volumen del sistema | level (0-100) |
get_frontmost_app | Obtener aplicación activa | Ninguno |
launch_app | Abrir solicitud | name |
quit_app | Cerrar aplicación | name , force (opcional) |
toggle_dark_mode | Activar el modo oscuro | Ninguno |
Ejemplos
iTerm
Dominio | Descripción | Parámetros |
---|---|---|
paste_clipboard | Pegar en iTerm | Ninguno |
run | Ejecutar comando | command , newWindow (opcional) |
Ejemplos
Atajos
Dominio | Descripción | Parámetros |
---|---|---|
run_shortcut | Ejecutar un atajo | name , input (opcional) |
list_shortcuts | Listar todos los accesos directos disponibles | limit (opcional) |
Ejemplos
Correo
Dominio | Descripción | Parámetros |
---|---|---|
create_email | Crear un nuevo correo electrónico en Mail.app | recipient , subject , body |
list_emails | Listar correos electrónicos de un buzón | mailbox (opcional), count (opcional), unreadOnly (opcional) |
get_email | Obtenga un correo electrónico específico mediante una búsqueda | subject (opcional), sender (opcional), dateReceived (opcional), mailbox (opcional), account (opcional), unreadOnly (opcional), includeBody (opcional) |
Ejemplos
Mensajes
Dominio | Descripción | Parámetros |
---|---|---|
list_chats | Lista de chats de iMessage y SMS disponibles | includeParticipantDetails (opcional, valor predeterminado: falso) |
get_messages | Recibir mensajes desde la aplicación Mensajes | limit (opcional, predeterminado: 100) |
search_messages | Buscar mensajes que contengan texto específico | searchText , sender (opcional), chatId (opcional), limit (opcional, predeterminado: 50), daysBack (opcional, predeterminado: 30) |
compose_message | Abra la aplicación Mensajes con un mensaje precargado o envío automático | recipient (obligatorio), body (opcional), auto (opcional, predeterminado: falso) |
Ejemplos
Notas
Dominio | Descripción | Parámetros |
---|---|---|
create | Crea una nota con formato similar a Markdown | title , content , format (opcional con opciones de formato) |
createRawHtml | Crear una nota con contenido HTML directo | title , html |
list | Lista de notas, opcionalmente de una carpeta específica | folder (opcional) |
get | Obtener una nota específica por título | title , folder (opcional) |
search | Buscar notas que contengan texto específico | query , folder (opcional), limit (opcional, predeterminado: 5), includeBody (opcional, predeterminado: verdadero) |
Ejemplos
Páginas
Dominio | Descripción | Parámetros |
---|---|---|
create_document | Crear un nuevo documento de Pages con texto sin formato | content |
Ejemplos
Arquitectura
El servidor applescript-mcp está construido con TypeScript y sigue una arquitectura modular:
Componentes principales
- AppleScriptFramework (
framework.ts
): La clase de servidor principal que:- Gestiona la comunicación del protocolo MCP
- Maneja el registro y ejecución de herramientas.
- Proporciona funcionalidad de registro
- Ejecuta comandos de AppleScript
- Categorías (
src/categories/*.ts
): colecciones de scripts modulares organizadas por funcionalidad:- Cada categoría contiene scripts relacionados (por ejemplo, calendario, sistema, notas)
- Las categorías se registran en el marco en
index.ts
- Tipos (
src/types/index.ts
): Interfaces de TypeScript que definen:ScriptDefinition
: Estructura para scripts individualesScriptCategory
: Colección de scripts relacionadosLogLevel
: niveles de registro estándarFrameworkOptions
: Opciones de configuración
Flujo de ejecución
- El cliente envía una solicitud de herramienta a través del protocolo MCP
- El servidor identifica la categoría y el script adecuados
- El contenido del script se genera (estático o dinámicamente mediante una función)
- AppleScript se ejecuta a través del comando
osascript
de macOS - Los resultados se devuelven al cliente.
Sistema de registro
El marco incluye un sistema de registro integral que:
- Registra tanto el protocolo de registro stderr como el de MCP
- Admite múltiples niveles de gravedad (depuración, información, advertencia, error, etc.)
- Proporciona información detallada de ejecución para la resolución de problemas.
Desarrollo
Configuración
Añadiendo nueva funcionalidad
1. Crear archivo de categoría
Crear src/categories/newcategory.ts
:
2. Agregar scripts
3. Categoría de registro
Actualizar src/index.ts
:
Desarrollo avanzado de scripts
Para scripts más complejos, puedes:
- Utilice la generación dinámica de scripts :
- Procesar datos complejos :
Depuración
Uso del inspector MCP
El Inspector MCP proporciona una interfaz web para probar y depurar su servidor:
Explotación florestal
Habilite el registro de depuración configurando la variable de entorno:
Ejemplo de configuración
Después de ejecutar npm run build
agregue lo siguiente a su archivo mcp.json
:
Problemas comunes
- Errores de permisos : Consultar Preferencias del sistema > Seguridad y privacidad > Privacidad > Automatización
- Errores de script : Pruebe los scripts directamente en Script Editor.app antes de la integración
- Problemas de comunicación : compruebe que los flujos de stdio no se redirigen
- Acceso a la base de datos : algunas funciones (como Mensajes) requieren permiso de acceso completo al disco
Recursos
Contribuyendo
- Bifurcar el repositorio
- Crear una rama de características
- Confirme sus cambios
- Empujar hacia la rama
- Crear una solicitud de extracción
Licencia
Licencia MIT: consulte LICENCIA para obtener más detalles
You must be authenticated.
local-only server
The server can only run on the client's local machine because it depends on local resources.
Permite que las aplicaciones LLM interactúen con macOS a través de AppleScript.
Related MCP Servers
- AsecurityAlicenseAqualityEnables LLMs to interact with web pages, take screenshots, and execute JavaScript in a real browser environmentLast updated -1032785JavaScriptMIT License
- AsecurityFlicenseAqualityEnables LLMs to perform web browsing tasks, take screenshots, and execute JavaScript using Puppeteer for browser automation.Last updated -415,5021JavaScript
- AsecurityFlicenseAqualityEnables browser automation for LLMs on Linux display servers, supporting web interaction, screenshots, and JavaScript execution in a real browser.Last updated -754JavaScript
- -securityAlicense-qualityA comprehensive toolkit that enhances LLM capabilities through the Model Context Protocol, allowing LLMs to interact with external services including command-line operations, file management, Figma integration, and audio processing.Last updated -17PythonApache 2.0