@heznpc/imcp 0.1.0 → 0.6.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 +225 -57
- package/README.md +222 -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 +252 -0
- package/dist/calendar/tools.js.map +1 -0
- package/dist/contacts/scripts.d.ts +22 -0
- package/dist/contacts/scripts.js +220 -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 +38 -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 +145 -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 +158 -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 +267 -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/setup.d.ts +2 -0
- package/dist/shared/setup.js +44 -0
- package/dist/shared/setup.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,22 @@
|
|
|
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
|
+
- **103개 도구** (12개 모듈) — Apple 앱 CRUD + 시스템 제어 + Apple Intelligence
|
|
10
|
+
- **14개 프롬프트** — 앱별 워크플로우 + 크로스 모듈 (데일리 브리핑, 주간 다이제스트, 리서치, 집중 세션)
|
|
11
|
+
- **4개 MCP 리소스** — Notes, Calendar, Reminders 실시간 데이터 URI
|
|
12
|
+
- **JXA + Swift 브릿지** — JXA로 기본 자동화, EventKit/PhotoKit으로 고급 기능
|
|
13
|
+
- **반복 이벤트/리마인더** — EventKit으로 반복 규칙 생성 (macOS 26+ Swift 브릿지)
|
|
14
|
+
- **사진 가져오기/삭제** — PhotoKit으로 사진 관리 (macOS 26+ Swift 브릿지)
|
|
15
|
+
- **Apple Intelligence** — 온디바이스 요약, 재작성, 교정 (macOS 26+)
|
|
16
|
+
- **원클릭 셋업** — `setup_permissions` 도구로 모든 macOS 권한을 한번에 요청
|
|
12
17
|
- **stdio 전송** — 안전한 로컬 통신, 네트워크 노출 없음
|
|
13
18
|
- **Safety Annotations** — 모든 도구에 readOnly/destructive 힌트 적용
|
|
14
19
|
|
|
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
20
|
## 빠른 시작
|
|
40
21
|
|
|
41
22
|
### Claude Desktop
|
|
@@ -68,63 +49,250 @@ npm install
|
|
|
68
49
|
npm run build
|
|
69
50
|
```
|
|
70
51
|
|
|
71
|
-
이후 MCP 클라이언트에서 `node dist/index.js`를 실행합니다.
|
|
72
|
-
|
|
73
52
|
## 도구
|
|
74
53
|
|
|
75
|
-
###
|
|
54
|
+
### Notes (12개)
|
|
55
|
+
|
|
56
|
+
| 도구 | 설명 | 타입 |
|
|
57
|
+
|------|------|------|
|
|
58
|
+
| `list_notes` | 메모 목록 (제목, 폴더, 날짜) | 읽기 |
|
|
59
|
+
| `search_notes` | 키워드 검색 | 읽기 |
|
|
60
|
+
| `read_note` | 전체 내용 조회 | 읽기 |
|
|
61
|
+
| `create_note` | HTML 본문으로 생성 | 쓰기 |
|
|
62
|
+
| `update_note` | 본문 전체 교체 | 파괴적 |
|
|
63
|
+
| `delete_note` | 삭제 (최근 삭제로 이동) | 파괴적 |
|
|
64
|
+
| `move_note` | 다른 폴더로 이동 | 파괴적 |
|
|
65
|
+
| `list_folders` | 폴더 목록 | 읽기 |
|
|
66
|
+
| `create_folder` | 폴더 생성 | 쓰기 |
|
|
67
|
+
| `scan_notes` | 일괄 스캔 (미리보기 포함) | 읽기 |
|
|
68
|
+
| `compare_notes` | 2~5개 메모 비교 | 읽기 |
|
|
69
|
+
| `bulk_move_notes` | 여러 메모 일괄 이동 | 파괴적 |
|
|
70
|
+
|
|
71
|
+
### Reminders (11개)
|
|
72
|
+
|
|
73
|
+
| 도구 | 설명 | 타입 |
|
|
74
|
+
|------|------|------|
|
|
75
|
+
| `list_reminder_lists` | 리스트 목록 | 읽기 |
|
|
76
|
+
| `list_reminders` | 리마인더 조회 (필터) | 읽기 |
|
|
77
|
+
| `read_reminder` | 상세 조회 | 읽기 |
|
|
78
|
+
| `create_reminder` | 생성 (마감일/우선순위) | 쓰기 |
|
|
79
|
+
| `update_reminder` | 속성 변경 | 파괴적 |
|
|
80
|
+
| `complete_reminder` | 완료/미완료 처리 | 쓰기 |
|
|
81
|
+
| `delete_reminder` | 영구 삭제 | 파괴적 |
|
|
82
|
+
| `search_reminders` | 이름/본문 키워드 검색 | 읽기 |
|
|
83
|
+
| `create_reminder_list` | 새 리스트 생성 | 쓰기 |
|
|
84
|
+
| `delete_reminder_list` | 리스트 삭제 | 파괴적 |
|
|
85
|
+
| `create_recurring_reminder` | 반복 규칙으로 생성 (Swift/EventKit) | 쓰기 |
|
|
86
|
+
|
|
87
|
+
### Calendar (10개)
|
|
88
|
+
|
|
89
|
+
| 도구 | 설명 | 타입 |
|
|
90
|
+
|------|------|------|
|
|
91
|
+
| `list_calendars` | 캘린더 목록 | 읽기 |
|
|
92
|
+
| `list_events` | 날짜 범위 이벤트 조회 | 읽기 |
|
|
93
|
+
| `read_event` | 이벤트 상세 (참석자 포함) | 읽기 |
|
|
94
|
+
| `create_event` | 이벤트 생성 | 쓰기 |
|
|
95
|
+
| `update_event` | 이벤트 수정 | 파괴적 |
|
|
96
|
+
| `delete_event` | 이벤트 삭제 | 파괴적 |
|
|
97
|
+
| `search_events` | 키워드 검색 | 읽기 |
|
|
98
|
+
| `get_upcoming_events` | 지금부터 다음 N개 이벤트 | 읽기 |
|
|
99
|
+
| `today_events` | 오늘 일정 전체 | 읽기 |
|
|
100
|
+
| `create_recurring_event` | 반복 규칙으로 이벤트 생성 (Swift/EventKit) | 쓰기 |
|
|
101
|
+
|
|
102
|
+
### Contacts (10개)
|
|
103
|
+
|
|
104
|
+
| 도구 | 설명 | 타입 |
|
|
105
|
+
|------|------|------|
|
|
106
|
+
| `list_contacts` | 연락처 목록 (페이지네이션) | 읽기 |
|
|
107
|
+
| `search_contacts` | 이름/이메일/전화/조직 검색 | 읽기 |
|
|
108
|
+
| `read_contact` | 상세 조회 (이메일, 전화, 주소) | 읽기 |
|
|
109
|
+
| `create_contact` | 연락처 생성 | 쓰기 |
|
|
110
|
+
| `update_contact` | 속성 변경 | 파괴적 |
|
|
111
|
+
| `delete_contact` | 영구 삭제 | 파괴적 |
|
|
112
|
+
| `list_groups` | 그룹 목록 | 읽기 |
|
|
113
|
+
| `add_contact_email` | 기존 연락처에 이메일 추가 | 쓰기 |
|
|
114
|
+
| `add_contact_phone` | 기존 연락처에 전화번호 추가 | 쓰기 |
|
|
115
|
+
| `list_group_members` | 그룹 내 연락처 목록 | 읽기 |
|
|
116
|
+
|
|
117
|
+
### Mail (9개)
|
|
76
118
|
|
|
77
119
|
| 도구 | 설명 | 타입 |
|
|
78
120
|
|------|------|------|
|
|
79
|
-
| `
|
|
80
|
-
| `
|
|
81
|
-
| `
|
|
82
|
-
| `
|
|
83
|
-
| `
|
|
84
|
-
| `
|
|
85
|
-
| `
|
|
121
|
+
| `list_mailboxes` | 메일함 목록 (미읽음 수) | 읽기 |
|
|
122
|
+
| `list_messages` | 메일함 내 메시지 목록 | 읽기 |
|
|
123
|
+
| `read_message` | 메시지 전체 내용 | 읽기 |
|
|
124
|
+
| `search_messages` | 제목/발신자 검색 | 읽기 |
|
|
125
|
+
| `mark_message_read` | 읽음/안읽음 처리 | 쓰기 |
|
|
126
|
+
| `flag_message` | 깃발 표시/해제 | 쓰기 |
|
|
127
|
+
| `get_unread_count` | 전체 메일함 미읽음 수 | 읽기 |
|
|
128
|
+
| `move_message` | 다른 메일함으로 이동 | 파괴적 |
|
|
129
|
+
| `list_accounts` | 메일 계정 목록 | 읽기 |
|
|
130
|
+
|
|
131
|
+
### Music (9개)
|
|
86
132
|
|
|
87
|
-
|
|
133
|
+
| 도구 | 설명 | 타입 |
|
|
134
|
+
|------|------|------|
|
|
135
|
+
| `list_playlists` | 재생목록 목록 | 읽기 |
|
|
136
|
+
| `list_tracks` | 재생목록 내 트랙 | 읽기 |
|
|
137
|
+
| `now_playing` | 현재 재생 중인 트랙 | 읽기 |
|
|
138
|
+
| `playback_control` | 재생/일시정지/다음/이전 | 쓰기 |
|
|
139
|
+
| `search_tracks` | 이름/아티스트/앨범 검색 | 읽기 |
|
|
140
|
+
| `play_track` | 이름으로 특정 트랙 재생 | 쓰기 |
|
|
141
|
+
| `play_playlist` | 재생목록 재생 시작 | 쓰기 |
|
|
142
|
+
| `get_track_info` | 트랙 상세 메타데이터 | 읽기 |
|
|
143
|
+
| `set_shuffle` | 셔플/반복 모드 설정 | 쓰기 |
|
|
144
|
+
|
|
145
|
+
### Finder (8개)
|
|
88
146
|
|
|
89
147
|
| 도구 | 설명 | 타입 |
|
|
90
148
|
|------|------|------|
|
|
91
|
-
| `
|
|
149
|
+
| `search_files` | Spotlight 파일 검색 | 읽기 |
|
|
150
|
+
| `get_file_info` | 파일 정보 (크기, 날짜, 태그) | 읽기 |
|
|
151
|
+
| `set_file_tags` | Finder 태그 설정 | 파괴적 |
|
|
152
|
+
| `recent_files` | 최근 수정 파일 | 읽기 |
|
|
153
|
+
| `list_directory` | 디렉토리 내 파일 목록 | 읽기 |
|
|
154
|
+
| `move_file` | 파일 이동/이름 변경 | 파괴적 |
|
|
155
|
+
| `trash_file` | 휴지통으로 이동 | 파괴적 |
|
|
92
156
|
| `create_folder` | 새 폴더 생성 | 쓰기 |
|
|
93
157
|
|
|
94
|
-
###
|
|
158
|
+
### Safari (8개)
|
|
95
159
|
|
|
96
160
|
| 도구 | 설명 | 타입 |
|
|
97
161
|
|------|------|------|
|
|
98
|
-
| `
|
|
99
|
-
| `
|
|
100
|
-
| `
|
|
162
|
+
| `list_tabs` | 전체 윈도우의 탭 목록 | 읽기 |
|
|
163
|
+
| `read_page_content` | 페이지 텍스트 내용 읽기 | 읽기 |
|
|
164
|
+
| `get_current_tab` | 현재 활성 탭 URL/제목 | 읽기 |
|
|
165
|
+
| `open_url` | Safari에서 URL 열기 | 쓰기 |
|
|
166
|
+
| `close_tab` | 특정 탭 닫기 | 파괴적 |
|
|
167
|
+
| `activate_tab` | 특정 탭으로 전환 | 쓰기 |
|
|
168
|
+
| `run_javascript` | 탭에서 JavaScript 실행 | 쓰기 |
|
|
169
|
+
| `search_tabs` | 제목/URL로 탭 검색 | 읽기 |
|
|
101
170
|
|
|
102
|
-
|
|
171
|
+
### System (9개)
|
|
103
172
|
|
|
104
|
-
|
|
173
|
+
| 도구 | 설명 | 타입 |
|
|
174
|
+
|------|------|------|
|
|
175
|
+
| `get_clipboard` | 클립보드 내용 읽기 | 읽기 |
|
|
176
|
+
| `set_clipboard` | 클립보드에 쓰기 | 쓰기 |
|
|
177
|
+
| `get_volume` | 시스템 볼륨 확인 | 읽기 |
|
|
178
|
+
| `set_volume` | 시스템 볼륨 설정 | 쓰기 |
|
|
179
|
+
| `toggle_dark_mode` | 다크/라이트 모드 전환 | 쓰기 |
|
|
180
|
+
| `get_frontmost_app` | 최전면 앱 확인 | 읽기 |
|
|
181
|
+
| `list_running_apps` | 실행 중인 앱 목록 | 읽기 |
|
|
182
|
+
| `get_screen_info` | 디스플레이 정보 | 읽기 |
|
|
183
|
+
| `show_notification` | 시스템 알림 표시 | 쓰기 |
|
|
184
|
+
|
|
185
|
+
### Photos (9개)
|
|
105
186
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
187
|
+
| 도구 | 설명 | 타입 |
|
|
188
|
+
|------|------|------|
|
|
189
|
+
| `list_albums` | 앨범 목록 | 읽기 |
|
|
190
|
+
| `list_photos` | 앨범 내 사진 목록 | 읽기 |
|
|
191
|
+
| `search_photos` | 키워드로 사진 검색 | 읽기 |
|
|
192
|
+
| `get_photo_info` | 사진 상세 메타데이터 | 읽기 |
|
|
193
|
+
| `list_favorites` | 즐겨찾기 사진 목록 | 읽기 |
|
|
194
|
+
| `create_album` | 새 앨범 생성 | 쓰기 |
|
|
195
|
+
| `add_to_album` | 앨범에 사진 추가 | 쓰기 |
|
|
196
|
+
| `import_photo` | 파일에서 사진 가져오기 (Swift/PhotoKit) | 쓰기 |
|
|
197
|
+
| `delete_photos` | ID로 사진 삭제 (Swift/PhotoKit) | 파괴적 |
|
|
198
|
+
|
|
199
|
+
### Shortcuts (4개)
|
|
200
|
+
|
|
201
|
+
| 도구 | 설명 | 타입 |
|
|
202
|
+
|------|------|------|
|
|
203
|
+
| `list_shortcuts` | 사용 가능한 단축어 목록 | 읽기 |
|
|
204
|
+
| `run_shortcut` | 이름으로 단축어 실행 | 쓰기 |
|
|
205
|
+
| `search_shortcuts` | 이름으로 단축어 검색 | 읽기 |
|
|
206
|
+
| `get_shortcut_detail` | 단축어 상세 정보/액션 | 읽기 |
|
|
207
|
+
|
|
208
|
+
### Apple Intelligence (3개)
|
|
209
|
+
|
|
210
|
+
macOS 26+ Apple Silicon 필요.
|
|
211
|
+
|
|
212
|
+
| 도구 | 설명 | 타입 |
|
|
213
|
+
|------|------|------|
|
|
214
|
+
| `summarize_text` | 온디바이스 텍스트 요약 | 읽기 |
|
|
215
|
+
| `rewrite_text` | 톤 지정 재작성 | 읽기 |
|
|
216
|
+
| `proofread_text` | 문법/맞춤법 교정 | 읽기 |
|
|
217
|
+
|
|
218
|
+
## 리소스
|
|
219
|
+
|
|
220
|
+
MCP 리소스는 Apple 앱의 실시간 데이터를 URI로 제공합니다.
|
|
221
|
+
|
|
222
|
+
| URI | 설명 |
|
|
223
|
+
|-----|------|
|
|
224
|
+
| `notes://recent` | 최근 메모 10개 |
|
|
225
|
+
| `notes://recent/{count}` | 최근 메모 (개수 지정) |
|
|
226
|
+
| `calendar://today` | 오늘의 캘린더 이벤트 |
|
|
227
|
+
| `reminders://due` | 기한 지난 리마인더 |
|
|
228
|
+
|
|
229
|
+
## 프롬프트
|
|
230
|
+
|
|
231
|
+
### 앱별
|
|
232
|
+
- **organize-notes** — 메모 분류, 폴더 생성, 이동
|
|
233
|
+
- **find-duplicates** — 중복 메모 찾기, 비교, 정리
|
|
234
|
+
- **weekly-review** — 주간 메모 요약
|
|
235
|
+
- **organize-reminders** — 리마인더 정리
|
|
236
|
+
- **daily-review** — 오늘 마감 리마인더 리뷰
|
|
237
|
+
- **schedule-review** — 향후 일정 리뷰, 충돌 확인
|
|
238
|
+
- **meeting-prep** — 미팅 준비 (이벤트 + 관련 메모)
|
|
239
|
+
|
|
240
|
+
### 크로스 모듈
|
|
241
|
+
- **daily-briefing** — 오늘 일정 + 마감 리마인더 + 최근 메모 종합
|
|
242
|
+
- **weekly-digest** — N일간 이벤트 + 메모 + 리마인더 종합 리뷰
|
|
243
|
+
- **meeting-notes-to-reminders** — 미팅 메모에서 할 일 추출 → 리마인더 생성
|
|
244
|
+
- **event-follow-up** — 미팅 후 팔로업 노트 + 리마인더 생성
|
|
245
|
+
- **research-with-safari** — Safari로 조사 + Notes에 결과 저장
|
|
246
|
+
- **focus-session** — Calendar + Reminders + Music으로 집중 세션
|
|
247
|
+
- **file-organizer** — Finder로 파일 정리 + Notes에 기록
|
|
109
248
|
|
|
110
249
|
## 설정
|
|
111
250
|
|
|
112
251
|
| 환경 변수 | 기본값 | 설명 |
|
|
113
252
|
|----------|--------|------|
|
|
114
|
-
| `IMCP_INCLUDE_SHARED` | `false` | 공유
|
|
253
|
+
| `IMCP_INCLUDE_SHARED` | `false` | 공유 메모/폴더 포함 |
|
|
115
254
|
|
|
116
255
|
## 요구 사항
|
|
117
256
|
|
|
118
|
-
- macOS
|
|
257
|
+
- macOS
|
|
119
258
|
- Node.js >= 18
|
|
120
|
-
- 첫 실행 시
|
|
259
|
+
- 각 앱 자동화 권한 (첫 실행 시 요청) — `setup_permissions` 도구로 한번에 설정 가능
|
|
260
|
+
- Apple Intelligence: macOS 26+ Apple Silicon
|
|
261
|
+
|
|
262
|
+
## 제한 사항
|
|
263
|
+
|
|
264
|
+
### Notes
|
|
265
|
+
- 이동 시 복사 후 삭제 (새 ID, 날짜 초기화, 첨부 파일 유실)
|
|
266
|
+
- 업데이트는 본문 전체를 교체합니다. 내용 보존을 위해 먼저 읽기
|
|
267
|
+
- 비밀번호 보호된 메모 읽기 불가
|
|
268
|
+
|
|
269
|
+
### Reminders / Calendar
|
|
270
|
+
- JXA 반복 규칙은 읽기 전용 — `create_recurring_event`/`create_recurring_reminder` (Swift/EventKit) 사용
|
|
271
|
+
- 캘린더 참석자 읽기 전용
|
|
272
|
+
|
|
273
|
+
### Contacts
|
|
274
|
+
- 사용자 지정 필드 접근 불가
|
|
275
|
+
|
|
276
|
+
### Mail
|
|
277
|
+
- 내용 기본 5000자 제한 (`maxLength` 파라미터로 조절 가능)
|
|
278
|
+
|
|
279
|
+
### Music
|
|
280
|
+
- 스마트 재생목록 읽기 전용
|
|
281
|
+
- 대기열 조작 불가
|
|
282
|
+
|
|
283
|
+
### Finder
|
|
284
|
+
- 태그는 Spotlight (mdfind) 사용, 인덱스 상태에 따라 성능 변동
|
|
285
|
+
|
|
286
|
+
### Safari
|
|
287
|
+
- 페이지 내용 읽기에는 Safari 개발자 메뉴에서 Apple 이벤트의 JavaScript 허용 필요
|
|
121
288
|
|
|
122
|
-
|
|
289
|
+
### Photos
|
|
290
|
+
- JXA: 앨범 생성 및 사진 추가 가능, 가져오기/삭제 불가
|
|
291
|
+
- Swift 브릿지 (macOS 26+): PhotoKit으로 가져오기/삭제 가능
|
|
123
292
|
|
|
124
|
-
|
|
125
|
-
-
|
|
126
|
-
-
|
|
127
|
-
- 비밀번호로 보호된 메모는 읽을 수 없음.
|
|
293
|
+
### Apple Intelligence
|
|
294
|
+
- macOS 26 (Tahoe) + Apple Silicon 필요
|
|
295
|
+
- `npm run swift-build`로 브릿지 바이너리 빌드
|
|
128
296
|
|
|
129
297
|
## 라이선스
|
|
130
298
|
|
package/README.md
CHANGED
|
@@ -1,14 +1,19 @@
|
|
|
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
|
+
- **103 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 + Swift bridge** — JXA for core automation, EventKit/PhotoKit via Swift for advanced features
|
|
13
|
+
- **Recurring events/reminders** — create recurrence rules via EventKit (macOS 26+ Swift bridge)
|
|
14
|
+
- **Photos import/delete** — import and delete photos via PhotoKit (macOS 26+ Swift bridge)
|
|
15
|
+
- **Apple Intelligence** — on-device summarization, rewriting, proofreading (macOS 26+)
|
|
16
|
+
- **One-click setup** — `setup_permissions` tool triggers all macOS permission prompts at once
|
|
12
17
|
- **stdio transport** — secure local communication, no network exposure
|
|
13
18
|
- **Safety annotations** — every tool tagged with readOnly/destructive hints
|
|
14
19
|
|
|
@@ -44,44 +49,202 @@ npm install
|
|
|
44
49
|
npm run build
|
|
45
50
|
```
|
|
46
51
|
|
|
47
|
-
Then point your MCP client to `node dist/index.js`.
|
|
48
|
-
|
|
49
52
|
## Tools
|
|
50
53
|
|
|
51
|
-
### Notes
|
|
54
|
+
### Notes (12 tools)
|
|
55
|
+
|
|
56
|
+
| Tool | Description | Type |
|
|
57
|
+
|------|-------------|------|
|
|
58
|
+
| `list_notes` | List all notes with title, folder, dates | read |
|
|
59
|
+
| `search_notes` | Search by keyword in title and body | read |
|
|
60
|
+
| `read_note` | Read full content by ID | read |
|
|
61
|
+
| `create_note` | Create a note with HTML body | write |
|
|
62
|
+
| `update_note` | Replace entire body | destructive |
|
|
63
|
+
| `delete_note` | Delete (moved to Recently Deleted) | destructive |
|
|
64
|
+
| `move_note` | Move to another folder | destructive |
|
|
65
|
+
| `list_folders` | List folders with note counts | read |
|
|
66
|
+
| `create_folder` | Create a new folder | write |
|
|
67
|
+
| `scan_notes` | Bulk scan with metadata and preview | read |
|
|
68
|
+
| `compare_notes` | Compare 2-5 notes side by side | read |
|
|
69
|
+
| `bulk_move_notes` | Move multiple notes at once | destructive |
|
|
70
|
+
|
|
71
|
+
### Reminders (11 tools)
|
|
72
|
+
|
|
73
|
+
| Tool | Description | Type |
|
|
74
|
+
|------|-------------|------|
|
|
75
|
+
| `list_reminder_lists` | List all lists with counts | read |
|
|
76
|
+
| `list_reminders` | Filter by list/completed | read |
|
|
77
|
+
| `read_reminder` | Full details by ID | read |
|
|
78
|
+
| `create_reminder` | Create with due date/priority | write |
|
|
79
|
+
| `update_reminder` | Update properties | destructive |
|
|
80
|
+
| `complete_reminder` | Mark complete/incomplete | write |
|
|
81
|
+
| `delete_reminder` | Delete permanently | destructive |
|
|
82
|
+
| `search_reminders` | Search by keyword in name/body | read |
|
|
83
|
+
| `create_reminder_list` | Create a new reminder list | write |
|
|
84
|
+
| `delete_reminder_list` | Delete a reminder list | destructive |
|
|
85
|
+
| `create_recurring_reminder` | Create with recurrence rule (Swift/EventKit) | write |
|
|
86
|
+
|
|
87
|
+
### Calendar (10 tools)
|
|
88
|
+
|
|
89
|
+
| Tool | Description | Type |
|
|
90
|
+
|------|-------------|------|
|
|
91
|
+
| `list_calendars` | List calendars with name/color | read |
|
|
92
|
+
| `list_events` | Events in date range with pagination | read |
|
|
93
|
+
| `read_event` | Full details with attendees | read |
|
|
94
|
+
| `create_event` | Create with location/description | write |
|
|
95
|
+
| `update_event` | Update properties | destructive |
|
|
96
|
+
| `delete_event` | Delete permanently | destructive |
|
|
97
|
+
| `search_events` | Keyword search in date range | read |
|
|
98
|
+
| `get_upcoming_events` | Next N events from now | read |
|
|
99
|
+
| `today_events` | All events for today | read |
|
|
100
|
+
| `create_recurring_event` | Create with recurrence rule (Swift/EventKit) | write |
|
|
101
|
+
|
|
102
|
+
### Contacts (10 tools)
|
|
103
|
+
|
|
104
|
+
| Tool | Description | Type |
|
|
105
|
+
|------|-------------|------|
|
|
106
|
+
| `list_contacts` | List with email/phone, pagination | read |
|
|
107
|
+
| `search_contacts` | Search by name, email, phone, or org | read |
|
|
108
|
+
| `read_contact` | Full details (emails, phones, addresses) | read |
|
|
109
|
+
| `create_contact` | Create with email/phone/org | write |
|
|
110
|
+
| `update_contact` | Update properties | destructive |
|
|
111
|
+
| `delete_contact` | Delete permanently | destructive |
|
|
112
|
+
| `list_groups` | List contact groups | read |
|
|
113
|
+
| `add_contact_email` | Add email to existing contact | write |
|
|
114
|
+
| `add_contact_phone` | Add phone to existing contact | write |
|
|
115
|
+
| `list_group_members` | List contacts in a group | read |
|
|
116
|
+
|
|
117
|
+
### Mail (9 tools)
|
|
52
118
|
|
|
53
119
|
| Tool | Description | Type |
|
|
54
120
|
|------|-------------|------|
|
|
55
|
-
| `
|
|
56
|
-
| `
|
|
57
|
-
| `
|
|
58
|
-
| `
|
|
59
|
-
| `
|
|
60
|
-
| `
|
|
61
|
-
| `
|
|
121
|
+
| `list_mailboxes` | List mailboxes with unread counts | read |
|
|
122
|
+
| `list_messages` | Recent messages in a mailbox | read |
|
|
123
|
+
| `read_message` | Full message content | read |
|
|
124
|
+
| `search_messages` | Search by subject/sender | read |
|
|
125
|
+
| `mark_message_read` | Mark read/unread | write |
|
|
126
|
+
| `flag_message` | Flag/unflag a message | write |
|
|
127
|
+
| `get_unread_count` | Total unread across all mailboxes | read |
|
|
128
|
+
| `move_message` | Move message to another mailbox | destructive |
|
|
129
|
+
| `list_accounts` | List all mail accounts | read |
|
|
62
130
|
|
|
63
|
-
###
|
|
131
|
+
### Music (9 tools)
|
|
64
132
|
|
|
65
133
|
| Tool | Description | Type |
|
|
66
134
|
|------|-------------|------|
|
|
67
|
-
| `
|
|
135
|
+
| `list_playlists` | List playlists with track counts | read |
|
|
136
|
+
| `list_tracks` | Tracks in a playlist | read |
|
|
137
|
+
| `now_playing` | Current track and playback state | read |
|
|
138
|
+
| `playback_control` | Play, pause, next, previous | write |
|
|
139
|
+
| `search_tracks` | Search by name/artist/album | read |
|
|
140
|
+
| `play_track` | Play a specific track by name | write |
|
|
141
|
+
| `play_playlist` | Start playing a playlist | write |
|
|
142
|
+
| `get_track_info` | Detailed track metadata | read |
|
|
143
|
+
| `set_shuffle` | Set shuffle and repeat mode | write |
|
|
144
|
+
|
|
145
|
+
### Finder (8 tools)
|
|
146
|
+
|
|
147
|
+
| Tool | Description | Type |
|
|
148
|
+
|------|-------------|------|
|
|
149
|
+
| `search_files` | Spotlight search in a folder | read |
|
|
150
|
+
| `get_file_info` | File size, dates, kind, tags | read |
|
|
151
|
+
| `set_file_tags` | Set Finder tags on a file | destructive |
|
|
152
|
+
| `recent_files` | Recently modified files | read |
|
|
153
|
+
| `list_directory` | List files in a directory | read |
|
|
154
|
+
| `move_file` | Move or rename a file | destructive |
|
|
155
|
+
| `trash_file` | Move file to Trash | destructive |
|
|
68
156
|
| `create_folder` | Create a new folder | write |
|
|
69
157
|
|
|
70
|
-
###
|
|
158
|
+
### Safari (8 tools)
|
|
71
159
|
|
|
72
160
|
| Tool | Description | Type |
|
|
73
161
|
|------|-------------|------|
|
|
74
|
-
| `
|
|
75
|
-
| `
|
|
76
|
-
| `
|
|
162
|
+
| `list_tabs` | List all open tabs across windows | read |
|
|
163
|
+
| `read_page_content` | Read text content of a page | read |
|
|
164
|
+
| `get_current_tab` | Get the active tab URL and title | read |
|
|
165
|
+
| `open_url` | Open a URL in Safari | write |
|
|
166
|
+
| `close_tab` | Close a specific tab | destructive |
|
|
167
|
+
| `activate_tab` | Switch to a specific tab | write |
|
|
168
|
+
| `run_javascript` | Execute JavaScript in a tab | write |
|
|
169
|
+
| `search_tabs` | Search tabs by title or URL | read |
|
|
170
|
+
|
|
171
|
+
### System (9 tools)
|
|
172
|
+
|
|
173
|
+
| Tool | Description | Type |
|
|
174
|
+
|------|-------------|------|
|
|
175
|
+
| `get_clipboard` | Read clipboard contents | read |
|
|
176
|
+
| `set_clipboard` | Write to clipboard | write |
|
|
177
|
+
| `get_volume` | Get system volume level | read |
|
|
178
|
+
| `set_volume` | Set system volume level | write |
|
|
179
|
+
| `toggle_dark_mode` | Toggle dark/light mode | write |
|
|
180
|
+
| `get_frontmost_app` | Get the frontmost application | read |
|
|
181
|
+
| `list_running_apps` | List all running applications | read |
|
|
182
|
+
| `get_screen_info` | Get display information | read |
|
|
183
|
+
| `show_notification` | Display a system notification | write |
|
|
184
|
+
|
|
185
|
+
### Photos (9 tools)
|
|
186
|
+
|
|
187
|
+
| Tool | Description | Type |
|
|
188
|
+
|------|-------------|------|
|
|
189
|
+
| `list_albums` | List photo albums | read |
|
|
190
|
+
| `list_photos` | List photos in an album | read |
|
|
191
|
+
| `search_photos` | Search photos by keyword | read |
|
|
192
|
+
| `get_photo_info` | Detailed photo metadata | read |
|
|
193
|
+
| `list_favorites` | List favorite photos | read |
|
|
194
|
+
| `create_album` | Create a new album | write |
|
|
195
|
+
| `add_to_album` | Add photos to an album | write |
|
|
196
|
+
| `import_photo` | Import from file path (Swift/PhotoKit) | write |
|
|
197
|
+
| `delete_photos` | Delete photos by ID (Swift/PhotoKit) | destructive |
|
|
198
|
+
|
|
199
|
+
### Shortcuts (4 tools)
|
|
200
|
+
|
|
201
|
+
| Tool | Description | Type |
|
|
202
|
+
|------|-------------|------|
|
|
203
|
+
| `list_shortcuts` | List available Shortcuts | read |
|
|
204
|
+
| `run_shortcut` | Run a Shortcut by name | write |
|
|
205
|
+
| `search_shortcuts` | Search shortcuts by name | read |
|
|
206
|
+
| `get_shortcut_detail` | Get shortcut details/actions | read |
|
|
207
|
+
|
|
208
|
+
### Apple Intelligence (3 tools)
|
|
209
|
+
|
|
210
|
+
Requires macOS 26+ with Apple Silicon. Graceful error on unsupported systems.
|
|
211
|
+
|
|
212
|
+
| Tool | Description | Type |
|
|
213
|
+
|------|-------------|------|
|
|
214
|
+
| `summarize_text` | On-device summarization | read |
|
|
215
|
+
| `rewrite_text` | Rewrite in specified tone | read |
|
|
216
|
+
| `proofread_text` | Grammar/spelling correction | read |
|
|
217
|
+
|
|
218
|
+
## Resources
|
|
219
|
+
|
|
220
|
+
MCP Resources expose live data from Apple apps as URIs.
|
|
221
|
+
|
|
222
|
+
| URI | Description |
|
|
223
|
+
|-----|-------------|
|
|
224
|
+
| `notes://recent` | 10 most recent notes |
|
|
225
|
+
| `notes://recent/{count}` | Recent notes (configurable count) |
|
|
226
|
+
| `calendar://today` | Today's calendar events |
|
|
227
|
+
| `reminders://due` | Overdue reminders |
|
|
77
228
|
|
|
78
229
|
## Prompts
|
|
79
230
|
|
|
80
|
-
|
|
231
|
+
### Per-App
|
|
232
|
+
- **organize-notes** — Classify notes by topic, create folders, move
|
|
233
|
+
- **find-duplicates** — Find similar notes, compare, suggest cleanup
|
|
234
|
+
- **weekly-review** — Summarize past week's notes
|
|
235
|
+
- **organize-reminders** — Scan, identify overdue/completed, cleanup
|
|
236
|
+
- **daily-review** — Today's due reminders with priorities
|
|
237
|
+
- **schedule-review** — Upcoming events, conflicts, optimizations
|
|
238
|
+
- **meeting-prep** — Event details + related notes for meeting prep
|
|
81
239
|
|
|
82
|
-
|
|
83
|
-
- **
|
|
84
|
-
- **weekly-
|
|
240
|
+
### Cross-Module
|
|
241
|
+
- **daily-briefing** — Today's events + due reminders + recent notes
|
|
242
|
+
- **weekly-digest** — Past N days: events + notes + reminders combined
|
|
243
|
+
- **meeting-notes-to-reminders** — Extract action items from meeting notes, create reminders
|
|
244
|
+
- **event-follow-up** — Create follow-up note and reminders after a meeting
|
|
245
|
+
- **research-with-safari** — Browse with Safari + save findings to Notes
|
|
246
|
+
- **focus-session** — Calendar + Reminders + Music for focused work
|
|
247
|
+
- **file-organizer** — Organize files with Finder + track in Notes
|
|
85
248
|
|
|
86
249
|
## Configuration
|
|
87
250
|
|
|
@@ -91,16 +254,45 @@ Use these guided workflows to organize your notes:
|
|
|
91
254
|
|
|
92
255
|
## Requirements
|
|
93
256
|
|
|
94
|
-
- macOS (Apple
|
|
257
|
+
- macOS (Apple apps require macOS)
|
|
95
258
|
- Node.js >= 18
|
|
96
|
-
- First run will prompt for Automation permission to
|
|
259
|
+
- First run will prompt for Automation permission for each app — use `setup_permissions` tool to grant all at once
|
|
260
|
+
- Apple Intelligence tools require macOS 26+ with Apple Silicon
|
|
97
261
|
|
|
98
262
|
## Limitations
|
|
99
263
|
|
|
100
|
-
|
|
101
|
-
-
|
|
102
|
-
-
|
|
103
|
-
- Password-protected notes
|
|
264
|
+
### Notes
|
|
265
|
+
- Move copies and deletes (new ID, reset dates, lost attachments)
|
|
266
|
+
- Update replaces entire body. Read first to preserve content.
|
|
267
|
+
- Password-protected notes unreadable.
|
|
268
|
+
|
|
269
|
+
### Reminders / Calendar
|
|
270
|
+
- JXA recurrence rules are read-only — use `create_recurring_event`/`create_recurring_reminder` (Swift/EventKit) to create recurring items
|
|
271
|
+
- Calendar attendees are read-only
|
|
272
|
+
|
|
273
|
+
### Contacts
|
|
274
|
+
- Custom fields not accessible
|
|
275
|
+
|
|
276
|
+
### Mail
|
|
277
|
+
- Content truncated to 5000 characters by default (configurable via `maxLength` parameter)
|
|
278
|
+
|
|
279
|
+
### Music
|
|
280
|
+
- Smart playlists are read-only
|
|
281
|
+
- No queue manipulation
|
|
282
|
+
|
|
283
|
+
### Finder
|
|
284
|
+
- Tags use Spotlight (mdfind), performance varies with index state
|
|
285
|
+
|
|
286
|
+
### Safari
|
|
287
|
+
- Reading page content requires Allow JavaScript from Apple Events in Safari Developer menu
|
|
288
|
+
|
|
289
|
+
### Photos
|
|
290
|
+
- JXA: albums can be created and photos added, but no import/delete
|
|
291
|
+
- Swift bridge (macOS 26+): full import and delete via PhotoKit
|
|
292
|
+
|
|
293
|
+
### Apple Intelligence
|
|
294
|
+
- Requires macOS 26 (Tahoe) + Apple Silicon
|
|
295
|
+
- Run `npm run swift-build` to compile the bridge binary
|
|
104
296
|
|
|
105
297
|
## License
|
|
106
298
|
|