Integrations
Supports JavaScript for Automation (JXA) to automate macOS applications and system tasks, with ability to execute scripts directly or reference them from a knowledge base.
Enables execution of AppleScript and JavaScript for Automation (JXA) to control macOS applications and system functions, with capabilities for file operations, terminal automation, system settings control, clipboard management, and application-specific integrations.
Returns formatted Markdown content for scripting tips and examples from the knowledge base, making documentation accessible through the get_scripting_tips tool.
macOS Automator MCP Server
Überblick
Dieses Projekt stellt einen Model Context Protocol (MCP)-Server, macos_automator
, bereit, der die Ausführung von AppleScript- und JavaScript for Automation (JXA)-Skripten unter macOS ermöglicht. Es verfügt über eine Wissensdatenbank mit vordefinierten Skripten, die über die ID zugänglich sind, und unterstützt Inline-Skripte, Skriptdateien und Argumentübergabe. Die Wissensdatenbank wird bei der ersten Verwendung verzögert geladen, um einen schnellen Serverstart zu gewährleisten.
Vorteile
- Führen Sie AppleScript/JXA-Skripte remote über MCP aus.
- Nutzen Sie eine umfangreiche, erweiterbare Wissensdatenbank mit gängigen macOS-Automatisierungsaufgaben.
- Steuern Sie macOS-Anwendungen und Systemfunktionen programmgesteuert.
- Integrieren Sie die macOS-Automatisierung in größere KI-gesteuerte Workflows.
Voraussetzungen
- Node.js (Version >=18.0.0 empfohlen, siehe
package.json
-Engines). - macOS.
- EINRICHTUNG WICHTIGER BERECHTIGUNGEN:
- Die Anwendung, auf der DIESER MCP-Server ausgeführt wird (z. B. Terminal, Ihre Node.js-Anwendung), erfordert explizite Benutzerberechtigungen auf dem macOS-Computer, auf dem der Server ausgeführt wird.
- Automatisierungsberechtigungen: Zur Steuerung anderer Anwendungen (Finder, Safari, Mail usw.).
- Gehen Sie zu: Systemeinstellungen > Datenschutz und Sicherheit > Automatisierung.
- Suchen Sie in der Liste nach der Anwendung, die den Server ausführt (z. B. Terminal).
- Stellen Sie sicher, dass für alle zu steuernden Anwendungen Kontrollkästchen aktiviert sind.
- Siehe Beispiel:
docs/automation-permissions-example.png
(Platzhalterbild).
- Zugriffsberechtigungen: Für UI-Skripting über „Systemereignisse“ (z. B. Simulation von Klicks, Tastenanschlägen).
- Gehen Sie zu: Systemeinstellungen > Datenschutz und Sicherheit > Eingabehilfen.
- Fügen Sie der Liste die Anwendung hinzu, die den Server ausführt (z. B. Terminal), und stellen Sie sicher, dass das entsprechende Kontrollkästchen aktiviert ist.
- Beim erstmaligen Versuch, eine neue Anwendung zu steuern oder Bedienungshilfen zu verwenden, kann trotz vorheriger Autorisierung eine Bestätigungsaufforderung von macOS ausgelöst werden. Der Server selbst kann diese Berechtigungen nicht erteilen.
Installation und Verwendung
Der Server wird primär über npx
ausgeführt. Dadurch wird sichergestellt, dass Sie die neueste Version verwenden, ohne eine globale Installation durchführen zu müssen.
Fügen Sie mcp.json
Ihres MCP-Clients die folgende Konfiguration hinzu (oder eine gleichwertige Konfiguration):
Lokale Ausführung (für Entwicklung oder direkte Verwendung)
Alternativ können Sie für die Entwicklung oder wenn Sie den Server lieber direkt aus einem geklonten Repository ausführen möchten, das bereitgestellte Skript start.sh
verwenden. Dies ist nützlich, wenn Sie lokale Änderungen vornehmen oder eine bestimmte Version ausführen möchten.
- Klonen Sie das Repository:Copy
- Konfigurieren Sie Ihren MCP-Client: Aktualisieren Sie die Konfiguration Ihres MCP-Clients, sodass sie auf den absoluten Pfad des Skripts
start.sh
in Ihrem geklonten Repository verweist.Beispiel fürmcp.json
Konfigurationsausschnitt:Wichtig: Ersetzen SieCopy/absolute/path/to/your/cloned/macos-automator-mcp/start.sh
durch den richtigen absoluten Pfad auf Ihrem System.Das Skriptstart.sh
verwendet automatischtsx
, um den TypeScript-Quellcode direkt auszuführen, falls keine kompilierte Version gefunden wird, oder führt die kompilierte Version ausdist/
falls verfügbar. Die UmgebungsvariableLOG_LEVEL
wird dabei berücksichtigt.Hinweis für Entwickler: Das Skriptstart.sh
, insbesondere wenn es so modifiziert wurde, dass es vor der Ausführung bereits kompiliertedist/server.js
entfernt (z. B. durch Hinzufügen vonrm -f dist/server.js
), soll sicherstellen, dass Sie immer den neuesten TypeScript-Code aus dem Verzeichnissrc/
übertsx
ausführen. Dies ist ideal für die Entwicklung, um Probleme mit veralteten Builds zu vermeiden. Für die Produktionsbereitstellung (z. B. bei der Veröffentlichung in npm) würde ein Build-Prozess typischerweise eine definitivedist/server.js
erstellen, die dann als Einstiegspunkt für das veröffentlichte Paket dient.
Mitgelieferte Werkzeuge
1. execute_script
Führt ein AppleScript- oder JavaScript for Automation (JXA)-Skript unter macOS aus. Skripte können als Inline-Inhalt ( scriptContent
), als absoluter Dateipfad ( scriptPath
) oder durch Referenzieren eines Skripts aus der integrierten Wissensdatenbank mithilfe der eindeutigen kbScriptId
bereitgestellt werden.
Skriptquellen (schließen sich gegenseitig aus):
scriptContent
(Zeichenfolge): Roher Skriptcode.scriptPath
(Zeichenfolge): Absoluter POSIX-Pfad zu einer Skriptdatei (z. B..applescript
,.scpt
,.js
).kbScriptId
(Zeichenfolge): Die ID eines vordefinierten Skripts aus der Wissensdatenbank des Servers. Verwenden Sie das Toolget_scripting_tips
, um verfügbare Skript-IDs und deren Funktionen zu ermitteln.
Sprachspezifikation:
language
(Aufzählung: „Applescript“ | „Javascript“, optional): Geben Sie die Sprache an.- Bei Verwendung von
kbScriptId
wird die Sprache aus dem Wissensdatenbankskript abgeleitet. - Wenn die Verwendung von
scriptContent
oderscriptPath
undlanguage
weggelassen wird, wird standardmäßig „Applescript“ verwendet.
- Bei Verwendung von
Übergeben von Eingaben an Skripte:
arguments
(Array von Zeichenfolgen, optional):- Für
scriptPath
: Wird als Standardargument an den Skript-Handleron run argv
(AppleScript) oderrun(argv)
(JXA) übergeben. - Für
kbScriptId
: Wird verwendet, wenn das vordefinierte Skript positionelle String-Argumente akzeptiert (z. B. Platzhalter wie--MCP_ARG_1
,--MCP_ARG_2
ersetzt). Überprüfen Sie denargumentsPrompt
des Skripts inget_scripting_tips
.
- Für
inputData
(JSON-Objekt, optional):- In erster Linie für
kbScriptId
-Skripte, die benannte, strukturierte Eingaben akzeptieren. - Werte aus diesem Objekt ersetzen Platzhalter im Skript (z. B.
--MCP_INPUT:yourKeyName
). SieheargumentsPrompt
vonget_scripting_tips
. - Werte (Zeichenfolgen, Zahlen, Boolesche Werte, einfache Arrays/Objekte) werden in ihre AppleScript-Literaläquivalente konvertiert.
- In erster Linie für
Weitere Optionen:
timeoutSeconds
(Ganzzahl, optional, Standard: 30): Maximale Ausführungszeit.useScriptFriendlyOutput
(boolesch, optional, Standard: false): Verwendetosascript -ss
-Flag für eine potenziell strukturiertere Ausgabe, insbesondere für Listen und Datensätze.includeExecutedScriptInOutput
(Boolesch, optional, Standard: false): Wenn „true“, enthält die Ausgabe den vollständigen Skriptinhalt (nach etwaigen Platzhalterersetzungen für Wissensdatenbankskripte) oder den ausgeführten Skriptpfad. Dieser wird als zusätzlicher Textteil an das Ausgabeinhaltsarray angehängt.includeSubstitutionLogs
(Boolesch, optional, Standard: false): Wenn „true“, werden detaillierte Protokolle der in Wissensdatenbankskripten durchgeführten Platzhalterersetzungen in die Ausgabe aufgenommen. Dies ist nützlich, um die Verarbeitung und EinfügunginputData
undarguments
in das Skript zu debuggen. Die Protokolle werden bei Erfolg der Skriptausgabe vorangestellt oder bei einem Fehler an die Fehlermeldung angehängt.
SICHERHEITSWARNUNG UND MACOS-BERECHTIGUNGEN: (Dieselben kritischen Warnungen wie zuvor zur willkürlichen Skriptausführung und zu den Berechtigungen für die Automatisierung/Zugänglichkeit von macOS).
Beispiele:
- (Vorhandene Beispiele für Inline-/Dateipfade bleiben relevant)
- Verwenden des Knowledge Base-Skripts nach ID:Copy
- Verwenden des Knowledge Base-Skripts nach ID mit
inputData
:Copy
2. get_scripting_tips
Ruft AppleScript/JXA-Tipps, Beispiele und Details zu ausführbaren Skripten aus der Wissensdatenbank des Servers ab. Nützlich, um verfügbare Skripte, ihre Funktionen und ihre Verwendung mit execute_script
(insbesondere kbScriptId
) zu entdecken.
Argumente:
listCategories
(Boolesch, optional, Standard: false): Wenn „true“, wird nur die Liste der verfügbaren Wissensdatenbankkategorien und deren Beschreibungen zurückgegeben. Überschreibt andere Parameter.category
(Zeichenfolge, optional): Filtert Tipps nach einer bestimmten Kategorie-ID (z. B. „Finder“, „Safari“).searchTerm
(Zeichenfolge, optional): Sucht nach einem Schlüsselwort in Tipptiteln, Beschreibungen, Skriptinhalten, Schlüsselwörtern oder IDs.refreshDatabase
(Boolesch, optional, Standard: false): Wenn „true“, wird vor der Verarbeitung der Anfrage ein Neuladen der gesamten Wissensdatenbank von der Festplatte erzwungen. Dies ist während der Entwicklung nützlich, wenn Sie Wissensdatenbankdateien aktiv ändern und sicherstellen möchten, dass die neuesten Versionen verwendet werden, ohne den Server neu zu starten.
Ausgabe:
- Gibt eine in Markdown formatierte Zeichenfolge zurück, die die angeforderten Tipps enthält, einschließlich Titel, Beschreibung, Skriptinhalt, Sprache, ausführbarer ID (falls zutreffend), Argumentaufforderungen und Hinweisen.
Anwendungsbeispiel:
- Alle Kategorien auflisten:
{ "toolName": "get_scripting_tips", "input": { "listCategories": true } }
- Holen Sie sich Tipps für die Kategorie „Safari“:
{ "toolName": "get_scripting_tips", "input": { "category": "safari" } }
- Suche nach Tipps zum Thema "Zwischenablage":
{ "toolName": "get_scripting_tips", "input": { "searchTerm": "clipboard" } }
Wichtige Anwendungsfälle und Beispiele
- Anwendungskontrolle:
- Holen Sie sich die aktuelle URL von Safari:
{ "scriptContent": "tell application \"Safari\" to get URL of front document" }
- Betreff ungelesener E-Mails in Mail abrufen:
{ "scriptContent": "tell application \"Mail\" to get subject of messages of inbox whose read status is false" }
- Holen Sie sich die aktuelle URL von Safari:
- Dateisystemoperationen:
- Dateien auf dem Desktop auflisten:
{ "scriptContent": "tell application \"Finder\" to get name of every item of desktop" }
- Einen neuen Ordner erstellen:
{ "scriptContent": "tell application \"Finder\" to make new folder at desktop with properties {name:\"My New Folder\"}" }
- Dateien auf dem Desktop auflisten:
- Systeminteraktionen:
- Zeigen Sie eine Systembenachrichtigung an:
{ "scriptContent": "display notification \"Important Update!\" with title \"System Alert\"" }
- Systemlautstärke einstellen:
{ "scriptContent": "set volume output volume 50" }
(0-100) - Aktuellen Inhalt der Zwischenablage abrufen:
{ "scriptContent": "the clipboard" }
- Zeigen Sie eine Systembenachrichtigung an:
Fehlerbehebung
- Berechtigungsfehler: Wenn Skripte keine Apps steuern oder UI-Aktionen ausführen können, überprüfen Sie die Automatisierungs- und Zugriffsberechtigungen in den Systemeinstellungen für die Anwendung, die den MCP-Server ausführt (z. B. Terminal).
- Skriptsyntaxfehler:
osascript
Fehler werden in derstderr
oder in einer Fehlermeldung zurückgegeben. Testen Sie komplexe Skripte zunächst lokal mit dem Skripteditor (für AppleScript) oder einem JXA-Runner. - Timeouts: Wenn ein Skript länger als
timeoutSeconds
(Standard: 30 Sekunden) dauert, wird es beendet. Erhöhen Sie das Timeout für Skripte mit langer Laufzeit. - Datei nicht gefunden: Stellen Sie sicher, dass
scriptPath
ein absoluter POSIX-Pfad ist, auf den der Benutzer, der den MCP-Server ausführt, zugreifen kann. - Falsche Ausgabe: Experimentieren Sie mit
useScriptFriendlyOutput: true
, wenn die standardmäßige, für Menschen lesbare Ausgabe nicht zum Parsen geeignet ist (insbesondere für Listen oder Datensätze).
Konfiguration über Umgebungsvariablen
LOG_LEVEL
: Legen Sie die Protokollierungsebene für den Server fest.- Werte:
DEBUG
,INFO
,WARN
,ERROR
- Beispiel:
LOG_LEVEL=DEBUG npx @steipete/macos-automator-mcp@latest
- Werte:
KB_PARSING
: Steuert, wann die Wissensdatenbank (Skripttipps) analysiert wird.- Werte:
lazy
(Standard): Die Wissensdatenbank wird bei der ersten Anfrage anget_scripting_tips
oder bei Verwendung einerkbScriptId
inexecute_script
analysiert. Dies ermöglicht einen schnelleren Serverstart.eager
: Die Wissensdatenbank wird beim Serverstart analysiert. Dies kann die Startzeit etwas verlängern, stellt aber sicher, dass die Wissensdatenbank sofort verfügbar ist und etwaige Analysefehler frühzeitig erkannt werden.
- Beispiel (bei Ausführung über
start.sh
oder ähnliches):Copy - Beispiel (bei der Konfiguration über einen MCP-Runner, der
env
unterstützt, wie z. B.mcp-agentify
):Copy
- Werte:
Für Entwickler
Ausführliche Anweisungen zur lokalen Entwicklung, zur Projektstruktur (einschließlich der knowledge_base
) und zu Beitragsrichtlinien finden Sie unter DEVELOPMENT.md .
Entwicklung
Einzelheiten zur Projektstruktur, zum Erstellen und Testen finden Sie in DEVELOPMENT.md .
Lokale Wissensdatenbank
Sie können die integrierte Wissensdatenbank mit Ihren eigenen lokalen Tipps und freigegebenen Handlern ergänzen. Erstellen Sie eine Verzeichnisstruktur, die mit der knowledge_base
in diesem Repository (oder einer Teilmenge davon) identisch ist.
Standardmäßig sucht die Anwendung unter ~/.macos-automator/knowledge_base
nach dieser lokalen Wissensdatenbank. Sie können diesen Pfad anpassen, indem Sie die Umgebungsvariable LOCAL_KB_PATH
festlegen.
Beispiel:
Angenommen, Sie haben eine lokale Wissensdatenbank unter /Users/yourname/my-custom-kb
. Legen Sie die Umgebungsvariable fest: export LOCAL_KB_PATH=/Users/yourname/my-custom-kb
Oder, wenn Sie das Validierungsskript ausführen, können Sie das Argument --local-kb-path
verwenden: npm run validate:kb -- --local-kb-path /Users/yourname/my-custom-kb
Struktur und Überschreibungen:
- Ihre lokale Wissensdatenbank sollte die Kategoriestruktur der
knowledge_base
widerspiegeln (z. B.01_applescript_core
,05_web_browsers/safari
usw.). - Sie können neue
.md
Tippdateien oder_shared_handlers
(z. B..applescript
oder.js
Dateien) hinzufügen. - Wenn eine Tipp-ID (entweder aus der Frontmatter
id:
oder aus dem Dateinamen/Pfad generiert) in Ihrer lokalen Wissensdatenbank mit einer ID in der eingebetteten Wissensdatenbank übereinstimmt, überschreibt Ihre lokale Version die eingebettete. - In ähnlicher Weise überschreiben gemeinsam genutzte Handler mit demselben Namen und derselben Sprache (z. B.
my_utility.applescript
) in Ihrem lokalen_shared_handlers
Verzeichnis alle eingebetteten Handler mit demselben Namen und derselben Sprache innerhalb derselben Kategorie (oder global, wenn Sie sie im Stammverzeichnis der_shared_handlers
Ihrer lokalen KB platzieren). - Kategoriebeschreibungen aus
_category_info.md
in Ihrer lokalen KB können auch diejenigen aus der eingebetteten KB für dieselbe Kategorie überschreiben.
Dies ermöglicht die Personalisierung und Erweiterung der verfügbaren Automatisierungsskripte und Tipps, ohne die Kernanwendungsdateien zu ändern.
Beitragen
Beiträge sind willkommen! Bitte senden Sie Probleme und Pull Requests an das GitHub-Repository .
Automatisierungsfunktionen
Dieser Server bietet leistungsstarke macOS-Automatisierungsfunktionen über AppleScript und JavaScript for Automation (JXA). Hier sind einige der nützlichsten Beispiele:
Terminalautomatisierung
- Führen Sie Befehle in neuen Terminal-Registerkarten aus:Copy
- Führen Sie Befehle mit sudo aus und geben Sie das Passwort sicher ein
- Erfassen Sie die Befehlsausgabe zur Verarbeitung
Browsersteuerung
- Chrome/Safari-Automatisierung:CopyCopy
- Führen Sie JavaScript im Browserkontext aus:Copy
- Seiteninhalte extrahieren, Formulare bearbeiten und Workflows automatisieren
- Screenshots von Webseiten machen
Systeminteraktion
- Systemeinstellungen umschalten (Dunkelmodus, Lautstärke, Netzwerk):Copy
- Inhalt der Zwischenablage abrufen/festlegen:Copy
- Öffnen/Steuern von Systemdialogen und Warnungen
- Erstellen und Verwalten von Systembenachrichtigungen
Dateioperationen
- Dateien/Ordner erstellen, verschieben und bearbeiten:Copy
- Textdateien lesen und schreiben:Copy
- Auflisten und Filtern von Dateien in Verzeichnissen
- Abrufen von Dateimetadaten und -eigenschaften
Anwendungsintegration
- Kalender-/Erinnerungsverwaltung:Copy
- E-Mail-Automatisierung mit Mail.app:Copy
- Musikwiedergabe steuern:Copy
- Arbeiten Sie mit kreativen Apps (Keynote, Pages, Numbers)
Verwenden Sie das Tool get_scripting_tips
, um alle verfügbaren Automatisierungsfunktionen nach Kategorien geordnet zu erkunden.
Lizenz
Dieses Projekt ist unter der MIT-Lizenz lizenziert. Weitere Informationen finden Sie in der Datei LICENSE .
You must be authenticated.
local-only server
The server can only run on the client's local machine because it depends on local resources.
Bietet einen Model Context Protocol-Server zum Ausführen von AppleScript und JavaScript für Automatisierungsskripte auf macOS, verfügt über eine Wissensdatenbank mit vordefinierten Skripten und unterstützt die Automatisierung von macOS-Anwendungen und Systemfunktionen.
- Überblick
- Vorteile
- Voraussetzungen
- Installation und Verwendung
- Mitgelieferte Werkzeuge
- Wichtige Anwendungsfälle und Beispiele
- Fehlerbehebung
- Konfiguration über Umgebungsvariablen
- Für Entwickler
- Entwicklung
- Lokale Wissensdatenbank
- Beitragen
- Automatisierungsfunktionen
- Lizenz
Related Resources
Related MCP Servers
- -securityAlicense-qualityAn unofficial JavaScript SDK to create customized servers for the Model Context Protocol, allowing definition of prompts, resources, and tools for tailored interactions.Last updated -62JavaScriptApache 2.0
- -securityFlicense-qualityA Model Context Protocol server that allows management and execution of Blender Python scripts, enabling users to create, edit and run scripts in a headless Blender environment through natural language interfaces.Last updated -4Python
- -securityAlicense-qualityA TypeScript implementation of a Model Context Protocol server that provides a frictionless framework for developers to build and deploy AI tools and prompts, focusing on developer experience with zero boilerplate and automatic tool registration.Last updated -6TypeScriptMIT License
- -securityFlicense-qualityA TypeScript framework for building Model Context Protocol (MCP) servers with automatic discovery and loading of tools, resources, and prompts.Last updated -67TypeScript