@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.
Files changed (101) hide show
  1. package/LICENSE +21 -0
  2. package/README.ko.md +218 -57
  3. package/README.md +215 -30
  4. package/dist/calendar/prompts.d.ts +2 -0
  5. package/dist/calendar/prompts.js +43 -0
  6. package/dist/calendar/prompts.js.map +1 -0
  7. package/dist/calendar/scripts.d.ts +20 -0
  8. package/dist/calendar/scripts.js +283 -0
  9. package/dist/calendar/scripts.js.map +1 -0
  10. package/dist/calendar/tools.d.ts +3 -0
  11. package/dist/calendar/tools.js +210 -0
  12. package/dist/calendar/tools.js.map +1 -0
  13. package/dist/contacts/scripts.d.ts +22 -0
  14. package/dist/contacts/scripts.js +192 -0
  15. package/dist/contacts/scripts.js.map +1 -0
  16. package/dist/contacts/tools.d.ts +3 -0
  17. package/dist/contacts/tools.js +173 -0
  18. package/dist/contacts/tools.js.map +1 -0
  19. package/dist/cross/prompts.d.ts +2 -0
  20. package/dist/cross/prompts.js +177 -0
  21. package/dist/cross/prompts.js.map +1 -0
  22. package/dist/finder/scripts.d.ts +8 -0
  23. package/dist/finder/scripts.js +127 -0
  24. package/dist/finder/scripts.js.map +1 -0
  25. package/dist/finder/tools.d.ts +3 -0
  26. package/dist/finder/tools.js +134 -0
  27. package/dist/finder/tools.js.map +1 -0
  28. package/dist/index.js +35 -1
  29. package/dist/index.js.map +1 -1
  30. package/dist/intelligence/tools.d.ts +3 -0
  31. package/dist/intelligence/tools.js +74 -0
  32. package/dist/intelligence/tools.js.map +1 -0
  33. package/dist/mail/scripts.d.ts +9 -0
  34. package/dist/mail/scripts.js +214 -0
  35. package/dist/mail/scripts.js.map +1 -0
  36. package/dist/mail/tools.d.ts +3 -0
  37. package/dist/mail/tools.js +144 -0
  38. package/dist/mail/tools.js.map +1 -0
  39. package/dist/music/scripts.d.ts +9 -0
  40. package/dist/music/scripts.js +180 -0
  41. package/dist/music/scripts.js.map +1 -0
  42. package/dist/music/tools.d.ts +3 -0
  43. package/dist/music/tools.js +143 -0
  44. package/dist/music/tools.js.map +1 -0
  45. package/dist/notes/prompts.js +1 -6
  46. package/dist/notes/prompts.js.map +1 -1
  47. package/dist/notes/scripts.js +1 -11
  48. package/dist/notes/scripts.js.map +1 -1
  49. package/dist/notes/tools.js +1 -11
  50. package/dist/notes/tools.js.map +1 -1
  51. package/dist/photos/scripts.d.ts +7 -0
  52. package/dist/photos/scripts.js +142 -0
  53. package/dist/photos/scripts.js.map +1 -0
  54. package/dist/photos/tools.d.ts +3 -0
  55. package/dist/photos/tools.js +114 -0
  56. package/dist/photos/tools.js.map +1 -0
  57. package/dist/reminders/prompts.d.ts +2 -0
  58. package/dist/reminders/prompts.js +40 -0
  59. package/dist/reminders/prompts.js.map +1 -0
  60. package/dist/reminders/scripts.d.ts +21 -0
  61. package/dist/reminders/scripts.js +202 -0
  62. package/dist/reminders/scripts.js.map +1 -0
  63. package/dist/reminders/tools.d.ts +3 -0
  64. package/dist/reminders/tools.js +227 -0
  65. package/dist/reminders/tools.js.map +1 -0
  66. package/dist/safari/scripts.d.ts +8 -0
  67. package/dist/safari/scripts.js +120 -0
  68. package/dist/safari/scripts.js.map +1 -0
  69. package/dist/safari/tools.d.ts +3 -0
  70. package/dist/safari/tools.js +129 -0
  71. package/dist/safari/tools.js.map +1 -0
  72. package/dist/shared/esc.d.ts +10 -0
  73. package/dist/shared/esc.js +35 -0
  74. package/dist/shared/esc.js.map +1 -0
  75. package/dist/shared/jxa.js +1 -1
  76. package/dist/shared/jxa.js.map +1 -1
  77. package/dist/shared/prompt.d.ts +11 -0
  78. package/dist/shared/prompt.js +8 -0
  79. package/dist/shared/prompt.js.map +1 -0
  80. package/dist/shared/resources.d.ts +5 -0
  81. package/dist/shared/resources.js +81 -0
  82. package/dist/shared/resources.js.map +1 -0
  83. package/dist/shared/result.d.ts +15 -0
  84. package/dist/shared/result.js +14 -0
  85. package/dist/shared/result.js.map +1 -0
  86. package/dist/shared/swift.d.ts +2 -0
  87. package/dist/shared/swift.js +73 -0
  88. package/dist/shared/swift.js.map +1 -0
  89. package/dist/shortcuts/scripts.d.ts +4 -0
  90. package/dist/shortcuts/scripts.js +47 -0
  91. package/dist/shortcuts/scripts.js.map +1 -0
  92. package/dist/shortcuts/tools.d.ts +3 -0
  93. package/dist/shortcuts/tools.js +66 -0
  94. package/dist/shortcuts/tools.js.map +1 -0
  95. package/dist/system/scripts.d.ts +9 -0
  96. package/dist/system/scripts.js +124 -0
  97. package/dist/system/scripts.js.map +1 -0
  98. package/dist/system/tools.d.ts +3 -0
  99. package/dist/system/tools.js +179 -0
  100. package/dist/system/tools.js.map +1 -0
  101. 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 Notes용 MCP 서버. 완전한 CRUD, 일괄 스캔, 스마트 비교 AI를 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
- - **12개 도구** — 메모 목록/검색/읽기/생성/수정/삭제/이동 + 폴더 관리 + 일괄 작업
10
- - **3개 프롬프트** — 메모 정리, 중복 찾기, 주간 리뷰
11
- - **JXA 기반**JavaScript for Automation으로 Apple Notes 직접 제어
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
- | `list_notes` | 전체 메모 목록 (제목, 폴더, 날짜) | 읽기 |
80
- | `search_notes` | 키워드로 제목/본문 검색 | 읽기 |
81
- | `read_note` | 특정 메모의 전체 내용 조회 | 읽기 |
82
- | `create_note` | HTML 본문으로 새 메모 생성 | 쓰기 |
83
- | `update_note` | 메모 본문 전체 교체 | 파괴적 |
84
- | `delete_note` | 메모 삭제 (최근 삭제로 이동) | 파괴적 |
85
- | `move_note` | 메모를 다른 폴더로 이동 | 파괴적 |
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
- | `list_folders` | 전체 폴더 목록 (메모 수 포함) | 읽기 |
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
- | `scan_notes` | 메타데이터와 미리보기로 전체 메모 스캔 | 읽기 |
99
- | `compare_notes` | 2~5개 메모를 나란히 비교 | 읽기 |
100
- | `bulk_move_notes` | 여러 메모를 번에 이동 | 파괴적 |
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
- - **organize-notes** 전체 메모 스캔, 주제별 분류, 폴더 생성 및 이동
107
- - **find-duplicates** — 중복/유사 메모 찾기, 내용 비교, 정리 제안
108
- - **weekly-review** 지난 1주일 메모 요약 및 정리 제안
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 (Apple Notes는 macOS에서만 동작)
250
+ - macOS
119
251
  - Node.js >= 18
120
- - 실행 Notes.app 제어를 위한 자동화 권한 요청
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
- - `move_note` / `bulk_move_notes`: Apple Notes에 네이티브 이동 명령이 없어 복사 후 삭제 방식. 새 ID 부여, 날짜 초기화, 첨부파일 손실.
125
- - `update_note`: 본문 전체를 교체. 부분 보존이 필요하면 먼저 read_note로 읽을 것. 첨부파일 손실 가능.
126
- - 검색은 클라이언트 사이드 (Apple Notes 스크립팅에 네이티브 검색 API 없음).
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. Full CRUD, bulk scan, and smart comparison connect any AI to your Apple ecosystem.
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
- - **12 tools** list, search, read, create, update, delete, move notes + folder management + bulk operations
10
- - **3 prompts** — organize notes, find duplicates, weekly review
11
- - **JXA-based** — direct Apple Notes automation via JavaScript for Automation
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
- | `list_notes` | List all notes with title, folder, and dates | read |
56
- | `search_notes` | Search notes by keyword in title and body | read |
57
- | `read_note` | Read full content of a note by ID | read |
58
- | `create_note` | Create a new note with HTML body | write |
59
- | `update_note` | Replace entire body of a note | destructive |
60
- | `delete_note` | Delete a note (moved to Recently Deleted) | destructive |
61
- | `move_note` | Move a note to another folder | destructive |
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
- ### Folders
126
+ ### Music (9 tools)
64
127
 
65
128
  | Tool | Description | Type |
66
129
  |------|-------------|------|
67
- | `list_folders` | List all folders with note counts | read |
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
- ### Bulk Operations
153
+ ### Safari (8 tools)
71
154
 
72
155
  | Tool | Description | Type |
73
156
  |------|-------------|------|
74
- | `scan_notes` | Bulk scan notes with metadata and preview | read |
75
- | `compare_notes` | Compare 2-5 notes side by side | read |
76
- | `bulk_move_notes` | Move multiple notes at once | destructive |
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
- Use these guided workflows to organize your notes:
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
- - **organize-notes** — Scan all notes, classify by topic, create folders, and move notes
83
- - **find-duplicates** — Find duplicate or similar notes, compare content, and suggest cleanup
84
- - **weekly-review** — Summarize notes from the past week and suggest actions
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 Notes requires macOS)
250
+ - macOS (Apple apps require macOS)
95
251
  - Node.js >= 18
96
- - First run will prompt for Automation permission to control Notes.app
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
- - `move_note` / `bulk_move_notes`: Apple Notes has no native move command. Notes are copied and deleted, resulting in new IDs, reset dates, and lost attachments.
101
- - `update_note`: Replaces entire body. Read the note first to preserve content. Attachments may be lost.
102
- - Search is client-side (no native search API in Apple Notes scripting).
103
- - Password-protected notes cannot be read.
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
 
@@ -0,0 +1,2 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerCalendarPrompts(server: McpServer): void;