@heznpc/imcp 0.1.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.ko.md +218 -57
- package/README.md +215 -30
- package/dist/calendar/prompts.d.ts +2 -0
- package/dist/calendar/prompts.js +43 -0
- package/dist/calendar/prompts.js.map +1 -0
- package/dist/calendar/scripts.d.ts +20 -0
- package/dist/calendar/scripts.js +283 -0
- package/dist/calendar/scripts.js.map +1 -0
- package/dist/calendar/tools.d.ts +3 -0
- package/dist/calendar/tools.js +210 -0
- package/dist/calendar/tools.js.map +1 -0
- package/dist/contacts/scripts.d.ts +22 -0
- package/dist/contacts/scripts.js +192 -0
- package/dist/contacts/scripts.js.map +1 -0
- package/dist/contacts/tools.d.ts +3 -0
- package/dist/contacts/tools.js +173 -0
- package/dist/contacts/tools.js.map +1 -0
- package/dist/cross/prompts.d.ts +2 -0
- package/dist/cross/prompts.js +177 -0
- package/dist/cross/prompts.js.map +1 -0
- package/dist/finder/scripts.d.ts +8 -0
- package/dist/finder/scripts.js +127 -0
- package/dist/finder/scripts.js.map +1 -0
- package/dist/finder/tools.d.ts +3 -0
- package/dist/finder/tools.js +134 -0
- package/dist/finder/tools.js.map +1 -0
- package/dist/index.js +35 -1
- package/dist/index.js.map +1 -1
- package/dist/intelligence/tools.d.ts +3 -0
- package/dist/intelligence/tools.js +74 -0
- package/dist/intelligence/tools.js.map +1 -0
- package/dist/mail/scripts.d.ts +9 -0
- package/dist/mail/scripts.js +214 -0
- package/dist/mail/scripts.js.map +1 -0
- package/dist/mail/tools.d.ts +3 -0
- package/dist/mail/tools.js +144 -0
- package/dist/mail/tools.js.map +1 -0
- package/dist/music/scripts.d.ts +9 -0
- package/dist/music/scripts.js +180 -0
- package/dist/music/scripts.js.map +1 -0
- package/dist/music/tools.d.ts +3 -0
- package/dist/music/tools.js +143 -0
- package/dist/music/tools.js.map +1 -0
- package/dist/notes/prompts.js +1 -6
- package/dist/notes/prompts.js.map +1 -1
- package/dist/notes/scripts.js +1 -11
- package/dist/notes/scripts.js.map +1 -1
- package/dist/notes/tools.js +1 -11
- package/dist/notes/tools.js.map +1 -1
- package/dist/photos/scripts.d.ts +7 -0
- package/dist/photos/scripts.js +142 -0
- package/dist/photos/scripts.js.map +1 -0
- package/dist/photos/tools.d.ts +3 -0
- package/dist/photos/tools.js +114 -0
- package/dist/photos/tools.js.map +1 -0
- package/dist/reminders/prompts.d.ts +2 -0
- package/dist/reminders/prompts.js +40 -0
- package/dist/reminders/prompts.js.map +1 -0
- package/dist/reminders/scripts.d.ts +21 -0
- package/dist/reminders/scripts.js +202 -0
- package/dist/reminders/scripts.js.map +1 -0
- package/dist/reminders/tools.d.ts +3 -0
- package/dist/reminders/tools.js +227 -0
- package/dist/reminders/tools.js.map +1 -0
- package/dist/safari/scripts.d.ts +8 -0
- package/dist/safari/scripts.js +120 -0
- package/dist/safari/scripts.js.map +1 -0
- package/dist/safari/tools.d.ts +3 -0
- package/dist/safari/tools.js +129 -0
- package/dist/safari/tools.js.map +1 -0
- package/dist/shared/esc.d.ts +10 -0
- package/dist/shared/esc.js +35 -0
- package/dist/shared/esc.js.map +1 -0
- package/dist/shared/jxa.js +1 -1
- package/dist/shared/jxa.js.map +1 -1
- package/dist/shared/prompt.d.ts +11 -0
- package/dist/shared/prompt.js +8 -0
- package/dist/shared/prompt.js.map +1 -0
- package/dist/shared/resources.d.ts +5 -0
- package/dist/shared/resources.js +81 -0
- package/dist/shared/resources.js.map +1 -0
- package/dist/shared/result.d.ts +15 -0
- package/dist/shared/result.js +14 -0
- package/dist/shared/result.js.map +1 -0
- package/dist/shared/swift.d.ts +2 -0
- package/dist/shared/swift.js +73 -0
- package/dist/shared/swift.js.map +1 -0
- package/dist/shortcuts/scripts.d.ts +4 -0
- package/dist/shortcuts/scripts.js +47 -0
- package/dist/shortcuts/scripts.js.map +1 -0
- package/dist/shortcuts/tools.d.ts +3 -0
- package/dist/shortcuts/tools.js +66 -0
- package/dist/shortcuts/tools.js.map +1 -0
- package/dist/system/scripts.d.ts +9 -0
- package/dist/system/scripts.js +124 -0
- package/dist/system/scripts.js.map +1 -0
- package/dist/system/tools.d.ts +3 -0
- package/dist/system/tools.js +179 -0
- package/dist/system/tools.js.map +1 -0
- package/package.json +39 -5
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 heznpc
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.ko.md
CHANGED
|
@@ -1,41 +1,19 @@
|
|
|
1
1
|
# iMcp
|
|
2
2
|
|
|
3
|
-
Apple
|
|
3
|
+
Apple 생태계 전체를 위한 MCP 서버 — Notes, Reminders, Calendar, Contacts, Mail, Music, Finder, Safari, System, Photos, Shortcuts, Apple Intelligence. AI를 Mac에 연결합니다.
|
|
4
4
|
|
|
5
5
|
> [English](README.md)
|
|
6
6
|
|
|
7
7
|
## 특징
|
|
8
8
|
|
|
9
|
-
- **
|
|
10
|
-
- **
|
|
11
|
-
- **
|
|
9
|
+
- **98개 도구** (12개 모듈) — Apple 앱 CRUD + 시스템 제어 + Apple Intelligence
|
|
10
|
+
- **14개 프롬프트** — 앱별 워크플로우 + 크로스 모듈 (데일리 브리핑, 주간 다이제스트, 리서치, 집중 세션)
|
|
11
|
+
- **4개 MCP 리소스** — Notes, Calendar, Reminders 실시간 데이터 URI
|
|
12
|
+
- **JXA 기반** — JavaScript for Automation으로 Apple 앱 직접 제어
|
|
13
|
+
- **Apple Intelligence** — 온디바이스 요약, 재작성, 교정 (macOS 26+)
|
|
12
14
|
- **stdio 전송** — 안전한 로컬 통신, 네트워크 노출 없음
|
|
13
15
|
- **Safety Annotations** — 모든 도구에 readOnly/destructive 힌트 적용
|
|
14
16
|
|
|
15
|
-
## 유사 프로젝트 비교
|
|
16
|
-
|
|
17
|
-
| | **iMcp** | **apple-mcp** | **iMCP** | **mcp-apple-notes** |
|
|
18
|
-
|---|---|---|---|---|
|
|
19
|
-
| 개발자 | heznpc | supermemoryai | loopwork-ai | RafalWilinski |
|
|
20
|
-
| 상태 | **활성** | 아카이브 | 활성 | 저활성 |
|
|
21
|
-
| 언어 | TypeScript | TypeScript | Swift | TypeScript |
|
|
22
|
-
| 대상 앱 | Notes | Notes 등 7개 앱 | Calendar 등 10개 서비스 (Notes 미지원) | Notes |
|
|
23
|
-
| Notes CRUD | **전체 (생성/읽기/수정/삭제/이동)** | 일부 | 없음 | 읽기 + 생성만 |
|
|
24
|
-
| 도구 수 | 12 | 7 (앱당 1개 + enum) | 28 | 5 |
|
|
25
|
-
| 일괄 작업 | scan / compare / bulk_move | 없음 | 없음 | 없음 |
|
|
26
|
-
| 프롬프트 | 3개 (정리, 중복, 리뷰) | 없음 | 없음 | 없음 |
|
|
27
|
-
| Safety Annotations | 전체 적용 | 없음 | 없음 | 없음 |
|
|
28
|
-
| 전송 방식 | stdio | stdio | TCP/Bonjour | stdio |
|
|
29
|
-
| 설치 | `npx @heznpc/imcp` | `bunx apple-mcp` | Homebrew cask / 앱 다운로드 | 수동 clone |
|
|
30
|
-
| 검색 | 키워드 검색 | 키워드 검색 | — | 벡터 + 전문 검색 (RAG) |
|
|
31
|
-
|
|
32
|
-
### 핵심 차이점
|
|
33
|
-
|
|
34
|
-
- **apple-mcp** (3K+ 스타) — 가장 인기 있었으나 2026년 1월 아카이브. 더 이상 유지보수되지 않음
|
|
35
|
-
- **iMCP** (loopwork-ai) — 네이티브 Swift 앱으로 가장 많은 서비스 지원. 그러나 **Notes를 지원하지 않고**, 대부분 읽기 전용이며, Bonjour로 네트워크 노출
|
|
36
|
-
- **mcp-apple-notes** — RAG/시맨틱 검색이 독특한 장점이나, 도구가 5개뿐이고 CRUD가 불완전하며 npm 미배포
|
|
37
|
-
- **iMcp** — Notes에 집중한 완전한 CRUD + 일괄 작업 + 가이드 프롬프트. `npx` 한 줄 실행, stdio로 보안 안전
|
|
38
|
-
|
|
39
17
|
## 빠른 시작
|
|
40
18
|
|
|
41
19
|
### Claude Desktop
|
|
@@ -68,63 +46,246 @@ npm install
|
|
|
68
46
|
npm run build
|
|
69
47
|
```
|
|
70
48
|
|
|
71
|
-
이후 MCP 클라이언트에서 `node dist/index.js`를 실행합니다.
|
|
72
|
-
|
|
73
49
|
## 도구
|
|
74
50
|
|
|
75
|
-
###
|
|
51
|
+
### Notes (12개)
|
|
52
|
+
|
|
53
|
+
| 도구 | 설명 | 타입 |
|
|
54
|
+
|------|------|------|
|
|
55
|
+
| `list_notes` | 메모 목록 (제목, 폴더, 날짜) | 읽기 |
|
|
56
|
+
| `search_notes` | 키워드 검색 | 읽기 |
|
|
57
|
+
| `read_note` | 전체 내용 조회 | 읽기 |
|
|
58
|
+
| `create_note` | HTML 본문으로 생성 | 쓰기 |
|
|
59
|
+
| `update_note` | 본문 전체 교체 | 파괴적 |
|
|
60
|
+
| `delete_note` | 삭제 (최근 삭제로 이동) | 파괴적 |
|
|
61
|
+
| `move_note` | 다른 폴더로 이동 | 파괴적 |
|
|
62
|
+
| `list_folders` | 폴더 목록 | 읽기 |
|
|
63
|
+
| `create_folder` | 폴더 생성 | 쓰기 |
|
|
64
|
+
| `scan_notes` | 일괄 스캔 (미리보기 포함) | 읽기 |
|
|
65
|
+
| `compare_notes` | 2~5개 메모 비교 | 읽기 |
|
|
66
|
+
| `bulk_move_notes` | 여러 메모 일괄 이동 | 파괴적 |
|
|
67
|
+
|
|
68
|
+
### Reminders (10개)
|
|
69
|
+
|
|
70
|
+
| 도구 | 설명 | 타입 |
|
|
71
|
+
|------|------|------|
|
|
72
|
+
| `list_reminder_lists` | 리스트 목록 | 읽기 |
|
|
73
|
+
| `list_reminders` | 리마인더 조회 (필터) | 읽기 |
|
|
74
|
+
| `read_reminder` | 상세 조회 | 읽기 |
|
|
75
|
+
| `create_reminder` | 생성 (마감일/우선순위) | 쓰기 |
|
|
76
|
+
| `update_reminder` | 속성 변경 | 파괴적 |
|
|
77
|
+
| `complete_reminder` | 완료/미완료 처리 | 쓰기 |
|
|
78
|
+
| `delete_reminder` | 영구 삭제 | 파괴적 |
|
|
79
|
+
| `search_reminders` | 이름/본문 키워드 검색 | 읽기 |
|
|
80
|
+
| `create_reminder_list` | 새 리스트 생성 | 쓰기 |
|
|
81
|
+
| `delete_reminder_list` | 리스트 삭제 | 파괴적 |
|
|
82
|
+
|
|
83
|
+
### Calendar (9개)
|
|
84
|
+
|
|
85
|
+
| 도구 | 설명 | 타입 |
|
|
86
|
+
|------|------|------|
|
|
87
|
+
| `list_calendars` | 캘린더 목록 | 읽기 |
|
|
88
|
+
| `list_events` | 날짜 범위 이벤트 조회 | 읽기 |
|
|
89
|
+
| `read_event` | 이벤트 상세 (참석자 포함) | 읽기 |
|
|
90
|
+
| `create_event` | 이벤트 생성 | 쓰기 |
|
|
91
|
+
| `update_event` | 이벤트 수정 | 파괴적 |
|
|
92
|
+
| `delete_event` | 이벤트 삭제 | 파괴적 |
|
|
93
|
+
| `search_events` | 키워드 검색 | 읽기 |
|
|
94
|
+
| `get_upcoming_events` | 지금부터 다음 N개 이벤트 | 읽기 |
|
|
95
|
+
| `today_events` | 오늘 일정 전체 | 읽기 |
|
|
96
|
+
|
|
97
|
+
### Contacts (10개)
|
|
98
|
+
|
|
99
|
+
| 도구 | 설명 | 타입 |
|
|
100
|
+
|------|------|------|
|
|
101
|
+
| `list_contacts` | 연락처 목록 (페이지네이션) | 읽기 |
|
|
102
|
+
| `search_contacts` | 이름으로 검색 | 읽기 |
|
|
103
|
+
| `read_contact` | 상세 조회 (이메일, 전화, 주소) | 읽기 |
|
|
104
|
+
| `create_contact` | 연락처 생성 | 쓰기 |
|
|
105
|
+
| `update_contact` | 속성 변경 | 파괴적 |
|
|
106
|
+
| `delete_contact` | 영구 삭제 | 파괴적 |
|
|
107
|
+
| `list_groups` | 그룹 목록 | 읽기 |
|
|
108
|
+
| `add_contact_email` | 기존 연락처에 이메일 추가 | 쓰기 |
|
|
109
|
+
| `add_contact_phone` | 기존 연락처에 전화번호 추가 | 쓰기 |
|
|
110
|
+
| `list_group_members` | 그룹 내 연락처 목록 | 읽기 |
|
|
111
|
+
|
|
112
|
+
### Mail (9개)
|
|
76
113
|
|
|
77
114
|
| 도구 | 설명 | 타입 |
|
|
78
115
|
|------|------|------|
|
|
79
|
-
| `
|
|
80
|
-
| `
|
|
81
|
-
| `
|
|
82
|
-
| `
|
|
83
|
-
| `
|
|
84
|
-
| `
|
|
85
|
-
| `
|
|
116
|
+
| `list_mailboxes` | 메일함 목록 (미읽음 수) | 읽기 |
|
|
117
|
+
| `list_messages` | 메일함 내 메시지 목록 | 읽기 |
|
|
118
|
+
| `read_message` | 메시지 전체 내용 | 읽기 |
|
|
119
|
+
| `search_messages` | 제목/발신자 검색 | 읽기 |
|
|
120
|
+
| `mark_message_read` | 읽음/안읽음 처리 | 쓰기 |
|
|
121
|
+
| `flag_message` | 깃발 표시/해제 | 쓰기 |
|
|
122
|
+
| `get_unread_count` | 전체 메일함 미읽음 수 | 읽기 |
|
|
123
|
+
| `move_message` | 다른 메일함으로 이동 | 파괴적 |
|
|
124
|
+
| `list_accounts` | 메일 계정 목록 | 읽기 |
|
|
125
|
+
|
|
126
|
+
### Music (9개)
|
|
86
127
|
|
|
87
|
-
|
|
128
|
+
| 도구 | 설명 | 타입 |
|
|
129
|
+
|------|------|------|
|
|
130
|
+
| `list_playlists` | 재생목록 목록 | 읽기 |
|
|
131
|
+
| `list_tracks` | 재생목록 내 트랙 | 읽기 |
|
|
132
|
+
| `now_playing` | 현재 재생 중인 트랙 | 읽기 |
|
|
133
|
+
| `playback_control` | 재생/일시정지/다음/이전 | 쓰기 |
|
|
134
|
+
| `search_tracks` | 이름/아티스트/앨범 검색 | 읽기 |
|
|
135
|
+
| `play_track` | 이름으로 특정 트랙 재생 | 쓰기 |
|
|
136
|
+
| `play_playlist` | 재생목록 재생 시작 | 쓰기 |
|
|
137
|
+
| `get_track_info` | 트랙 상세 메타데이터 | 읽기 |
|
|
138
|
+
| `set_shuffle` | 셔플/반복 모드 설정 | 쓰기 |
|
|
139
|
+
|
|
140
|
+
### Finder (8개)
|
|
88
141
|
|
|
89
142
|
| 도구 | 설명 | 타입 |
|
|
90
143
|
|------|------|------|
|
|
91
|
-
| `
|
|
144
|
+
| `search_files` | Spotlight 파일 검색 | 읽기 |
|
|
145
|
+
| `get_file_info` | 파일 정보 (크기, 날짜, 태그) | 읽기 |
|
|
146
|
+
| `set_file_tags` | Finder 태그 설정 | 파괴적 |
|
|
147
|
+
| `recent_files` | 최근 수정 파일 | 읽기 |
|
|
148
|
+
| `list_directory` | 디렉토리 내 파일 목록 | 읽기 |
|
|
149
|
+
| `move_file` | 파일 이동/이름 변경 | 파괴적 |
|
|
150
|
+
| `trash_file` | 휴지통으로 이동 | 파괴적 |
|
|
92
151
|
| `create_folder` | 새 폴더 생성 | 쓰기 |
|
|
93
152
|
|
|
94
|
-
###
|
|
153
|
+
### Safari (8개)
|
|
95
154
|
|
|
96
155
|
| 도구 | 설명 | 타입 |
|
|
97
156
|
|------|------|------|
|
|
98
|
-
| `
|
|
99
|
-
| `
|
|
100
|
-
| `
|
|
157
|
+
| `list_tabs` | 전체 윈도우의 탭 목록 | 읽기 |
|
|
158
|
+
| `read_page_content` | 페이지 텍스트 내용 읽기 | 읽기 |
|
|
159
|
+
| `get_current_tab` | 현재 활성 탭 URL/제목 | 읽기 |
|
|
160
|
+
| `open_url` | Safari에서 URL 열기 | 쓰기 |
|
|
161
|
+
| `close_tab` | 특정 탭 닫기 | 파괴적 |
|
|
162
|
+
| `activate_tab` | 특정 탭으로 전환 | 쓰기 |
|
|
163
|
+
| `run_javascript` | 탭에서 JavaScript 실행 | 쓰기 |
|
|
164
|
+
| `search_tabs` | 제목/URL로 탭 검색 | 읽기 |
|
|
101
165
|
|
|
102
|
-
|
|
166
|
+
### System (9개)
|
|
167
|
+
|
|
168
|
+
| 도구 | 설명 | 타입 |
|
|
169
|
+
|------|------|------|
|
|
170
|
+
| `get_clipboard` | 클립보드 내용 읽기 | 읽기 |
|
|
171
|
+
| `set_clipboard` | 클립보드에 쓰기 | 쓰기 |
|
|
172
|
+
| `get_volume` | 시스템 볼륨 확인 | 읽기 |
|
|
173
|
+
| `set_volume` | 시스템 볼륨 설정 | 쓰기 |
|
|
174
|
+
| `toggle_dark_mode` | 다크/라이트 모드 전환 | 쓰기 |
|
|
175
|
+
| `get_frontmost_app` | 최전면 앱 확인 | 읽기 |
|
|
176
|
+
| `list_running_apps` | 실행 중인 앱 목록 | 읽기 |
|
|
177
|
+
| `get_screen_info` | 디스플레이 정보 | 읽기 |
|
|
178
|
+
| `show_notification` | 시스템 알림 표시 | 쓰기 |
|
|
179
|
+
|
|
180
|
+
### Photos (7개)
|
|
181
|
+
|
|
182
|
+
| 도구 | 설명 | 타입 |
|
|
183
|
+
|------|------|------|
|
|
184
|
+
| `list_albums` | 앨범 목록 | 읽기 |
|
|
185
|
+
| `list_photos` | 앨범 내 사진 목록 | 읽기 |
|
|
186
|
+
| `search_photos` | 키워드로 사진 검색 | 읽기 |
|
|
187
|
+
| `get_photo_info` | 사진 상세 메타데이터 | 읽기 |
|
|
188
|
+
| `list_favorites` | 즐겨찾기 사진 목록 | 읽기 |
|
|
189
|
+
| `create_album` | 새 앨범 생성 | 쓰기 |
|
|
190
|
+
| `add_to_album` | 앨범에 사진 추가 | 쓰기 |
|
|
191
|
+
|
|
192
|
+
### Shortcuts (4개)
|
|
193
|
+
|
|
194
|
+
| 도구 | 설명 | 타입 |
|
|
195
|
+
|------|------|------|
|
|
196
|
+
| `list_shortcuts` | 사용 가능한 단축어 목록 | 읽기 |
|
|
197
|
+
| `run_shortcut` | 이름으로 단축어 실행 | 쓰기 |
|
|
198
|
+
| `search_shortcuts` | 이름으로 단축어 검색 | 읽기 |
|
|
199
|
+
| `get_shortcut_detail` | 단축어 상세 정보/액션 | 읽기 |
|
|
200
|
+
|
|
201
|
+
### Apple Intelligence (3개)
|
|
202
|
+
|
|
203
|
+
macOS 26+ Apple Silicon 필요.
|
|
204
|
+
|
|
205
|
+
| 도구 | 설명 | 타입 |
|
|
206
|
+
|------|------|------|
|
|
207
|
+
| `summarize_text` | 온디바이스 텍스트 요약 | 읽기 |
|
|
208
|
+
| `rewrite_text` | 톤 지정 재작성 | 읽기 |
|
|
209
|
+
| `proofread_text` | 문법/맞춤법 교정 | 읽기 |
|
|
210
|
+
|
|
211
|
+
## 리소스
|
|
103
212
|
|
|
104
|
-
|
|
213
|
+
MCP 리소스는 Apple 앱의 실시간 데이터를 URI로 제공합니다.
|
|
105
214
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
215
|
+
| URI | 설명 |
|
|
216
|
+
|-----|------|
|
|
217
|
+
| `notes://recent` | 최근 메모 10개 |
|
|
218
|
+
| `notes://recent/{count}` | 최근 메모 (개수 지정) |
|
|
219
|
+
| `calendar://today` | 오늘의 캘린더 이벤트 |
|
|
220
|
+
| `reminders://due` | 기한 지난 리마인더 |
|
|
221
|
+
|
|
222
|
+
## 프롬프트
|
|
223
|
+
|
|
224
|
+
### 앱별
|
|
225
|
+
- **organize-notes** — 메모 분류, 폴더 생성, 이동
|
|
226
|
+
- **find-duplicates** — 중복 메모 찾기, 비교, 정리
|
|
227
|
+
- **weekly-review** — 주간 메모 요약
|
|
228
|
+
- **organize-reminders** — 리마인더 정리
|
|
229
|
+
- **daily-review** — 오늘 마감 리마인더 리뷰
|
|
230
|
+
- **schedule-review** — 향후 일정 리뷰, 충돌 확인
|
|
231
|
+
- **meeting-prep** — 미팅 준비 (이벤트 + 관련 메모)
|
|
232
|
+
|
|
233
|
+
### 크로스 모듈
|
|
234
|
+
- **daily-briefing** — 오늘 일정 + 마감 리마인더 + 최근 메모 종합
|
|
235
|
+
- **weekly-digest** — N일간 이벤트 + 메모 + 리마인더 종합 리뷰
|
|
236
|
+
- **meeting-notes-to-reminders** — 미팅 메모에서 할 일 추출 → 리마인더 생성
|
|
237
|
+
- **event-follow-up** — 미팅 후 팔로업 노트 + 리마인더 생성
|
|
238
|
+
- **research-with-safari** — Safari로 조사 + Notes에 결과 저장
|
|
239
|
+
- **focus-session** — Calendar + Reminders + Music으로 집중 세션
|
|
240
|
+
- **file-organizer** — Finder로 파일 정리 + Notes에 기록
|
|
109
241
|
|
|
110
242
|
## 설정
|
|
111
243
|
|
|
112
244
|
| 환경 변수 | 기본값 | 설명 |
|
|
113
245
|
|----------|--------|------|
|
|
114
|
-
| `IMCP_INCLUDE_SHARED` | `false` | 공유
|
|
246
|
+
| `IMCP_INCLUDE_SHARED` | `false` | 공유 메모/폴더 포함 |
|
|
115
247
|
|
|
116
248
|
## 요구 사항
|
|
117
249
|
|
|
118
|
-
- macOS
|
|
250
|
+
- macOS
|
|
119
251
|
- Node.js >= 18
|
|
120
|
-
-
|
|
252
|
+
- 각 앱 자동화 권한 (첫 실행 시 요청)
|
|
253
|
+
- Apple Intelligence: macOS 26+ Apple Silicon
|
|
254
|
+
|
|
255
|
+
## 제한 사항
|
|
256
|
+
|
|
257
|
+
### Notes
|
|
258
|
+
- 이동 시 복사 후 삭제 (새 ID, 날짜 초기화, 첨부 파일 유실)
|
|
259
|
+
- 업데이트는 본문 전체를 교체합니다. 내용 보존을 위해 먼저 읽기
|
|
260
|
+
- 비밀번호 보호된 메모 읽기 불가
|
|
261
|
+
|
|
262
|
+
### Reminders / Calendar
|
|
263
|
+
- 반복 규칙은 읽기 전용 (자동화로 생성/수정 불가)
|
|
264
|
+
- 캘린더 참석자 읽기 전용
|
|
265
|
+
|
|
266
|
+
### Contacts
|
|
267
|
+
- 검색은 이름 필드만 매칭
|
|
268
|
+
- 사용자 지정 필드 접근 불가
|
|
269
|
+
|
|
270
|
+
### Mail
|
|
271
|
+
- 내용 5000자 제한
|
|
272
|
+
|
|
273
|
+
### Music
|
|
274
|
+
- 스마트 재생목록 읽기 전용
|
|
275
|
+
- 대기열 조작 불가
|
|
276
|
+
|
|
277
|
+
### Finder
|
|
278
|
+
- 태그는 Spotlight (mdfind) 사용, 인덱스 상태에 따라 성능 변동
|
|
279
|
+
|
|
280
|
+
### Safari
|
|
281
|
+
- 페이지 내용 읽기에는 Safari 개발자 메뉴에서 Apple 이벤트의 JavaScript 허용 필요
|
|
121
282
|
|
|
122
|
-
|
|
283
|
+
### Photos
|
|
284
|
+
- JXA로 가져오기/삭제 불가, 앨범 생성 및 사진 추가는 가능
|
|
123
285
|
|
|
124
|
-
|
|
125
|
-
-
|
|
126
|
-
-
|
|
127
|
-
- 비밀번호로 보호된 메모는 읽을 수 없음.
|
|
286
|
+
### Apple Intelligence
|
|
287
|
+
- macOS 26 (Tahoe) + Apple Silicon 필요
|
|
288
|
+
- `npm run swift-build`로 브릿지 바이너리 빌드
|
|
128
289
|
|
|
129
290
|
## 라이선스
|
|
130
291
|
|
package/README.md
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
# iMcp
|
|
2
2
|
|
|
3
|
-
MCP server for Apple Notes
|
|
3
|
+
MCP server for the entire Apple ecosystem — Notes, Reminders, Calendar, Contacts, Mail, Music, Finder, Safari, System, Photos, Shortcuts, and Apple Intelligence. Connect any AI to your Mac.
|
|
4
4
|
|
|
5
5
|
> [한국어](README.ko.md)
|
|
6
6
|
|
|
7
7
|
## Features
|
|
8
8
|
|
|
9
|
-
- **
|
|
10
|
-
- **
|
|
11
|
-
- **
|
|
9
|
+
- **98 tools** across 12 modules — full CRUD for Apple apps + system control + Apple Intelligence
|
|
10
|
+
- **14 prompts** — per-app workflows + cross-module (daily briefing, weekly digest, research, focus sessions)
|
|
11
|
+
- **4 MCP Resources** — live data URIs for notes, calendar, and reminders
|
|
12
|
+
- **JXA-based** — direct Apple app automation via JavaScript for Automation
|
|
13
|
+
- **Apple Intelligence** — on-device summarization, rewriting, proofreading (macOS 26+)
|
|
12
14
|
- **stdio transport** — secure local communication, no network exposure
|
|
13
15
|
- **Safety annotations** — every tool tagged with readOnly/destructive hints
|
|
14
16
|
|
|
@@ -44,44 +46,198 @@ npm install
|
|
|
44
46
|
npm run build
|
|
45
47
|
```
|
|
46
48
|
|
|
47
|
-
Then point your MCP client to `node dist/index.js`.
|
|
48
|
-
|
|
49
49
|
## Tools
|
|
50
50
|
|
|
51
|
-
### Notes
|
|
51
|
+
### Notes (12 tools)
|
|
52
|
+
|
|
53
|
+
| Tool | Description | Type |
|
|
54
|
+
|------|-------------|------|
|
|
55
|
+
| `list_notes` | List all notes with title, folder, dates | read |
|
|
56
|
+
| `search_notes` | Search by keyword in title and body | read |
|
|
57
|
+
| `read_note` | Read full content by ID | read |
|
|
58
|
+
| `create_note` | Create a note with HTML body | write |
|
|
59
|
+
| `update_note` | Replace entire body | destructive |
|
|
60
|
+
| `delete_note` | Delete (moved to Recently Deleted) | destructive |
|
|
61
|
+
| `move_note` | Move to another folder | destructive |
|
|
62
|
+
| `list_folders` | List folders with note counts | read |
|
|
63
|
+
| `create_folder` | Create a new folder | write |
|
|
64
|
+
| `scan_notes` | Bulk scan with metadata and preview | read |
|
|
65
|
+
| `compare_notes` | Compare 2-5 notes side by side | read |
|
|
66
|
+
| `bulk_move_notes` | Move multiple notes at once | destructive |
|
|
67
|
+
|
|
68
|
+
### Reminders (10 tools)
|
|
69
|
+
|
|
70
|
+
| Tool | Description | Type |
|
|
71
|
+
|------|-------------|------|
|
|
72
|
+
| `list_reminder_lists` | List all lists with counts | read |
|
|
73
|
+
| `list_reminders` | Filter by list/completed | read |
|
|
74
|
+
| `read_reminder` | Full details by ID | read |
|
|
75
|
+
| `create_reminder` | Create with due date/priority | write |
|
|
76
|
+
| `update_reminder` | Update properties | destructive |
|
|
77
|
+
| `complete_reminder` | Mark complete/incomplete | write |
|
|
78
|
+
| `delete_reminder` | Delete permanently | destructive |
|
|
79
|
+
| `search_reminders` | Search by keyword in name/body | read |
|
|
80
|
+
| `create_reminder_list` | Create a new reminder list | write |
|
|
81
|
+
| `delete_reminder_list` | Delete a reminder list | destructive |
|
|
82
|
+
|
|
83
|
+
### Calendar (9 tools)
|
|
84
|
+
|
|
85
|
+
| Tool | Description | Type |
|
|
86
|
+
|------|-------------|------|
|
|
87
|
+
| `list_calendars` | List calendars with name/color | read |
|
|
88
|
+
| `list_events` | Events in date range with pagination | read |
|
|
89
|
+
| `read_event` | Full details with attendees | read |
|
|
90
|
+
| `create_event` | Create with location/description | write |
|
|
91
|
+
| `update_event` | Update properties | destructive |
|
|
92
|
+
| `delete_event` | Delete permanently | destructive |
|
|
93
|
+
| `search_events` | Keyword search in date range | read |
|
|
94
|
+
| `get_upcoming_events` | Next N events from now | read |
|
|
95
|
+
| `today_events` | All events for today | read |
|
|
96
|
+
|
|
97
|
+
### Contacts (10 tools)
|
|
98
|
+
|
|
99
|
+
| Tool | Description | Type |
|
|
100
|
+
|------|-------------|------|
|
|
101
|
+
| `list_contacts` | List with email/phone, pagination | read |
|
|
102
|
+
| `search_contacts` | Search by name | read |
|
|
103
|
+
| `read_contact` | Full details (emails, phones, addresses) | read |
|
|
104
|
+
| `create_contact` | Create with email/phone/org | write |
|
|
105
|
+
| `update_contact` | Update properties | destructive |
|
|
106
|
+
| `delete_contact` | Delete permanently | destructive |
|
|
107
|
+
| `list_groups` | List contact groups | read |
|
|
108
|
+
| `add_contact_email` | Add email to existing contact | write |
|
|
109
|
+
| `add_contact_phone` | Add phone to existing contact | write |
|
|
110
|
+
| `list_group_members` | List contacts in a group | read |
|
|
111
|
+
|
|
112
|
+
### Mail (9 tools)
|
|
52
113
|
|
|
53
114
|
| Tool | Description | Type |
|
|
54
115
|
|------|-------------|------|
|
|
55
|
-
| `
|
|
56
|
-
| `
|
|
57
|
-
| `
|
|
58
|
-
| `
|
|
59
|
-
| `
|
|
60
|
-
| `
|
|
61
|
-
| `
|
|
116
|
+
| `list_mailboxes` | List mailboxes with unread counts | read |
|
|
117
|
+
| `list_messages` | Recent messages in a mailbox | read |
|
|
118
|
+
| `read_message` | Full message content | read |
|
|
119
|
+
| `search_messages` | Search by subject/sender | read |
|
|
120
|
+
| `mark_message_read` | Mark read/unread | write |
|
|
121
|
+
| `flag_message` | Flag/unflag a message | write |
|
|
122
|
+
| `get_unread_count` | Total unread across all mailboxes | read |
|
|
123
|
+
| `move_message` | Move message to another mailbox | destructive |
|
|
124
|
+
| `list_accounts` | List all mail accounts | read |
|
|
62
125
|
|
|
63
|
-
###
|
|
126
|
+
### Music (9 tools)
|
|
64
127
|
|
|
65
128
|
| Tool | Description | Type |
|
|
66
129
|
|------|-------------|------|
|
|
67
|
-
| `
|
|
130
|
+
| `list_playlists` | List playlists with track counts | read |
|
|
131
|
+
| `list_tracks` | Tracks in a playlist | read |
|
|
132
|
+
| `now_playing` | Current track and playback state | read |
|
|
133
|
+
| `playback_control` | Play, pause, next, previous | write |
|
|
134
|
+
| `search_tracks` | Search by name/artist/album | read |
|
|
135
|
+
| `play_track` | Play a specific track by name | write |
|
|
136
|
+
| `play_playlist` | Start playing a playlist | write |
|
|
137
|
+
| `get_track_info` | Detailed track metadata | read |
|
|
138
|
+
| `set_shuffle` | Set shuffle and repeat mode | write |
|
|
139
|
+
|
|
140
|
+
### Finder (8 tools)
|
|
141
|
+
|
|
142
|
+
| Tool | Description | Type |
|
|
143
|
+
|------|-------------|------|
|
|
144
|
+
| `search_files` | Spotlight search in a folder | read |
|
|
145
|
+
| `get_file_info` | File size, dates, kind, tags | read |
|
|
146
|
+
| `set_file_tags` | Set Finder tags on a file | destructive |
|
|
147
|
+
| `recent_files` | Recently modified files | read |
|
|
148
|
+
| `list_directory` | List files in a directory | read |
|
|
149
|
+
| `move_file` | Move or rename a file | destructive |
|
|
150
|
+
| `trash_file` | Move file to Trash | destructive |
|
|
68
151
|
| `create_folder` | Create a new folder | write |
|
|
69
152
|
|
|
70
|
-
###
|
|
153
|
+
### Safari (8 tools)
|
|
71
154
|
|
|
72
155
|
| Tool | Description | Type |
|
|
73
156
|
|------|-------------|------|
|
|
74
|
-
| `
|
|
75
|
-
| `
|
|
76
|
-
| `
|
|
157
|
+
| `list_tabs` | List all open tabs across windows | read |
|
|
158
|
+
| `read_page_content` | Read text content of a page | read |
|
|
159
|
+
| `get_current_tab` | Get the active tab URL and title | read |
|
|
160
|
+
| `open_url` | Open a URL in Safari | write |
|
|
161
|
+
| `close_tab` | Close a specific tab | destructive |
|
|
162
|
+
| `activate_tab` | Switch to a specific tab | write |
|
|
163
|
+
| `run_javascript` | Execute JavaScript in a tab | write |
|
|
164
|
+
| `search_tabs` | Search tabs by title or URL | read |
|
|
165
|
+
|
|
166
|
+
### System (9 tools)
|
|
167
|
+
|
|
168
|
+
| Tool | Description | Type |
|
|
169
|
+
|------|-------------|------|
|
|
170
|
+
| `get_clipboard` | Read clipboard contents | read |
|
|
171
|
+
| `set_clipboard` | Write to clipboard | write |
|
|
172
|
+
| `get_volume` | Get system volume level | read |
|
|
173
|
+
| `set_volume` | Set system volume level | write |
|
|
174
|
+
| `toggle_dark_mode` | Toggle dark/light mode | write |
|
|
175
|
+
| `get_frontmost_app` | Get the frontmost application | read |
|
|
176
|
+
| `list_running_apps` | List all running applications | read |
|
|
177
|
+
| `get_screen_info` | Get display information | read |
|
|
178
|
+
| `show_notification` | Display a system notification | write |
|
|
179
|
+
|
|
180
|
+
### Photos (7 tools)
|
|
181
|
+
|
|
182
|
+
| Tool | Description | Type |
|
|
183
|
+
|------|-------------|------|
|
|
184
|
+
| `list_albums` | List photo albums | read |
|
|
185
|
+
| `list_photos` | List photos in an album | read |
|
|
186
|
+
| `search_photos` | Search photos by keyword | read |
|
|
187
|
+
| `get_photo_info` | Detailed photo metadata | read |
|
|
188
|
+
| `list_favorites` | List favorite photos | read |
|
|
189
|
+
| `create_album` | Create a new album | write |
|
|
190
|
+
| `add_to_album` | Add photos to an album | write |
|
|
191
|
+
|
|
192
|
+
### Shortcuts (4 tools)
|
|
193
|
+
|
|
194
|
+
| Tool | Description | Type |
|
|
195
|
+
|------|-------------|------|
|
|
196
|
+
| `list_shortcuts` | List available Shortcuts | read |
|
|
197
|
+
| `run_shortcut` | Run a Shortcut by name | write |
|
|
198
|
+
| `search_shortcuts` | Search shortcuts by name | read |
|
|
199
|
+
| `get_shortcut_detail` | Get shortcut details/actions | read |
|
|
200
|
+
|
|
201
|
+
### Apple Intelligence (3 tools)
|
|
202
|
+
|
|
203
|
+
Requires macOS 26+ with Apple Silicon. Graceful error on unsupported systems.
|
|
204
|
+
|
|
205
|
+
| Tool | Description | Type |
|
|
206
|
+
|------|-------------|------|
|
|
207
|
+
| `summarize_text` | On-device summarization | read |
|
|
208
|
+
| `rewrite_text` | Rewrite in specified tone | read |
|
|
209
|
+
| `proofread_text` | Grammar/spelling correction | read |
|
|
210
|
+
|
|
211
|
+
## Resources
|
|
212
|
+
|
|
213
|
+
MCP Resources expose live data from Apple apps as URIs.
|
|
214
|
+
|
|
215
|
+
| URI | Description |
|
|
216
|
+
|-----|-------------|
|
|
217
|
+
| `notes://recent` | 10 most recent notes |
|
|
218
|
+
| `notes://recent/{count}` | Recent notes (configurable count) |
|
|
219
|
+
| `calendar://today` | Today's calendar events |
|
|
220
|
+
| `reminders://due` | Overdue reminders |
|
|
77
221
|
|
|
78
222
|
## Prompts
|
|
79
223
|
|
|
80
|
-
|
|
224
|
+
### Per-App
|
|
225
|
+
- **organize-notes** — Classify notes by topic, create folders, move
|
|
226
|
+
- **find-duplicates** — Find similar notes, compare, suggest cleanup
|
|
227
|
+
- **weekly-review** — Summarize past week's notes
|
|
228
|
+
- **organize-reminders** — Scan, identify overdue/completed, cleanup
|
|
229
|
+
- **daily-review** — Today's due reminders with priorities
|
|
230
|
+
- **schedule-review** — Upcoming events, conflicts, optimizations
|
|
231
|
+
- **meeting-prep** — Event details + related notes for meeting prep
|
|
81
232
|
|
|
82
|
-
|
|
83
|
-
- **
|
|
84
|
-
- **weekly-
|
|
233
|
+
### Cross-Module
|
|
234
|
+
- **daily-briefing** — Today's events + due reminders + recent notes
|
|
235
|
+
- **weekly-digest** — Past N days: events + notes + reminders combined
|
|
236
|
+
- **meeting-notes-to-reminders** — Extract action items from meeting notes, create reminders
|
|
237
|
+
- **event-follow-up** — Create follow-up note and reminders after a meeting
|
|
238
|
+
- **research-with-safari** — Browse with Safari + save findings to Notes
|
|
239
|
+
- **focus-session** — Calendar + Reminders + Music for focused work
|
|
240
|
+
- **file-organizer** — Organize files with Finder + track in Notes
|
|
85
241
|
|
|
86
242
|
## Configuration
|
|
87
243
|
|
|
@@ -91,16 +247,45 @@ Use these guided workflows to organize your notes:
|
|
|
91
247
|
|
|
92
248
|
## Requirements
|
|
93
249
|
|
|
94
|
-
- macOS (Apple
|
|
250
|
+
- macOS (Apple apps require macOS)
|
|
95
251
|
- Node.js >= 18
|
|
96
|
-
- First run will prompt for Automation permission
|
|
252
|
+
- First run will prompt for Automation permission for each app
|
|
253
|
+
- Apple Intelligence tools require macOS 26+ with Apple Silicon
|
|
97
254
|
|
|
98
255
|
## Limitations
|
|
99
256
|
|
|
100
|
-
|
|
101
|
-
-
|
|
102
|
-
-
|
|
103
|
-
- Password-protected notes
|
|
257
|
+
### Notes
|
|
258
|
+
- Move copies and deletes (new ID, reset dates, lost attachments)
|
|
259
|
+
- Update replaces entire body. Read first to preserve content.
|
|
260
|
+
- Password-protected notes unreadable.
|
|
261
|
+
|
|
262
|
+
### Reminders / Calendar
|
|
263
|
+
- Recurrence rules are read-only (cannot create/modify via automation)
|
|
264
|
+
- Calendar attendees are read-only
|
|
265
|
+
|
|
266
|
+
### Contacts
|
|
267
|
+
- Search only matches name field
|
|
268
|
+
- Custom fields not accessible
|
|
269
|
+
|
|
270
|
+
### Mail
|
|
271
|
+
- Content truncated to 5000 characters
|
|
272
|
+
|
|
273
|
+
### Music
|
|
274
|
+
- Smart playlists are read-only
|
|
275
|
+
- No queue manipulation
|
|
276
|
+
|
|
277
|
+
### Finder
|
|
278
|
+
- Tags use Spotlight (mdfind), performance varies with index state
|
|
279
|
+
|
|
280
|
+
### Safari
|
|
281
|
+
- Reading page content requires Allow JavaScript from Apple Events in Safari Developer menu
|
|
282
|
+
|
|
283
|
+
### Photos
|
|
284
|
+
- No import/delete via JXA, but albums can be created and photos added
|
|
285
|
+
|
|
286
|
+
### Apple Intelligence
|
|
287
|
+
- Requires macOS 26 (Tahoe) + Apple Silicon
|
|
288
|
+
- Run `npm run swift-build` to compile the bridge binary
|
|
104
289
|
|
|
105
290
|
## License
|
|
106
291
|
|