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.

Integración continua de Node.js

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

// 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

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

// 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

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

// 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.

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

// 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

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

// 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

Dominio

Descripción

Parámetros

paste_clipboard

Pegar en iTerm

Ninguno

run

Ejecutar comando

command

,

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

Dominio

Descripción

Parámetros

run_shortcut

Ejecutar un atajo

name

,

input

(opcional)

list_shortcuts

Listar todos los accesos directos disponibles

limit

(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

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

// 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

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

// 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

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

// 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

Dominio

Descripción

Parámetros

create_document

Crear un nuevo documento de Pages con texto sin formato

content

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

Related MCP Servers

  • A
    security
    -
    license
    A
    quality
    Enables LLMs to interact with web pages, take screenshots, and execute JavaScript in a real browser environment
    Last updated -
    10
    633
    260
    MIT License
    • Apple
  • A
    security
    -
    license
    A
    quality
    Facilitates controlling Apple Music on macOS via AppleScript through MCP commands, allowing users to manage playback, search for tracks, and create playlists.
    Last updated -
    10
    59
    MIT License
    • Apple
  • A
    security
    -
    license
    A
    quality
    Enables interaction with lightning addresses and common lightning tools via your LLM, providing Lightning Network functionality through natural language.
    Last updated -
    3
    12
    1
  • A
    security
    -
    license
    A
    quality
    A Model Context Protocol server that enables running AppleScript code to interact with Mac applications and system features including Notes, Calendar, Contacts, Messages, file management, and more.
    Last updated -
    1
    165
    367
    MIT License
    • 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