applescript-mcp MCP サーバー
LLMアプリケーションがAppleScriptを介してmacOSと連携できるようにするモデルコンテキストプロトコル(CMP)サーバー。このサーバーは、AIアプリケーションがシステム機能の制御、ファイルの管理、通知の処理などを行うための標準化されたインターフェースを提供します。

特徴
🗓️ カレンダー管理(イベント、リマインダー)
📋 クリップボード操作
🔍 Finder との統合
🔔 システム通知
⚙️ システムコントロール(音量、ダークモード、アプリ)
📟 iTerm ターミナル統合
📬 メール(新しいメールの作成、メールの一覧表示、メールの取得)
🔄ショートカットの自動化
💬 メッセージ(チャットの一覧表示、メッセージの取得、メッセージの検索、メッセージの送信)
🗒️ メモ(フォーマットされたメモの作成、メモの一覧表示、メモの検索)
📄 Pages(ドキュメントの作成)
計画されている機能
Related MCP server: MCP-AppleMusic
前提条件
macOS 10.15以降
Node.js 18以降
利用可能なカテゴリ
カレンダー
指示 | 説明 | パラメータ |
add
| カレンダーイベントを作成 | title
、 startDate
、 endDate
、 calendar
(オプション) |
list
| 今日のイベントを一覧表示する | なし |
例
// 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?
クリップボード
指示 | 説明 | パラメータ |
set_clipboard
| クリップボードにコピー | content
|
get_clipboard
| クリップボードの内容を取得する | なし |
clear_clipboard
| クリップボードをクリア | なし |
例
// 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
ファインダ
指示 | 説明 | パラメータ |
get_selected_files
| 選択したファイルを取得する | なし |
search_files
| ファイルを検索する | query
、 location
(オプション) |
quick_look
| プレビューファイル | path
|
例
// 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
通知
注意: 通知を送信するには、システム設定 > 通知 > スクリプト エディターで通知を有効にする必要があります。
指示 | 説明 | パラメータ |
send_notification
| 通知を表示 | title
、 message
、 sound
(オプション) |
toggle_do_not_disturb
| DNDモードを切り替える | なし |
例
// 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
システム
指示 | 説明 | パラメータ |
volume
| システム音量を設定する | level
(0~100) |
get_frontmost_app
| アクティブアプリを入手 | なし |
launch_app
| アプリケーションを開く | name
|
quit_app
| 応募を締め切る | name
、 force
(オプション) |
toggle_dark_mode
| ダークモードを切り替える | なし |
例
// 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
指示 | 説明 | パラメータ |
paste_clipboard
| iTermに貼り付け | なし |
run
| コマンドを実行 | command
、 newWindow
(オプション) |
例
// 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
ショートカット
指示 | 説明 | パラメータ |
run_shortcut
| ショートカットを実行する | name
、 input
(オプション) |
list_shortcuts
| 利用可能なショートカットをすべて一覧表示する | limit
(オプション) |
例
// 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"
郵便
指示 | 説明 | パラメータ |
create_email
| Mail.appで新しいメールを作成する | recipient
、 subject
、 body
|
list_emails
| メールボックスからメールを一覧表示する | mailbox
(オプション)、 count
(オプション)、 unreadOnly
(オプション) |
get_email
| 検索で特定のメールを取得する | subject
(オプション)、 sender
(オプション)、 dateReceived
(オプション)、 mailbox
(オプション)、 account
(オプション)、 unreadOnly
(オプション)、 includeBody
(オプション) |
例
// 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"
メッセージ
指示 | 説明 | パラメータ |
list_chats
| 利用可能なiMessageとSMSチャットを一覧表示する | includeParticipantDetails
(オプション、デフォルト: false) |
get_messages
| メッセージアプリからメッセージを受け取る | limit
(オプション、デフォルト: 100) |
search_messages
| 特定のテキストを含むメッセージを検索する | searchText
、 sender
(オプション)、 chatId
(オプション)、 limit
(オプション、デフォルト:50)、 daysBack
(オプション、デフォルト:30) |
compose_message
| 事前に入力されたメッセージまたは自動送信でメッセージアプリを開きます | recipient
(必須)、 body
(オプション)、 auto
(オプション、デフォルト:false) |
例
// 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"
注記
指示 | 説明 | パラメータ |
create
| マークダウンのようなフォーマットでメモを作成する | title
、 content
、 format
(書式設定オプションはオプション) |
createRawHtml
| 直接HTMLコンテンツを含むメモを作成する | title
、 html
|
list
| オプションで特定のフォルダからメモを一覧表示します | folder
(オプション) |
get
| タイトルで特定のメモを取得する | title
、 folder
(オプション) |
search
| 特定のテキストを含むメモを検索する | query
、 folder
(オプション)、 limit
(オプション、デフォルト:5)、 includeBody
(オプション、デフォルト:true) |
例
// 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
ページ
指示 | 説明 | パラメータ |
create_document
| プレーンテキストで新しいPages文書を作成する | content
|
例
// 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."
建築
applescript-mcp サーバーは TypeScript を使用して構築されており、モジュール アーキテクチャに従います。
コアコンポーネント
AppleScriptFramework ( framework.ts ): 次の機能を果たすメイン サーバー クラス:
MCPプロトコル通信を管理する
ツールの登録と実行を処理する
ログ機能を提供する
AppleScriptコマンドを実行する
カテゴリ( src/categories/*.ts ): 機能別に整理されたモジュール式のスクリプト コレクション:
型( src/types/index.ts ): 以下を定義する TypeScript インターフェース:
ScriptDefinition : 個々のスクリプトの構造
ScriptCategory : 関連スクリプトのコレクション
LogLevel : 標準のログレベル
FrameworkOptions : 構成オプション
実行フロー
クライアントはMCPプロトコル経由でツール要求を送信します
サーバーは適切なカテゴリとスクリプトを識別します
スクリプトコンテンツが生成される(静的または関数を介して動的)
AppleScriptはmacOSのosascriptコマンドを介して実行されます
結果がクライアントに返されます
ログシステム
このフレームワークには、次のような包括的なログ システムが含まれています。
stderr と MCP ログプロトコルの両方にログを記録します。
複数の重大度レベル (デバッグ、情報、警告、エラーなど) をサポートします
トラブルシューティングのための詳細な実行情報を提供します
発達
設定
# 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...
新しい機能の追加
1. カテゴリファイルを作成する
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. スクリプトを追加する
{
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. 登録カテゴリー
src/index.tsを更新します:
import { newCategory } from "./categories/newcategory.js";
// ...
server.addCategory(newCategory);
高度なスクリプト開発
より複雑なスクリプトの場合は、次のことが可能です。
動的スクリプト生成を使用する:
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;
}
複雑なデータの処理:
// 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;
}
デバッグ
MCPインスペクターの使用
MCP Inspector は、サーバーのテストとデバッグのための Web インターフェイスを提供します。
ログ記録
環境変数を設定してデバッグ ログを有効にします。
DEBUG=applescript-mcp* npm start
構成例
npm run buildを実行した後、 mcp.jsonファイルに以下を追加します。
{
"mcpServers": {
"applescript-mcp-server": {
"command": "node",
"args": ["/path/to/applescript-mcp/dist/index.js"]
}
}
}
よくある問題
権限エラー: システム環境設定 > セキュリティとプライバシー > プライバシー > オートメーションを確認してください
スクリプトの失敗: 統合前にスクリプトエディタアプリで直接スクリプトをテストする
通信の問題: stdio ストリームがリダイレクトされていないか確認してください
データベースアクセス: 一部の機能(メッセージなど)にはフルディスクアクセス権限が必要です
リソース
貢献
リポジトリをフォークする
機能ブランチを作成する
変更をコミットする
ブランチにプッシュする
プルリクエストを作成する
ライセンス
MITライセンス - 詳細はライセンスを参照