@heznpc/imcp 0.6.0 → 0.7.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/README.ko.md +12 -3
- package/README.md +12 -3
- package/dist/cross/prompts.js +236 -0
- package/dist/cross/prompts.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/system/scripts.d.ts +1 -0
- package/dist/system/scripts.js +12 -1
- package/dist/system/scripts.js.map +1 -1
- package/dist/system/tools.js +22 -1
- package/dist/system/tools.js.map +1 -1
- package/package.json +1 -1
package/README.ko.md
CHANGED
|
@@ -6,8 +6,8 @@ Apple 생태계 전체를 위한 MCP 서버 — Notes, Reminders, Calendar, Cont
|
|
|
6
6
|
|
|
7
7
|
## 특징
|
|
8
8
|
|
|
9
|
-
- **
|
|
10
|
-
- **
|
|
9
|
+
- **104개 도구** (12개 모듈) — Apple 앱 CRUD + 시스템 제어 + Apple Intelligence
|
|
10
|
+
- **20개 프롬프트** — 앱별 워크플로우 + 크로스 모듈 + 개발자 워크플로우 (dev-session, debug-loop, build-log)
|
|
11
11
|
- **4개 MCP 리소스** — Notes, Calendar, Reminders 실시간 데이터 URI
|
|
12
12
|
- **JXA + Swift 브릿지** — JXA로 기본 자동화, EventKit/PhotoKit으로 고급 기능
|
|
13
13
|
- **반복 이벤트/리마인더** — EventKit으로 반복 규칙 생성 (macOS 26+ Swift 브릿지)
|
|
@@ -168,7 +168,7 @@ npm run build
|
|
|
168
168
|
| `run_javascript` | 탭에서 JavaScript 실행 | 쓰기 |
|
|
169
169
|
| `search_tabs` | 제목/URL로 탭 검색 | 읽기 |
|
|
170
170
|
|
|
171
|
-
### System (
|
|
171
|
+
### System (10개)
|
|
172
172
|
|
|
173
173
|
| 도구 | 설명 | 타입 |
|
|
174
174
|
|------|------|------|
|
|
@@ -181,6 +181,7 @@ npm run build
|
|
|
181
181
|
| `list_running_apps` | 실행 중인 앱 목록 | 읽기 |
|
|
182
182
|
| `get_screen_info` | 디스플레이 정보 | 읽기 |
|
|
183
183
|
| `show_notification` | 시스템 알림 표시 | 쓰기 |
|
|
184
|
+
| `capture_screenshot` | 스크린샷 캡처 (전체/윈도우/선택) | 쓰기 |
|
|
184
185
|
|
|
185
186
|
### Photos (9개)
|
|
186
187
|
|
|
@@ -246,6 +247,14 @@ MCP 리소스는 Apple 앱의 실시간 데이터를 URI로 제공합니다.
|
|
|
246
247
|
- **focus-session** — Calendar + Reminders + Music으로 집중 세션
|
|
247
248
|
- **file-organizer** — Finder로 파일 정리 + Notes에 기록
|
|
248
249
|
|
|
250
|
+
### 개발자 워크플로우
|
|
251
|
+
- **dev-session** — 프로젝트 스캔, 스펙 확인, 문서 리서치, 세션 노트 생성
|
|
252
|
+
- **debug-loop** — Safari/클립보드에서 에러 캡처, 코드 위치 특정, 버그 로그, Fix 태스크 생성
|
|
253
|
+
- **screen-capture-flow** — 스크린샷 → Photos 가져오기 → 주석 노트 생성
|
|
254
|
+
- **app-release-prep** — 캘린더 일정 + Notes 체인지로그 + Reminders 체크리스트
|
|
255
|
+
- **idea-to-task** — 아이디어 → 태스크 분해 → Reminders + Calendar 타임 블록
|
|
256
|
+
- **build-log** — 빌드 결과 분석, 에러 로그 또는 Music으로 성공 축하
|
|
257
|
+
|
|
249
258
|
## 설정
|
|
250
259
|
|
|
251
260
|
| 환경 변수 | 기본값 | 설명 |
|
package/README.md
CHANGED
|
@@ -6,8 +6,8 @@ MCP server for the entire Apple ecosystem — Notes, Reminders, Calendar, Contac
|
|
|
6
6
|
|
|
7
7
|
## Features
|
|
8
8
|
|
|
9
|
-
- **
|
|
10
|
-
- **
|
|
9
|
+
- **104 tools** across 12 modules — full CRUD for Apple apps + system control + Apple Intelligence
|
|
10
|
+
- **20 prompts** — per-app workflows + cross-module + developer workflows (dev-session, debug-loop, build-log)
|
|
11
11
|
- **4 MCP Resources** — live data URIs for notes, calendar, and reminders
|
|
12
12
|
- **JXA + Swift bridge** — JXA for core automation, EventKit/PhotoKit via Swift for advanced features
|
|
13
13
|
- **Recurring events/reminders** — create recurrence rules via EventKit (macOS 26+ Swift bridge)
|
|
@@ -168,7 +168,7 @@ npm run build
|
|
|
168
168
|
| `run_javascript` | Execute JavaScript in a tab | write |
|
|
169
169
|
| `search_tabs` | Search tabs by title or URL | read |
|
|
170
170
|
|
|
171
|
-
### System (
|
|
171
|
+
### System (10 tools)
|
|
172
172
|
|
|
173
173
|
| Tool | Description | Type |
|
|
174
174
|
|------|-------------|------|
|
|
@@ -181,6 +181,7 @@ npm run build
|
|
|
181
181
|
| `list_running_apps` | List all running applications | read |
|
|
182
182
|
| `get_screen_info` | Get display information | read |
|
|
183
183
|
| `show_notification` | Display a system notification | write |
|
|
184
|
+
| `capture_screenshot` | Take a screenshot (fullscreen/window/selection) | write |
|
|
184
185
|
|
|
185
186
|
### Photos (9 tools)
|
|
186
187
|
|
|
@@ -246,6 +247,14 @@ MCP Resources expose live data from Apple apps as URIs.
|
|
|
246
247
|
- **focus-session** — Calendar + Reminders + Music for focused work
|
|
247
248
|
- **file-organizer** — Organize files with Finder + track in Notes
|
|
248
249
|
|
|
250
|
+
### Developer Workflows
|
|
251
|
+
- **dev-session** — Scan project, check specs, research docs, create session notes
|
|
252
|
+
- **debug-loop** — Capture errors from Safari/clipboard, locate code, log bugs, create fix tasks
|
|
253
|
+
- **screen-capture-flow** — Screenshot → Photos import → annotated note
|
|
254
|
+
- **app-release-prep** — Calendar dates + changelog from Notes + Reminders checklist
|
|
255
|
+
- **idea-to-task** — Break idea into tasks → Reminders + Calendar time blocks
|
|
256
|
+
- **build-log** — Analyze build output, log errors or celebrate success with Music
|
|
257
|
+
|
|
249
258
|
## Configuration
|
|
250
259
|
|
|
251
260
|
| Environment Variable | Default | Description |
|
package/dist/cross/prompts.js
CHANGED
|
@@ -173,5 +173,241 @@ export function registerCrossPrompts(server) {
|
|
|
173
173
|
|
|
174
174
|
중요: 파일 삭제/이동은 하지 말고, 태그 적용 전에 반드시 확인을 받아.`);
|
|
175
175
|
});
|
|
176
|
+
server.prompt("dev-session", { projectPath: z.string().describe("Project directory path") }, ({ projectPath }) => {
|
|
177
|
+
return userPrompt("Developer session setup: scan project, check specs, research docs, log to notes.", `"${projectPath}" 프로젝트로 개발 세션을 시작해줘.
|
|
178
|
+
|
|
179
|
+
다음 단계를 반드시 iMcp 도구를 사용해서 실행해:
|
|
180
|
+
|
|
181
|
+
1. **프로젝트 구조 파악**: list_directory("${projectPath}")로 프로젝트 루트 확인
|
|
182
|
+
- search_files로 주요 파일 패턴 검색 (package.json, Makefile, README 등)
|
|
183
|
+
- get_file_info로 최근 수정된 파일 확인
|
|
184
|
+
- recent_files("${projectPath}", days: 1)로 오늘 작업한 파일 추적
|
|
185
|
+
|
|
186
|
+
2. **스펙/컨텍스트 확인**: search_notes로 프로젝트 관련 메모 검색
|
|
187
|
+
- 프로젝트명, 주요 키워드로 검색
|
|
188
|
+
- 찾은 메모가 있으면 read_note로 전체 내용 확인
|
|
189
|
+
|
|
190
|
+
3. **참고 자료 수집**: list_tabs로 Safari에 열린 관련 탭 확인
|
|
191
|
+
- 관련 문서가 있으면 read_page_content로 핵심 내용 추출
|
|
192
|
+
|
|
193
|
+
4. **관련 리마인더 확인**: search_reminders로 프로젝트 관련 할 일 조회
|
|
194
|
+
- get_upcoming_events로 관련 미팅/데드라인 확인
|
|
195
|
+
|
|
196
|
+
5. **세션 노트 생성**: create_note로 개발 세션 노트를 생성해:
|
|
197
|
+
- 제목: "[Dev] ${projectPath.split("/").pop()} - {날짜 시간}"
|
|
198
|
+
- 프로젝트 구조 요약
|
|
199
|
+
- 오늘 작업할 내용
|
|
200
|
+
- 관련 메모/리마인더 링크
|
|
201
|
+
- 참고 URL 목록
|
|
202
|
+
|
|
203
|
+
6. 컨텍스트 요약을 나에게 브리핑해줘:
|
|
204
|
+
- 프로젝트 현재 상태
|
|
205
|
+
- 오늘의 할 일 우선순위
|
|
206
|
+
- 주의할 사항
|
|
207
|
+
|
|
208
|
+
중요: 실제 파일시스템과 Apple 앱 데이터를 조회해서 정확한 컨텍스트를 구성해.`);
|
|
209
|
+
});
|
|
210
|
+
server.prompt("debug-loop", {
|
|
211
|
+
errorMessage: z.string().optional().describe("Error message or bug description"),
|
|
212
|
+
projectPath: z.string().optional().describe("Project directory path"),
|
|
213
|
+
}, ({ errorMessage, projectPath }) => {
|
|
214
|
+
const errorCtx = errorMessage ? `\n에러 메시지: "${errorMessage}"` : "";
|
|
215
|
+
const pathCtx = projectPath ? `\n프로젝트 경로: "${projectPath}"` : "";
|
|
216
|
+
return userPrompt("Debug loop: capture errors, locate code, log bugs, create fix tasks.", `디버깅 루프를 시작해줘.${errorCtx}${pathCtx}
|
|
217
|
+
|
|
218
|
+
다음 단계를 반드시 iMcp 도구를 사용해서 실행해:
|
|
219
|
+
|
|
220
|
+
1. **에러 수집**:
|
|
221
|
+
- Safari 탭 확인: list_tabs로 열린 탭 중 localhost/개발 서버 탭 찾기
|
|
222
|
+
- 관련 탭이 있으면 run_javascript로 콘솔 에러 캡처:
|
|
223
|
+
\`JSON.stringify(window.__consoleErrors || 'No captured errors')\`
|
|
224
|
+
- get_clipboard으로 클립보드에 복사된 에러 메시지 확인${projectPath ? `\n - recent_files("${projectPath}", days: 1)로 최근 수정 파일 확인` : ""}
|
|
225
|
+
|
|
226
|
+
2. **코드 위치 특정**:${projectPath ? `\n - search_files("${projectPath}", 에러 관련 키워드)로 관련 파일 검색` : ""}
|
|
227
|
+
- 에러 메시지에서 파일명/라인 번호 추출
|
|
228
|
+
- get_file_info로 해당 파일 정보 확인
|
|
229
|
+
|
|
230
|
+
3. **버그 로그 기록**: create_note로 버그 리포트 생성:
|
|
231
|
+
- 제목: "[Bug] {에러 요약} - {날짜}"
|
|
232
|
+
- 에러 메시지 전문
|
|
233
|
+
- 재현 경로 (추정)
|
|
234
|
+
- 관련 파일 목록
|
|
235
|
+
- 가능한 원인 분석
|
|
236
|
+
|
|
237
|
+
4. **Fix 태스크 생성**: create_reminder로 수정 태스크 생성:
|
|
238
|
+
- 제목: "[Fix] {에러 요약}"
|
|
239
|
+
- body: 버그 노트 참조, 수정 방향 제안
|
|
240
|
+
- priority: 에러 심각도에 따라 (1=critical, 5=medium, 9=low)
|
|
241
|
+
|
|
242
|
+
5. **결과 브리핑**:
|
|
243
|
+
- 발견된 에러 요약
|
|
244
|
+
- 가능한 원인 TOP 3
|
|
245
|
+
- 제안하는 수정 순서
|
|
246
|
+
- 추가 조사가 필요한 부분
|
|
247
|
+
|
|
248
|
+
중요: 에러 분석은 실제 데이터 기반으로. 추측만으로 판단하지 마.`);
|
|
249
|
+
});
|
|
250
|
+
server.prompt("screen-capture-flow", {
|
|
251
|
+
description: z.string().optional().describe("What to capture/document"),
|
|
252
|
+
}, ({ description }) => {
|
|
253
|
+
const desc = description ?? "작업 과정";
|
|
254
|
+
const timestamp = new Date().toISOString().replace(/[:.]/g, "-").slice(0, 19);
|
|
255
|
+
return userPrompt("Screen capture workflow: screenshot, save to Photos, create note with annotation.", `"${desc}" 화면 캡처 플로우를 시작해줘.
|
|
256
|
+
|
|
257
|
+
다음 단계를 반드시 iMcp 도구를 사용해서 실행해:
|
|
258
|
+
|
|
259
|
+
1. **현재 상태 파악**:
|
|
260
|
+
- get_frontmost_app으로 현재 활성 앱 확인
|
|
261
|
+
- get_screen_info로 디스플레이 정보 확인
|
|
262
|
+
|
|
263
|
+
2. **스크린샷 캡처**: capture_screenshot으로 화면 캡처:
|
|
264
|
+
- path: "/tmp/imcp-capture-${timestamp}.png"
|
|
265
|
+
- region: "fullscreen" (또는 필요에 따라 "window"/"selection")
|
|
266
|
+
- 필요하면 여러 장 캡처 (다른 앱/화면 전환 후)
|
|
267
|
+
|
|
268
|
+
3. **Photos에 정리**:
|
|
269
|
+
- 캡처 파일을 import_photo로 Photos 라이브러리에 가져오기
|
|
270
|
+
- create_album으로 "[캡처] ${desc}" 앨범 생성 (없으면)
|
|
271
|
+
- add_to_album으로 캡처한 사진을 앨범에 추가
|
|
272
|
+
|
|
273
|
+
4. **캡처 메모 작성**: create_note로 캡처 문서 생성:
|
|
274
|
+
- 제목: "[캡처] ${desc} - {날짜}"
|
|
275
|
+
- 캡처 시점의 활성 앱 정보
|
|
276
|
+
- 각 스크린샷 설명
|
|
277
|
+
- 캡처 의도/맥락: "${desc}"
|
|
278
|
+
- 파일 경로 목록
|
|
279
|
+
|
|
280
|
+
5. **알림**: show_notification으로 캡처 완료 알림
|
|
281
|
+
|
|
282
|
+
중요: 캡처 전에 준비가 필요하면 나에게 알려줘. 민감한 정보가 포함될 수 있으니 확인 후 진행.`);
|
|
283
|
+
});
|
|
284
|
+
server.prompt("app-release-prep", {
|
|
285
|
+
appName: z.string().describe("Application/project name"),
|
|
286
|
+
version: z.string().optional().describe("Target version number"),
|
|
287
|
+
}, ({ appName, version }) => {
|
|
288
|
+
const ver = version ?? "next";
|
|
289
|
+
return userPrompt("Release preparation: check schedule, collect changelog, create checklist, trigger build.", `"${appName}" v${ver} 릴리즈 준비를 해줘.
|
|
290
|
+
|
|
291
|
+
다음 단계를 반드시 iMcp 도구를 사용해서 실행해:
|
|
292
|
+
|
|
293
|
+
1. **릴리즈 일정 확인**:
|
|
294
|
+
- search_events("${appName} release", 향후 30일)로 릴리즈 일정 검색
|
|
295
|
+
- get_upcoming_events로 가까운 마감일 확인
|
|
296
|
+
- today_events로 오늘 관련 일정 확인
|
|
297
|
+
|
|
298
|
+
2. **체인지로그 수집**:
|
|
299
|
+
- search_notes("${appName}")로 프로젝트 관련 메모 검색
|
|
300
|
+
- search_notes("changelog"), search_notes("release") 키워드로도 검색
|
|
301
|
+
- 찾은 메모를 read_note로 읽어서 변경사항 수집
|
|
302
|
+
|
|
303
|
+
3. **미완료 태스크 확인**:
|
|
304
|
+
- search_reminders("${appName}")로 관련 리마인더 조회
|
|
305
|
+
- list_reminders(completed: false)로 미완료 항목 확인
|
|
306
|
+
- 릴리즈 블로커가 있는지 분류
|
|
307
|
+
|
|
308
|
+
4. **릴리즈 체크리스트 생성**: create_reminder_list("${appName} v${ver} Release")
|
|
309
|
+
그리고 다음 항목을 create_reminder로 생성:
|
|
310
|
+
- [ ] 코드 프리즈 확인
|
|
311
|
+
- [ ] 테스트 통과 확인
|
|
312
|
+
- [ ] 체인지로그 작성
|
|
313
|
+
- [ ] 버전 번호 업데이트
|
|
314
|
+
- [ ] 빌드 생성
|
|
315
|
+
- [ ] QA 사인오프
|
|
316
|
+
- [ ] 배포
|
|
317
|
+
- [ ] 릴리즈 노트 발행
|
|
318
|
+
|
|
319
|
+
5. **빌드 트리거 (선택)**:
|
|
320
|
+
- search_shortcuts("build")로 빌드 관련 단축어 확인
|
|
321
|
+
- 빌드 단축어가 있으면 run_shortcut으로 실행할지 나에게 확인
|
|
322
|
+
|
|
323
|
+
6. **릴리즈 노트 초안**: create_note로 릴리즈 노트 초안 생성:
|
|
324
|
+
- 제목: "[Release] ${appName} v${ver}"
|
|
325
|
+
- 주요 변경사항
|
|
326
|
+
- 버그 수정
|
|
327
|
+
- 알려진 이슈
|
|
328
|
+
- 업그레이드 가이드 (필요 시)
|
|
329
|
+
|
|
330
|
+
중요: 빌드 트리거 전에 반드시 확인을 받아. 체크리스트 항목은 상황에 맞게 조정해.`);
|
|
331
|
+
});
|
|
332
|
+
server.prompt("idea-to-task", { idea: z.string().describe("Idea or feature description to break down into tasks") }, ({ idea }) => {
|
|
333
|
+
return userPrompt("Idea to task pipeline: capture idea in Notes, decompose into tasks, create reminders, block calendar.", `"${idea}" 아이디어를 태스크로 분해해줘.
|
|
334
|
+
|
|
335
|
+
다음 단계를 반드시 iMcp 도구를 사용해서 실행해:
|
|
336
|
+
|
|
337
|
+
1. **아이디어 기록**: create_note로 아이디어 노트 생성:
|
|
338
|
+
- 제목: "[Idea] ${idea.slice(0, 50)}"
|
|
339
|
+
- 아이디어 전문
|
|
340
|
+
- 배경/동기
|
|
341
|
+
- 예상 결과물
|
|
342
|
+
|
|
343
|
+
2. **태스크 분해**: 아이디어를 구현 가능한 태스크로 분해해:
|
|
344
|
+
- 각 태스크는 2-4시간 단위로 분해
|
|
345
|
+
- 의존성/선후관계 파악
|
|
346
|
+
- 우선순위 지정 (1=높음, 5=보통, 9=낮음)
|
|
347
|
+
- 결과를 나에게 보여주고 확인을 받아
|
|
348
|
+
|
|
349
|
+
3. **리마인더 생성**: 확인 후 create_reminder로 각 태스크 생성:
|
|
350
|
+
- 제목: "[Task] {태스크명}"
|
|
351
|
+
- body: 상세 설명 + 아이디어 노트 참조
|
|
352
|
+
- priority: 우선순위
|
|
353
|
+
- dueDate: 예상 완료일 (의존성 고려)
|
|
354
|
+
|
|
355
|
+
4. **개발 일정 블로킹**: create_event로 캘린더에 작업 시간 블록:
|
|
356
|
+
- summary: "[Dev] {태스크명}"
|
|
357
|
+
- 태스크별 예상 소요 시간만큼 블록
|
|
358
|
+
- 기존 일정과 겹치지 않는 시간대로:
|
|
359
|
+
get_upcoming_events로 기존 일정 확인 후 빈 시간에 배치
|
|
360
|
+
|
|
361
|
+
5. **결과 요약**:
|
|
362
|
+
- 총 태스크 수
|
|
363
|
+
- 예상 총 소요 시간
|
|
364
|
+
- 타임라인 제안
|
|
365
|
+
- 리스크/의존성 경고
|
|
366
|
+
|
|
367
|
+
중요: 태스크 분해 결과를 먼저 보여주고 확인받은 후에 리마인더/캘린더를 생성해.`);
|
|
368
|
+
});
|
|
369
|
+
server.prompt("build-log", { projectPath: z.string().describe("Project build output directory or project root") }, ({ projectPath }) => {
|
|
370
|
+
return userPrompt("Build log analysis: check build output, log errors to Notes, celebrate success with Music.", `"${projectPath}" 빌드 결과를 분석해줘.
|
|
371
|
+
|
|
372
|
+
다음 단계를 반드시 iMcp 도구를 사용해서 실행해:
|
|
373
|
+
|
|
374
|
+
1. **빌드 아웃풋 확인**:
|
|
375
|
+
- list_directory("${projectPath}")로 프로젝트 구조 확인
|
|
376
|
+
- search_files("${projectPath}", "build")로 빌드 아웃풋 디렉토리 찾기
|
|
377
|
+
- recent_files("${projectPath}", days: 1)로 방금 생성/수정된 파일 확인
|
|
378
|
+
- get_clipboard으로 클립보드에 빌드 로그가 있는지 확인
|
|
379
|
+
|
|
380
|
+
2. **결과 분석**:
|
|
381
|
+
- 빌드 성공/실패 판단
|
|
382
|
+
- 에러가 있으면 에러 메시지 분류
|
|
383
|
+
- 경고(warning) 목록 정리
|
|
384
|
+
|
|
385
|
+
3. **실패 시 → 에러 로그 기록**:
|
|
386
|
+
- create_note로 에러 로그 생성:
|
|
387
|
+
제목: "[Build Error] ${projectPath.split("/").pop()} - {날짜}"
|
|
388
|
+
- 에러 메시지 전문
|
|
389
|
+
- 관련 파일 목록
|
|
390
|
+
- 가능한 원인 분석
|
|
391
|
+
- create_reminder로 수정 태스크 생성:
|
|
392
|
+
제목: "[Fix Build] ${projectPath.split("/").pop()}"
|
|
393
|
+
priority: 1 (긴급)
|
|
394
|
+
|
|
395
|
+
4. **성공 시 → 축하 🎉**:
|
|
396
|
+
- show_notification("빌드 성공!", {title: "${projectPath.split("/").pop()}"})
|
|
397
|
+
- now_playing으로 현재 음악 상태 확인
|
|
398
|
+
- 음악이 안 틀어져 있으면:
|
|
399
|
+
list_playlists로 재생목록 확인 →
|
|
400
|
+
play_playlist로 좋아하는 플레이리스트 재생
|
|
401
|
+
- create_note로 빌드 성공 로그:
|
|
402
|
+
제목: "[Build OK] ${projectPath.split("/").pop()} - {날짜}"
|
|
403
|
+
- 빌드 아웃풋 요약
|
|
404
|
+
- 생성된 파일 목록
|
|
405
|
+
|
|
406
|
+
5. **요약 브리핑**:
|
|
407
|
+
- 빌드 결과 (성공/실패)
|
|
408
|
+
- 다음 단계 제안
|
|
409
|
+
|
|
410
|
+
중요: 빌드 결과는 실제 파일 시스템 데이터 기반으로 판단해.`);
|
|
411
|
+
});
|
|
176
412
|
}
|
|
177
413
|
//# sourceMappingURL=prompts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/cross/prompts.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/cross/prompts.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
package/dist/system/scripts.d.ts
CHANGED
|
@@ -6,4 +6,5 @@ export declare function toggleDarkModeScript(): string;
|
|
|
6
6
|
export declare function getFrontmostAppScript(): string;
|
|
7
7
|
export declare function listRunningAppsScript(): string;
|
|
8
8
|
export declare function getScreenInfoScript(): string;
|
|
9
|
+
export declare function captureScreenshotScript(path: string, region?: string): string;
|
|
9
10
|
export declare function showNotificationScript(message: string, title?: string, subtitle?: string, sound?: string): string;
|
package/dist/system/scripts.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// JXA scripts for macOS system automation.
|
|
2
|
-
import { esc } from "../shared/esc.js";
|
|
2
|
+
import { esc, escJxaShell } from "../shared/esc.js";
|
|
3
3
|
export function getClipboardScript() {
|
|
4
4
|
return `
|
|
5
5
|
const app = Application.currentApplication();
|
|
@@ -106,6 +106,17 @@ export function getScreenInfoScript() {
|
|
|
106
106
|
JSON.stringify({displays: displays});
|
|
107
107
|
`;
|
|
108
108
|
}
|
|
109
|
+
export function captureScreenshotScript(path, region) {
|
|
110
|
+
const regionFlag = region === "selection" ? " -i" : region === "window" ? " -w" : "";
|
|
111
|
+
const safePath = escJxaShell(path);
|
|
112
|
+
return `
|
|
113
|
+
const app = Application.currentApplication();
|
|
114
|
+
app.includeStandardAdditions = true;
|
|
115
|
+
app.doShellScript('screencapture -x${regionFlag} "${safePath}"');
|
|
116
|
+
const info = app.doShellScript('stat -f "%z" "${safePath}"');
|
|
117
|
+
JSON.stringify({captured: true, path: '${esc(path)}', sizeBytes: parseInt(info)});
|
|
118
|
+
`;
|
|
119
|
+
}
|
|
109
120
|
export function showNotificationScript(message, title, subtitle, sound) {
|
|
110
121
|
const opts = [];
|
|
111
122
|
if (title)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scripts.js","sourceRoot":"","sources":["../../src/system/scripts.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAE3C,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"scripts.js","sourceRoot":"","sources":["../../src/system/scripts.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAE3C,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,UAAU,kBAAkB;IAChC,OAAO;;;;;GAKN,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO;;;oBAGW,GAAG,CAAC,IAAI,CAAC;;;GAG1B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO;;;;;;;;;GASN,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAe,EAAE,KAAe;IAC9D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,MAAM,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACxG,IAAI,KAAK,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,KAAK,EAAE,CAAC,CAAC;IAC7D,OAAO;;;2BAGkB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;GAMxC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,OAAO;;;;;GAKN,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO;;;;;;;;;;GAUN,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO;;;;;;;;;;;;;;;GAeN,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO;;;;;;;;;;;;;;;;;;GAkBN,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,IAAY,EAAE,MAAe;IACnE,MAAM,UAAU,GAAG,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IACrF,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IACnC,OAAO;;;yCAGgC,UAAU,KAAK,QAAQ;oDACZ,QAAQ;6CACf,GAAG,CAAC,IAAI,CAAC;GACnD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAe,EAAE,KAAc,EAAE,QAAiB,EAAE,KAAc;IACvG,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,KAAK;QAAE,IAAI,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnD,IAAI,QAAQ;QAAE,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACxD,IAAI,KAAK;QAAE,IAAI,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnD,OAAO;;;+BAGsB,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;4CACrB,GAAG,CAAC,OAAO,CAAC;GACrD,CAAC;AACJ,CAAC"}
|
package/dist/system/tools.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { runJxa } from "../shared/jxa.js";
|
|
3
3
|
import { ok, err } from "../shared/result.js";
|
|
4
|
-
import { getClipboardScript, setClipboardScript, getVolumeScript, setVolumeScript, toggleDarkModeScript, getFrontmostAppScript, listRunningAppsScript, getScreenInfoScript, showNotificationScript, } from "./scripts.js";
|
|
4
|
+
import { getClipboardScript, setClipboardScript, getVolumeScript, setVolumeScript, toggleDarkModeScript, getFrontmostAppScript, listRunningAppsScript, getScreenInfoScript, showNotificationScript, captureScreenshotScript, } from "./scripts.js";
|
|
5
5
|
export function registerSystemTools(server, _config) {
|
|
6
6
|
server.registerTool("get_clipboard", {
|
|
7
7
|
title: "Get Clipboard",
|
|
@@ -175,5 +175,26 @@ export function registerSystemTools(server, _config) {
|
|
|
175
175
|
return err(`Failed to show notification: ${e instanceof Error ? e.message : String(e)}`);
|
|
176
176
|
}
|
|
177
177
|
});
|
|
178
|
+
server.registerTool("capture_screenshot", {
|
|
179
|
+
title: "Capture Screenshot",
|
|
180
|
+
description: "Take a screenshot and save to the specified path. Supports full screen, window, or selection capture.",
|
|
181
|
+
inputSchema: {
|
|
182
|
+
path: z.string().describe("Absolute file path to save the screenshot (e.g. '/tmp/screenshot.png')"),
|
|
183
|
+
region: z.enum(["fullscreen", "window", "selection"]).optional().default("fullscreen").describe("Capture region: fullscreen (default), window, or selection"),
|
|
184
|
+
},
|
|
185
|
+
annotations: {
|
|
186
|
+
readOnlyHint: false,
|
|
187
|
+
destructiveHint: false,
|
|
188
|
+
idempotentHint: false,
|
|
189
|
+
openWorldHint: false,
|
|
190
|
+
},
|
|
191
|
+
}, async ({ path, region }) => {
|
|
192
|
+
try {
|
|
193
|
+
return ok(await runJxa(captureScreenshotScript(path, region)));
|
|
194
|
+
}
|
|
195
|
+
catch (e) {
|
|
196
|
+
return err(`Failed to capture screenshot: ${e instanceof Error ? e.message : String(e)}`);
|
|
197
|
+
}
|
|
198
|
+
});
|
|
178
199
|
}
|
|
179
200
|
//# sourceMappingURL=tools.js.map
|
package/dist/system/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/system/tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/system/tools.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@heznpc/imcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"description": "MCP server for the entire Apple ecosystem — Notes, Reminders, Calendar, Contacts, Mail, Music, Finder, Safari, Photos, Shortcuts, System, and Apple Intelligence. Connect any AI to your Mac.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"mcp",
|