Skip to main content
Glama

applescript-mcp

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

DominioDescripciónParámetros
addCrear evento de calendariotitle , startDate , endDate , calendar (opcional)
listEnumere los eventos de hoyNinguno
Ejemplos
// Create a new calendar event Create a calendar event titled "Team Meeting" starting tomorrow at 2pm for 1 hour // List today's events What events do I have scheduled for today?

Portapapeles

DominioDescripciónParámetros
set_clipboardCopiar al portapapelescontent
get_clipboardObtener el contenido del portapapelesNinguno
clear_clipboardBorrar el portapapelesNinguno
Ejemplos
// Copy text to clipboard Copy "Remember to buy groceries" to my clipboard // Get clipboard contents What's currently in my clipboard? // Clear clipboard Clear my clipboard

Descubridor

DominioDescripciónParámetros
get_selected_filesObtener archivos seleccionadosNinguno
search_filesBuscar archivosquery , location (opcional)
quick_lookArchivo de vista previapath
Ejemplos
// Get selected files in Finder What files do I currently have selected in Finder? // Search for files Find all PDF files in my Documents folder // Preview a file Show me a preview of ~/Documents/report.pdf

Notificaciones

Nota: Para enviar notificaciones es necesario habilitar las notificaciones en Configuración del sistema > Notificaciones > Editor de scripts.

DominioDescripciónParámetros
send_notificationMostrar notificacióntitle , message , sound (opcional)
toggle_do_not_disturbActivar o desactivar el modo DNDNinguno
Ejemplos
// Send a notification Send me a notification with the title "Reminder" and message "Time to take a break" // Toggle Do Not Disturb Turn on Do Not Disturb mode

Sistema

DominioDescripciónParámetros
volumeEstablecer el volumen del sistemalevel (0-100)
get_frontmost_appObtener aplicación activaNinguno
launch_appAbrir solicitudname
quit_appCerrar aplicaciónname , force (opcional)
toggle_dark_modeActivar el modo oscuroNinguno
Ejemplos
// Set system volume Set my Mac's volume to 50% // Get active application What app am I currently using? // Launch an application Open Safari // Quit an application Close Spotify // Toggle dark mode Switch to dark mode

iTerm

DominioDescripciónParámetros
paste_clipboardPegar en iTermNinguno
runEjecutar comandocommand , newWindow (opcional)
Ejemplos
// Paste clipboard to iTerm Paste my clipboard contents into iTerm // Run a command in iTerm Run "ls -la" in iTerm // Run a command in a new iTerm window Run "top" in a new iTerm window

Atajos

DominioDescripciónParámetros
run_shortcutEjecutar un atajoname , input (opcional)
list_shortcutsListar todos los accesos directos disponibleslimit (opcional)
Ejemplos
// List available shortcuts List all my available shortcuts // List with limit Show me my top 5 shortcuts // Run a shortcut Run my "Daily Note in Bear" shortcut // Run a shortcut with input Run my "Add to-do" shortcut with input "Buy groceries"

Correo

DominioDescripciónParámetros
create_emailCrear un nuevo correo electrónico en Mail.apprecipient , subject , body
list_emailsListar correos electrónicos de un buzónmailbox (opcional), count (opcional), unreadOnly (opcional)
get_emailObtenga un correo electrónico específico mediante una búsquedasubject (opcional), sender (opcional), dateReceived (opcional), mailbox (opcional), account (opcional), unreadOnly (opcional), includeBody (opcional)
Ejemplos
// Create a new email Compose an email to john@example.com with subject "Meeting Tomorrow" and body "Hi John, Can we meet tomorrow at 2pm?" // List emails Show me my 10 most recent unread emails // Get a specific email Find the email from sarah@example.com about "Project Update"

Mensajes

DominioDescripciónParámetros
list_chatsLista de chats de iMessage y SMS disponiblesincludeParticipantDetails (opcional, valor predeterminado: falso)
get_messagesRecibir mensajes desde la aplicación Mensajeslimit (opcional, predeterminado: 100)
search_messagesBuscar mensajes que contengan texto específicosearchText , sender (opcional), chatId (opcional), limit (opcional, predeterminado: 50), daysBack (opcional, predeterminado: 30)
compose_messageAbra la aplicación Mensajes con un mensaje precargado o envío automáticorecipient (obligatorio), body (opcional), auto (opcional, predeterminado: falso)
Ejemplos
// List available chats Show me my recent message conversations // Get recent messages Show me my last 20 messages // Search messages Find messages containing "dinner plans" from John in the last week // Compose a message Send a message to 555-123-4567 saying "I'll be there in 10 minutes"

Notas

DominioDescripciónParámetros
createCrea una nota con formato similar a Markdowntitle , content , format (opcional con opciones de formato)
createRawHtmlCrear una nota con contenido HTML directotitle , html
listLista de notas, opcionalmente de una carpeta específicafolder (opcional)
getObtener una nota específica por títulotitle , folder (opcional)
searchBuscar notas que contengan texto específicoquery , folder (opcional), limit (opcional, predeterminado: 5), includeBody (opcional, predeterminado: verdadero)
Ejemplos
// Create a new note with markdown formatting Create a note titled "Meeting Minutes" with content "# Discussion Points\n- Project timeline\n- Budget review\n- Next steps" and format headings and lists // Create a note with HTML Create a note titled "Formatted Report" with HTML content "<h1>Quarterly Report</h1><p>Sales increased by <strong>15%</strong></p>" // List notes Show me all my notes in the "Work" folder // Get a specific note Show me my note titled "Shopping List" // Search notes Find notes containing "recipe" in my "Cooking" folder

Páginas

DominioDescripciónParámetros
create_documentCrear un nuevo documento de Pages con texto sin formatocontent
Ejemplos
// Create a new Pages document Create a Pages document with the content "Project Proposal\n\nThis document outlines the scope and timeline for the upcoming project."

Arquitectura

El servidor applescript-mcp está construido con TypeScript y sigue una arquitectura modular:

Componentes principales

  1. 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
  2. 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
  3. Tipos ( src/types/index.ts ): Interfaces de TypeScript que definen:
    • ScriptDefinition : Estructura para scripts individuales
    • ScriptCategory : Colección de scripts relacionados
    • LogLevel : niveles de registro estándar
    • FrameworkOptions : Opciones de configuración

Flujo de ejecución

  1. El cliente envía una solicitud de herramienta a través del protocolo MCP
  2. El servidor identifica la categoría y el script adecuados
  3. El contenido del script se genera (estático o dinámicamente mediante una función)
  4. AppleScript se ejecuta a través del comando osascript de macOS
  5. 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

# Install dependencies npm install # Build the server npm run build # Launch MCP Inspector # See: https://modelcontextprotocol.io/docs/tools/inspector npx @modelcontextprotocol/inspector node path/to/server/index.js args...

Añadiendo nueva funcionalidad

1. Crear archivo de categoría

Crear src/categories/newcategory.ts :

import { ScriptCategory } from "../types/index.js"; export const newCategory: ScriptCategory = { name: "category_name", description: "Category description", scripts: [ // Scripts will go here ], };
2. Agregar scripts
{ name: "script_name", description: "What the script does", schema: { type: "object", properties: { paramName: { type: "string", description: "Parameter description" } }, required: ["paramName"] }, script: (args) => ` tell application "App" // AppleScript code using ${args.paramName} end tell ` }
3. Categoría de registro

Actualizar src/index.ts :

import { newCategory } from "./categories/newcategory.js"; // ... server.addCategory(newCategory);

Desarrollo avanzado de scripts

Para scripts más complejos, puedes:

  1. Utilice la generación dinámica de scripts :
    script: (args) => { // Process arguments and build script dynamically let scriptContent = `tell application "App"\n`; if (args.condition) { scriptContent += ` // Conditional logic\n`; } scriptContent += `end tell`; return scriptContent; }
  2. Procesar datos complejos :
    // Example from Notes category function generateNoteHtml(args: any): string { // Process markdown-like syntax into HTML let processedContent = content; if (format.headings) { processedContent = processedContent.replace(/^# (.+)$/gm, '<h1>$1</h1>'); // ... } return processedContent; }

Depuración

Uso del inspector MCP

El Inspector MCP proporciona una interfaz web para probar y depurar su servidor:

npm run inspector

Explotación florestal

Habilite el registro de depuración configurando la variable de entorno:

DEBUG=applescript-mcp* npm start

Ejemplo de configuración

Después de ejecutar npm run build agregue lo siguiente a su archivo mcp.json :

{ "mcpServers": { "applescript-mcp-server": { "command": "node", "args": ["/path/to/applescript-mcp/dist/index.js"] } } }

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

  1. Bifurcar el repositorio
  2. Crear una rama de características
  3. Confirme sus cambios
  4. Empujar hacia la rama
  5. Crear una solicitud de extracción

Licencia

Licencia MIT: consulte LICENCIA para obtener más detalles

You must be authenticated.

A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

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.

  1. Características
    1. Funciones planificadas
  2. Prerrequisitos
    1. Categorías disponibles
      1. Calendario
      2. Portapapeles
      3. Descubridor
      4. Notificaciones
      5. Sistema
      6. iTerm
      7. Atajos
      8. Correo
      9. Mensajes
      10. Notas
      11. Páginas
    2. Arquitectura
      1. Componentes principales
      2. Flujo de ejecución
      3. Sistema de registro
    3. Desarrollo
      1. Configuración
      2. Añadiendo nueva funcionalidad
      3. Desarrollo avanzado de scripts
    4. Depuración
      1. Uso del inspector MCP
      2. Explotación florestal
      3. Ejemplo de configuración
      4. Problemas comunes
    5. Recursos
      1. Contribuyendo
        1. Licencia

          Related MCP Servers

          • A
            security
            A
            license
            A
            quality
            Enables LLMs to interact with web pages, take screenshots, and execute JavaScript in a real browser environment
            Last updated -
            10
            327
            85
            JavaScript
            MIT License
            • Apple
          • A
            security
            F
            license
            A
            quality
            Enables LLMs to perform web browsing tasks, take screenshots, and execute JavaScript using Puppeteer for browser automation.
            Last updated -
            4
            15,502
            1
            JavaScript
          • A
            security
            F
            license
            A
            quality
            Enables browser automation for LLMs on Linux display servers, supporting web interaction, screenshots, and JavaScript execution in a real browser.
            Last updated -
            7
            5
            4
            JavaScript
            • Linux
          • -
            security
            A
            license
            -
            quality
            A 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 -
            17
            Python
            Apache 2.0
            • Linux
            • Apple

          View all related MCP servers

          MCP directory API

          We provide all the information about MCP servers via our MCP API.

          curl -X GET 'https://glama.ai/api/mcp/v1/servers/joshrutkowski/applescript-mcp'

          If you have feedback or need assistance with the MCP directory API, please join our Discord server