@thenavidm/apple-photos-mcp-cli 1.0.3 → 1.0.4

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2026 Navid Moazzez
3
+ Copyright (c) 2026 NM Media
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -3,8 +3,7 @@
3
3
  # Apple Photos MCP + CLI
4
4
 
5
5
  [![npm](https://img.shields.io/npm/v/@thenavidm/apple-photos-mcp-cli?color=orange&label=npm)](https://www.npmjs.com/package/@thenavidm/apple-photos-mcp-cli)
6
- [![Stars](https://img.shields.io/github/stars/navidmoazzez/apple-photos-mcp-cli?style=flat&logo=github&label=Stars)](https://github.com/navidmoazzez/apple-photos-mcp-cli)
7
- [![License](https://img.shields.io/badge/License-MIT-blue)](./LICENSE)
6
+ [![License](https://img.shields.io/badge/licence-MIT-green)](./LICENSE)
8
7
  [![YouTube](https://img.shields.io/badge/YouTube-@thenavidm-red?logo=youtube&logoColor=white)](https://youtube.com/@thenavidm?sub_confirmation=1)
9
8
  [![X](https://img.shields.io/badge/X-@thenavidm-black?logo=x)](https://x.com/thenavidm)
10
9
  [![LinkedIn](https://img.shields.io/badge/LinkedIn-thenavidm-0A66C2?logo=linkedin&logoColor=white)](https://linkedin.com/in/thenavidm)
@@ -13,7 +12,7 @@ Apple Photos MCP server and CLI for Claude Code and AI agents. 13 tools to searc
13
12
 
14
13
  Give any AI agent real access to your own Apple Photos library, so it can find, see, organise and export your photos instead of guessing.
15
14
 
16
- Built and maintained by [Navid Moazzez](https://navid.me?utm_source=github&utm_medium=readme&utm_campaign=apple-photos-mcp).
15
+ Built and maintained by [Navid Moazzez](https://navid.me).
17
16
 
18
17
  <img src="https://cdn.navid.media/repos/apple-photos-mcp.gif?v=1" alt="Claude Code using the Apple Photos MCP server" width="520">
19
18
 
@@ -61,10 +60,59 @@ Then just ask: _"which receipts do I have from Vietnam?"_
61
60
  They are the same program reading the same tool definitions, so anything one
62
61
  can do, the other can. A test asserts they cannot drift.
63
62
 
63
+ ## Features
64
+
65
+ Every tool is both a command and an MCP tool, with the same name. The command is
66
+ the tool name with dashes.
67
+
68
+ | Capability | CLI command | MCP tool |
69
+ |---|---|---|
70
+ | Search the whole library | `apple-photos-cli search-photos` | `search_photos` |
71
+ | Actually look at photos | `apple-photos-cli look-at-photos` | `look_at_photos` |
72
+ | Full metadata, camera and lens | `apple-photos-cli photo-info` | `photo_info` |
73
+ | Real totals in one call | `apple-photos-cli library-stats` | `library_stats` |
74
+ | What Apple can search for | `apple-photos-cli list-vocabulary` | `list_vocabulary` |
75
+ | Export originals to disk | `apple-photos-cli export-originals` | `export_originals` |
76
+ | Favourite or unfavourite | `apple-photos-cli favorite-photos` | `favorite_photos` |
77
+ | Title and description | `apple-photos-cli set-photo-title` / `set-photo-description` | `set_photo_title` / `set_photo_description` |
78
+ | Keywords and albums | `apple-photos-cli add-keywords` / `add-to-album` | `add_keywords` / `add_to_album` |
79
+ | Move into an archive album | `apple-photos-cli archive-photos` | `archive_photos` |
80
+ | Check the setup | `apple-photos-cli doctor` | `doctor` |
81
+ | Find the right command | `apple-photos-cli which "..."` | not a tool |
82
+
83
+ All 13 with their arguments are in [section 6](#6-tools-).
84
+
85
+ ## Output and exit codes
86
+
87
+ Results on stdout, errors on stderr as JSON, so one parse handles both.
88
+
89
+ | Flag | Result |
90
+ |---|---|
91
+ | none | pretty JSON |
92
+ | `--json` | JSON, always |
93
+ | `--compact` | the same JSON on one line |
94
+ | `--select a,b.c` | keep only these fields |
95
+
96
+ | Code | Means |
97
+ |---|---|
98
+ | `0` | it worked |
99
+ | `1` | it failed: the engine refused, a guard blocked it, nothing matched |
100
+ | `2` | it was typed wrong: a missing flag, a bad value, an unknown option |
101
+
102
+ ## Which surface, and what each costs
103
+
104
+ An MCP server is charged on every turn; a CLI costs nothing until it is called.
105
+
106
+ The `tools/list` payload for these 13 tools is about **2,800 tokens**, plus the
107
+ server instructions, on every turn of every conversation whether you use it or
108
+ not. The CLI is free until you run something, which is why both exist.
109
+
64
110
  ## Contents
65
111
 
66
112
  | | Section | |
67
113
  |---|---|---|
114
+ | | [Features](#features) | Every tool, both surfaces |
115
+ | | [Output and exit codes](#output-and-exit-codes) | What scripts branch on |
68
116
  | 1 | [What you can ask it](#1-what-you-can-ask-it-) | Real prompts, not features |
69
117
  | 2 | [Quick install](#2-quick-install-) | One command, no credential |
70
118
  | 3 | [Setup](#3-setup-) | One permission, once |
@@ -197,8 +245,8 @@ Apple Photos only exists on macOS, so there is no Windows or Linux path here.
197
245
 
198
246
  **If it already has other servers**, add only the `"apple-photos"` block inside the existing `"mcpServers"` object, and put a comma after the previous server's closing brace. One misplaced comma invalidates the file, and then every server disappears, not just this one.
199
247
 
200
- > **Tip**
201
- > Claude Desktop does not inherit your shell PATH. If `uvx` is not found, run `which uvx` in a terminal and use that absolute path as `"command"`.
248
+ > [!TIP]
249
+ > Claude Desktop does not inherit your shell PATH. If `npx` is not found, run `which npx` in a terminal and use that absolute path as `"command"`.
202
250
 
203
251
  Quit Claude Desktop completely with Cmd+Q and reopen it.
204
252
 
@@ -227,8 +275,8 @@ For one project instead of globally, use `.cursor/mcp.json` in that project.
227
275
  "servers": {
228
276
  "apple-photos": {
229
277
  "type": "stdio",
230
- "command": "uvx",
231
- "args": ["--from", "git+https://github.com/navidmoazzez/apple-photos-mcp-cli", "apple-photos-mcp"]
278
+ "command": "npx",
279
+ "args": ["-y", "@thenavidm/apple-photos-mcp-cli@latest"]
232
280
  }
233
281
  }
234
282
  }
@@ -242,8 +290,8 @@ Reload the window: Cmd+Shift+P, then **Developer: Reload Window**.
242
290
 
243
291
  ```toml
244
292
  [mcp_servers.apple-photos]
245
- command = "uvx"
246
- args = ["--from", "git+https://github.com/navidmoazzez/apple-photos-mcp-cli", "apple-photos-mcp"]
293
+ command = "npx"
294
+ args = ["-y", "@thenavidm/apple-photos-mcp-cli@latest"]
247
295
  ```
248
296
 
249
297
  ### Gemini CLI
@@ -252,7 +300,7 @@ args = ["--from", "git+https://github.com/navidmoazzez/apple-photos-mcp-cli", "a
252
300
 
253
301
  ### Everything else
254
302
 
255
- Any stdio MCP client takes the same two things: the command `uvx`, and the args above.
303
+ Any stdio MCP client takes the same two things: the command `npx`, and the args above.
256
304
 
257
305
  ### claude.ai on the web, with a relay
258
306
 
@@ -393,7 +441,7 @@ Run `doctor` before guessing. It names which of these it is.
393
441
  |---|---|---|
394
442
  | Permission denied reading the library | No Full Disk Access | [Section 3](#3-setup-). Quit the app with Cmd+Q, not just the window. |
395
443
  | Server does not appear in the client | Bad JSON, usually a comma | Paste the config into a JSON validator. One bad comma hides every server. |
396
- | `uvx: command not found` | The app cannot see your shell PATH | Use the absolute path from `which uvx` |
444
+ | `npx: command not found` | The app cannot see your shell PATH | Use the absolute path from `which npx` |
397
445
  | Write tools are missing | `APPLE_PHOTOS_READ_ONLY` is set | Unset it and restart the client |
398
446
  | Reads work, writes fail | Photos automation not approved | Approve the popup, or Privacy & Security, then Automation |
399
447
  | First search takes half a minute | Building the index | One time, about 25 seconds for 37,000 items. Cached afterwards. |
@@ -500,21 +548,20 @@ Delete the server from your client's config, or run `claude mcp remove apple-pho
500
548
 
501
549
  Run into a problem or have a question? [Open an issue](https://github.com/navidmoazzez/apple-photos-mcp-cli/issues) and I will help.
502
550
 
503
- ## About the author
551
+ ## About the author 👋
504
552
 
505
- Navid Moazzez is a leading AI business strategist and the host of the AI Creator Summit, watched by 100,000+ creators. He helps creators and founders master AI and build their own AI Operating System (AI OS) to automate their business and life. This Apple Photos MCP server is one piece of that system.
553
+ Navid Moazzez is a leading AI business strategist, and the host of the AI Creator Summit, watched by 100,000+ creators. He helps creators and founders master AI and build their own AI Operating System (AI OS) to automate their business and life. This Apple Photos MCP server is one piece of that system.
506
554
 
507
555
  **Links**
508
556
 
509
- - Personal website: [navid.me](https://navid.me?utm_source=github&utm_medium=readme&utm_campaign=apple-photos-mcp)
510
- - Link in bio: [navid.bio](https://navid.bio?utm_source=github&utm_medium=readme&utm_campaign=apple-photos-mcp)
511
- - Navid Media: [navid.media](https://navid.media?utm_source=github&utm_medium=readme&utm_campaign=apple-photos-mcp)
557
+ - Personal website: [navid.me](https://navid.me)
558
+ - Link in bio: [navid.bio](https://navid.bio)
559
+ - Navid Media: [navid.media](https://navid.media)
512
560
  - YouTube: [@thenavidm](https://youtube.com/@thenavidm?sub_confirmation=1) and [@thenavidai](https://youtube.com/@thenavidai?sub_confirmation=1)
513
561
  - X: [@thenavidm](https://x.com/thenavidm)
514
562
  - Instagram: [@thenavidm](https://instagram.com/thenavidm)
515
563
  - LinkedIn: [thenavidm](https://linkedin.com/in/thenavidm)
516
564
 
517
- If this is useful, star the repo and come say hi on [X](https://x.com/thenavidm).
518
565
 
519
566
  ## Dependencies
520
567
 
@@ -532,4 +579,4 @@ Not affiliated with, endorsed by, or connected to Apple Inc. Apple, macOS, Photo
532
579
 
533
580
  ---
534
581
 
535
- © 2026 [NM Media](https://navid.media?utm_source=github&utm_medium=readme&utm_campaign=apple-photos-mcp). Made with ❤️ by [Navid Moazzez](https://navid.me?utm_source=github&utm_medium=readme&utm_campaign=apple-photos-mcp).
582
+ © 2026 [NM Media](https://navid.media). Made with ❤️ by [Navid Moazzez](https://navid.me).
package/lib/bridge.d.ts CHANGED
@@ -14,30 +14,41 @@
14
14
  * HQ connector can import so the hosted surface cannot drift from this one.
15
15
  *
16
16
  * Calls are proxied to the Python MCP server over stdio using the official
17
- * client, rather than a bespoke JSON protocol. That means the Python needs no
18
- * changes at all, and there is exactly one implementation of every tool.
17
+ * client, so the Python needs no changes and there is one implementation of
18
+ * every tool.
19
19
  */
20
20
  import type { Config } from "./config.js";
21
+ /** A content part as the MCP protocol carries it: text, image, or anything later. */
22
+ export type ContentPart = {
23
+ type: string;
24
+ text?: string;
25
+ data?: string;
26
+ mimeType?: string;
27
+ };
21
28
  export type BridgeResult = {
29
+ /** Every part, untouched. Images must survive: look_at_photos returns them. */
30
+ content: ContentPart[];
31
+ /** The text parts joined, for the common case of a JSON payload. */
22
32
  text: string;
23
33
  isError: boolean;
24
34
  };
25
- /**
26
- * One long-lived connection to the Python server.
27
- *
28
- * Spawning per call would pay `uv`'s dependency resolution and a Photos library
29
- * scan every time, which is seconds each. The process is started on first use
30
- * and reused.
31
- */
32
35
  export declare class PythonBridge {
33
36
  private readonly config;
34
37
  private client?;
35
38
  private starting?;
39
+ /** The tail of the engine's stderr, so a failure can say what actually went wrong. */
40
+ private stderrTail;
36
41
  constructor(config: Config);
37
42
  private connect;
38
- /** Call one Python tool and return its text payload. */
39
- call(tool: string, args: Record<string, unknown>): Promise<BridgeResult>;
40
- /** What the Python server says it offers. Used by `doctor` to prove the two agree. */
43
+ /**
44
+ * Call one Python tool and return every content part.
45
+ *
46
+ * `timeoutMs` matters: exporting originals pulls them out of iCloud first and
47
+ * rendering previews is not quick either, so the protocol default of 60s
48
+ * cancels work the engine is still doing.
49
+ */
50
+ call(tool: string, args: Record<string, unknown>, timeoutMs?: number): Promise<BridgeResult>;
51
+ /** What the Python server says it offers, for checking the two lists agree. */
41
52
  listTools(): Promise<string[]>;
42
53
  close(): Promise<void>;
43
54
  }
package/lib/bridge.js CHANGED
@@ -14,23 +14,18 @@
14
14
  * HQ connector can import so the hosted surface cannot drift from this one.
15
15
  *
16
16
  * Calls are proxied to the Python MCP server over stdio using the official
17
- * client, rather than a bespoke JSON protocol. That means the Python needs no
18
- * changes at all, and there is exactly one implementation of every tool.
17
+ * client, so the Python needs no changes and there is one implementation of
18
+ * every tool.
19
19
  */
20
20
  import { Client } from "@modelcontextprotocol/sdk/client/index.js";
21
21
  import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
22
22
  import { BridgeError } from "./errors.js";
23
- /**
24
- * One long-lived connection to the Python server.
25
- *
26
- * Spawning per call would pay `uv`'s dependency resolution and a Photos library
27
- * scan every time, which is seconds each. The process is started on first use
28
- * and reused.
29
- */
30
23
  export class PythonBridge {
31
24
  config;
32
25
  client;
33
26
  starting;
27
+ /** The tail of the engine's stderr, so a failure can say what actually went wrong. */
28
+ stderrTail = "";
34
29
  constructor(config) {
35
30
  this.config = config;
36
31
  }
@@ -41,21 +36,38 @@ export class PythonBridge {
41
36
  return this.starting;
42
37
  this.starting = (async () => {
43
38
  const client = new Client({ name: "apple-photos-cli", version: "1.0.0" }, { capabilities: {} });
44
- // `uv run` resolves osxphotos and photoscript on first use and caches
45
- // them, so the reader needs neither a virtualenv nor a pip install.
46
39
  const transport = new StdioClientTransport({
47
40
  command: this.config.pythonCommand,
48
41
  args: this.config.pythonArgs,
49
42
  env: { ...process.env, ...this.config.pythonEnv },
50
43
  stderr: "pipe",
51
44
  });
45
+ // Drain stderr immediately. The SDK pipes it into a PassThrough with a
46
+ // 16KB buffer; with no reader that fills, the OS pipe fills behind it,
47
+ // and the child blocks writing to stderr. osxphotos is chatty on a large
48
+ // library, so this is a real hang, not a theoretical one. Keeping the
49
+ // tail also means a failure can name the actual cause — a missing module,
50
+ // a Full Disk Access denial — instead of a boilerplate "install uv".
51
+ transport.stderr?.on("data", (chunk) => {
52
+ this.stderrTail = (this.stderrTail + chunk.toString()).slice(-4000);
53
+ });
54
+ // A dead client must not stay cached, or one engine crash bricks every
55
+ // later call for the life of the process with "Connection closed".
56
+ const forget = () => {
57
+ if (this.client === client)
58
+ this.client = undefined;
59
+ };
60
+ client.onclose = forget;
61
+ client.onerror = forget;
52
62
  try {
53
- await client.connect(transport);
63
+ // The default is 60s, and a cold `uv` run builds pyobjc, which takes
64
+ // longer than that on a fresh cache. Failing there reported "install
65
+ // uv" at the one moment uv was working correctly.
66
+ await client.connect(transport, { timeout: this.config.startupTimeoutMs });
54
67
  }
55
68
  catch (error) {
56
69
  throw new BridgeError(`Could not start the Photos engine with \`${this.config.pythonCommand} ${this.config.pythonArgs.join(" ")}\`. ` +
57
- `Install uv (https://docs.astral.sh/uv/) or set APPLE_PHOTOS_PYTHON to a Python that has osxphotos and photoscript. ` +
58
- `Underlying error: ${error.message}`);
70
+ `Install uv (https://docs.astral.sh/uv/) or set APPLE_PHOTOS_PYTHON to a Python that has osxphotos and photoscript.`, [error.message, this.stderrTail.trim()].filter(Boolean).join("\n"));
59
71
  }
60
72
  this.client = client;
61
73
  return client;
@@ -67,25 +79,40 @@ export class PythonBridge {
67
79
  this.starting = undefined;
68
80
  }
69
81
  }
70
- /** Call one Python tool and return its text payload. */
71
- async call(tool, args) {
82
+ /**
83
+ * Call one Python tool and return every content part.
84
+ *
85
+ * `timeoutMs` matters: exporting originals pulls them out of iCloud first and
86
+ * rendering previews is not quick either, so the protocol default of 60s
87
+ * cancels work the engine is still doing.
88
+ */
89
+ async call(tool, args, timeoutMs) {
72
90
  const client = await this.connect();
73
- const result = (await client.callTool({ name: tool, arguments: args }));
74
- const text = (result.content ?? [])
91
+ let result;
92
+ try {
93
+ result = (await client.callTool({ name: tool, arguments: args }, undefined, { timeout: timeoutMs ?? this.config.requestTimeoutMs }));
94
+ }
95
+ catch (error) {
96
+ throw new BridgeError(`The Photos engine failed while running ${tool}.`, [error.message, this.stderrTail.trim()].filter(Boolean).join("\n"));
97
+ }
98
+ const content = result.content ?? [];
99
+ const text = content
75
100
  .filter((part) => part.type === "text" && typeof part.text === "string")
76
101
  .map((part) => part.text)
77
102
  .join("\n");
78
- return { text, isError: result.isError === true };
103
+ return { content, text, isError: result.isError === true };
79
104
  }
80
- /** What the Python server says it offers. Used by `doctor` to prove the two agree. */
105
+ /** What the Python server says it offers, for checking the two lists agree. */
81
106
  async listTools() {
82
107
  const client = await this.connect();
83
108
  const { tools } = await client.listTools();
84
109
  return tools.map((tool) => tool.name);
85
110
  }
86
111
  async close() {
87
- await this.client?.close().catch(() => undefined);
112
+ this.starting = undefined;
113
+ const client = this.client;
88
114
  this.client = undefined;
115
+ await client?.close().catch(() => undefined);
89
116
  }
90
117
  }
91
118
  //# sourceMappingURL=bridge.js.map
package/lib/bridge.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../src-ts/bridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../src-ts/bridge.ts"],"names":[],"mappings":"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"}
package/lib/cli.d.ts CHANGED
@@ -28,16 +28,7 @@ type Flag = {
28
28
  help: string;
29
29
  };
30
30
  export declare function flagsFor(shape: ZodRawShape): Flag[];
31
- /**
32
- * Midjourney's own parameter spellings, accepted as flags.
33
- *
34
- * The schema names things in full because a tool description is read by a model
35
- * that has never seen a Midjourney prompt. A person at a terminal has, and they
36
- * will type `--ar 16:9`, because that is what the parameter is called
37
- * everywhere Midjourney documents it. Refusing the name the whole ecosystem
38
- * uses, to protect a naming convention nobody outside this repo can see, would
39
- * be the wrong trade.
40
- */
31
+ /** Shorthands for this repo's arguments. Kept small on purpose. */
41
32
  export declare const FLAG_ALIASES: Record<string, string>;
42
33
  /**
43
34
  * Parse argv against a tool's flags.
@@ -67,11 +58,12 @@ export declare function emitError(error: unknown): void;
67
58
  */
68
59
  export declare function binName(): string;
69
60
  /**
70
- * Words people use mapped onto words the tools use.
61
+ * Words people use mapped onto words these tools use.
71
62
  *
72
- * Without this, "make a picture" matches nothing, because every tool says
73
- * "generate" and "image". A lookup that only works when you already know the
74
- * vocabulary is not a lookup.
63
+ * Without this, "save my photos to disk" matches four browsing tools and never
64
+ * export-originals, because nothing in that phrase appears in its name or
65
+ * description. Every target below has to be vocabulary a tool actually
66
+ * contains; a test asserts it.
75
67
  */
76
68
  export declare const SYNONYMS: Record<string, string[]>;
77
69
  /**
package/lib/cli.js CHANGED
@@ -103,32 +103,16 @@ function toFlag(key, schema) {
103
103
  export function flagsFor(shape) {
104
104
  return Object.entries(shape).map(([key, schema]) => toFlag(key, schema));
105
105
  }
106
- /**
107
- * Midjourney's own parameter spellings, accepted as flags.
108
- *
109
- * The schema names things in full because a tool description is read by a model
110
- * that has never seen a Midjourney prompt. A person at a terminal has, and they
111
- * will type `--ar 16:9`, because that is what the parameter is called
112
- * everywhere Midjourney documents it. Refusing the name the whole ecosystem
113
- * uses, to protect a naming convention nobody outside this repo can see, would
114
- * be the wrong trade.
115
- */
106
+ /** Shorthands for this repo's arguments. Kept small on purpose. */
116
107
  export const FLAG_ALIASES = {
117
- ar: "aspect",
118
- v: "version",
119
- s: "stylize",
120
- c: "chaos",
121
- sref: "style_refs",
122
- sw: "style_weight",
123
- oref: "omni_refs",
124
- ow: "omni_weight",
125
- iw: "image_weight",
126
- q: "quality",
127
- no: "negative",
128
- p: "profile",
129
- r: "repeat",
130
- id: "job_id",
131
- job: "job_id",
108
+ uuid: "refs",
109
+ uuids: "refs",
110
+ ref: "refs",
111
+ file: "refs",
112
+ files: "refs",
113
+ out: "directory",
114
+ dir: "directory",
115
+ n: "limit",
132
116
  };
133
117
  class UsageError extends Error {
134
118
  }
@@ -203,21 +187,22 @@ export function parseArgs(argv, flags) {
203
187
  out[flag.key] = value;
204
188
  }
205
189
  }
206
- // One bare argument fills the first flag that is waiting for one, so
207
- // `search-photos "sunset"` works before anyone reads any help.
208
- //
209
- // Required flags come first, then the first unfilled one. Without that
210
- // fallback a command whose arguments are all optional — search being the
211
- // obvious one — refuses the single most natural way to call it.
190
+ // Bare arguments fill the first flag that is waiting for one. A repeatable
191
+ // flag takes all of them, because `photo-info uuid1 uuid2` is the obvious
192
+ // call and erroring on the second was pure friction.
212
193
  if (positional.length > 0) {
213
194
  const target = flags.find((flag) => flag.required && out[flag.key] === undefined) ??
214
195
  flags.find((flag) => out[flag.key] === undefined && flag.kind !== "boolean");
215
196
  if (!target)
216
197
  throw new UsageError(`Unexpected argument '${positional[0]}'.`);
217
- if (positional.length > 1)
218
- throw new UsageError(`Unexpected argument '${positional[1]}'.`);
219
- const value = coerce(target, positional[0]);
220
- out[target.key] = target.repeatable ? [value] : value;
198
+ if (target.repeatable) {
199
+ out[target.key] = [...(out[target.key] ?? []), ...positional.map((p) => coerce(target, p))];
200
+ }
201
+ else {
202
+ if (positional.length > 1)
203
+ throw new UsageError(`Unexpected argument '${positional[1]}'.`);
204
+ out[target.key] = coerce(target, positional[0]);
205
+ }
221
206
  }
222
207
  return out;
223
208
  }
@@ -369,8 +354,6 @@ function renderToolList(tools) {
369
354
  lines.push(` ${bin} <command> --help what it takes`);
370
355
  lines.push(` ${bin} schema <command> the JSON schema an MCP client sees`);
371
356
  lines.push(` ${bin} doctor check the setup`);
372
- lines.push(` ${bin} login open the controlled window to sign in`);
373
- lines.push(` ${bin} capture record what the web app calls, to extend this tool`);
374
357
  lines.push(``);
375
358
  return lines.join("\n");
376
359
  }
@@ -381,60 +364,61 @@ const STOP_WORDS = new Set([
381
364
  "that", "this", "what", "which", "all", "any", "some", "please",
382
365
  ]);
383
366
  /**
384
- * Words people use mapped onto words the tools use.
367
+ * Words people use mapped onto words these tools use.
385
368
  *
386
- * Without this, "make a picture" matches nothing, because every tool says
387
- * "generate" and "image". A lookup that only works when you already know the
388
- * vocabulary is not a lookup.
369
+ * Without this, "save my photos to disk" matches four browsing tools and never
370
+ * export-originals, because nothing in that phrase appears in its name or
371
+ * description. Every target below has to be vocabulary a tool actually
372
+ * contains; a test asserts it.
389
373
  */
390
374
  export const SYNONYMS = {
391
- picture: ["image"],
392
- pictures: ["image"],
393
- photo: ["image"],
394
- photos: ["image"],
395
- pic: ["image"],
396
- pics: ["image"],
397
- art: ["image"],
398
- artwork: ["image"],
399
- render: ["generate", "imagine"],
400
- renders: ["image"],
401
- make: ["generate", "imagine"],
402
- create: ["generate", "imagine"],
403
- draw: ["generate", "imagine"],
404
- generation: ["generate"],
405
- imagining: ["imagine"],
406
- save: ["download"],
407
- saving: ["download"],
408
- fetch: ["download"],
409
- grab: ["download"],
410
- disk: ["download"],
411
- history: ["jobs"],
412
- past: ["jobs"],
413
- previous: ["jobs"],
414
- recent: ["jobs"],
415
- running: ["queue"],
416
- rendering: ["queue"],
417
- pending: ["queue"],
418
- progress: ["queue"],
419
- redo: ["rerun"],
420
- again: ["rerun"],
421
- reroll: ["rerun"],
422
- retry: ["rerun"],
423
- account: ["whoami"],
424
- login: ["whoami"],
425
- logged: ["whoami"],
426
- signed: ["whoami"],
427
- auth: ["whoami"],
428
- session: ["whoami"],
429
- who: ["whoami"],
430
- style: ["explore"],
431
- styles: ["explore"],
432
- inspiration: ["explore"],
433
- browse: ["explore"],
434
- folder: ["folders"],
435
- moodboard: ["moodboards"],
436
- quota: ["storage"],
437
- space: ["storage"],
375
+ save: ["export", "originals"],
376
+ saving: ["export", "originals"],
377
+ download: ["export", "originals"],
378
+ copy: ["export", "originals"],
379
+ disk: ["export", "originals"],
380
+ file: ["export", "originals"],
381
+ files: ["export", "originals"],
382
+ find: ["search"],
383
+ show: ["search", "look"],
384
+ see: ["look"],
385
+ view: ["look"],
386
+ preview: ["look"],
387
+ image: ["photos"],
388
+ images: ["photos"],
389
+ picture: ["photos"],
390
+ pictures: ["photos"],
391
+ pic: ["photos"],
392
+ pics: ["photos"],
393
+ video: ["photos"],
394
+ videos: ["photos"],
395
+ tag: ["keywords"],
396
+ tags: ["keywords"],
397
+ label: ["keywords"],
398
+ labels: ["keywords"],
399
+ caption: ["description"],
400
+ name: ["title"],
401
+ heart: ["favourite", "favorite"],
402
+ star: ["favourite", "favorite"],
403
+ like: ["favourite", "favorite"],
404
+ delete: ["archive"],
405
+ remove: ["archive"],
406
+ trash: ["archive"],
407
+ hide: ["archive"],
408
+ count: ["totals", "stats"],
409
+ total: ["totals", "stats"],
410
+ totals: ["totals"],
411
+ many: ["totals"],
412
+ size: ["totals"],
413
+ metadata: ["metadata"],
414
+ camera: ["camera"],
415
+ lens: ["lens"],
416
+ album: ["album"],
417
+ albums: ["album"],
418
+ vocabulary: ["vocabulary"],
419
+ words: ["vocabulary"],
420
+ setup: ["setup"],
421
+ broken: ["setup"],
438
422
  };
439
423
  function terms(text) {
440
424
  const words = text
@@ -611,12 +595,6 @@ export async function runCli(argv) {
611
595
  emitError(error);
612
596
  return 2;
613
597
  }
614
- // A bad --ar or --sref is the caller typing it wrong, the same class of
615
- // mistake as a missing flag, so it exits 2 rather than 1.
616
- if (error instanceof PhotosError && error.name === "ValidationError") {
617
- emitError(error);
618
- return 2;
619
- }
620
598
  if (error instanceof z.ZodError) {
621
599
  const first = error.issues[0];
622
600
  emitError(new Error(first
package/lib/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src-ts/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src-ts/cli.ts"],"names":[],"mappings":"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"}
package/lib/config.d.ts CHANGED
@@ -8,6 +8,10 @@
8
8
  export type Config = {
9
9
  pythonCommand: string;
10
10
  pythonArgs: string[];
11
+ /** How long to wait for the engine to start. A cold `uv` run builds pyobjc. */
12
+ startupTimeoutMs: number;
13
+ /** Per-call deadline. Exports pull originals out of iCloud, so it is generous. */
14
+ requestTimeoutMs: number;
11
15
  pythonEnv: Record<string, string>;
12
16
  readOnly: boolean;
13
17
  allowDestructive: boolean;
@@ -16,4 +20,4 @@ export type Config = {
16
20
  };
17
21
  export declare function loadConfig(): Config;
18
22
  /** Every variable the code reads, so --help, the README and the tests agree. */
19
- export declare const ENV_VARS: readonly ["APPLE_PHOTOS_PYTHON", "APPLE_PHOTOS_PYTHONPATH", "APPLE_PHOTOS_READ_ONLY", "APPLE_PHOTOS_ALLOW_DESTRUCTIVE", "APPLE_PHOTOS_AUDIT_LOG", "APPLE_PHOTOS_EXPORT_DIR"];
23
+ export declare const ENV_VARS: readonly ["APPLE_PHOTOS_PYTHON", "APPLE_PHOTOS_PYTHONPATH", "APPLE_PHOTOS_STARTUP_TIMEOUT_MS", "APPLE_PHOTOS_REQUEST_TIMEOUT_MS", "APPLE_PHOTOS_READ_ONLY", "APPLE_PHOTOS_ALLOW_DESTRUCTIVE", "APPLE_PHOTOS_AUDIT_LOG", "APPLE_PHOTOS_EXPORT_DIR", "APPLE_PHOTOS_LIBRARY", "APPLE_PHOTOS_PREVIEW_DIR", "APPLE_PHOTOS_PREVIEW_PX", "APPLE_PHOTOS_PREVIEW_MAX", "APPLE_PHOTOS_WRITE_BATCH_MAX", "APPLE_PHOTOS_ARCHIVE_ALBUM"];
package/lib/config.js CHANGED
@@ -6,11 +6,26 @@
6
6
  * only real setting is how to start Python.
7
7
  */
8
8
  import { fileURLToPath } from "node:url";
9
+ /**
10
+ * An allowlist, matching the engine's own `_flag()`.
11
+ *
12
+ * A denylist made `APPLE_PHOTOS_READ_ONLY=enabled` mean read-only here and
13
+ * read-write in Python. Both sides now agree on what true looks like.
14
+ */
9
15
  function bool(name, fallback) {
10
16
  const raw = process.env[name];
11
17
  if (raw === undefined || raw.trim() === "")
12
18
  return fallback;
13
- return !["0", "false", "no", "off"].includes(raw.trim().toLowerCase());
19
+ return ["1", "true", "yes", "on"].includes(raw.trim().toLowerCase());
20
+ }
21
+ function int(name, fallback, min, max) {
22
+ const raw = process.env[name];
23
+ if (raw === undefined || raw.trim() === "")
24
+ return fallback;
25
+ const value = Number(raw);
26
+ if (!Number.isFinite(value))
27
+ return fallback;
28
+ return Math.min(Math.max(Math.trunc(value), min), max);
14
29
  }
15
30
  function str(name) {
16
31
  const raw = process.env[name];
@@ -35,10 +50,16 @@ export function loadConfig() {
35
50
  const pythonCommand = explicit ?? "uv";
36
51
  const pythonArgs = explicit
37
52
  ? ["-m", "apple_photos_mcp"]
38
- : ["run", "--with", "osxphotos", "--with", "photoscript", "--with", "mcp", "python3", "-m", "apple_photos_mcp"];
53
+ // `--no-project` matters: without it `uv run` discovers whatever
54
+ // pyproject.toml sits above the client's working directory and tries to
55
+ // sync that project instead. The engine is found via PYTHONPATH, so
56
+ // project discovery is pure downside.
57
+ : ["run", "--no-project", "--with", "osxphotos", "--with", "photoscript", "--with", "mcp", "python3", "-m", "apple_photos_mcp"];
39
58
  return {
40
59
  pythonCommand,
41
60
  pythonArgs,
61
+ startupTimeoutMs: int("APPLE_PHOTOS_STARTUP_TIMEOUT_MS", 300_000, 10_000, 1_800_000),
62
+ requestTimeoutMs: int("APPLE_PHOTOS_REQUEST_TIMEOUT_MS", 300_000, 5_000, 1_800_000),
42
63
  pythonEnv: { PYTHONPATH: str("APPLE_PHOTOS_PYTHONPATH") ?? packagedEnginePath() },
43
64
  readOnly: bool("APPLE_PHOTOS_READ_ONLY", false),
44
65
  allowDestructive: bool("APPLE_PHOTOS_ALLOW_DESTRUCTIVE", true),
@@ -50,9 +71,18 @@ export function loadConfig() {
50
71
  export const ENV_VARS = [
51
72
  "APPLE_PHOTOS_PYTHON",
52
73
  "APPLE_PHOTOS_PYTHONPATH",
74
+ "APPLE_PHOTOS_STARTUP_TIMEOUT_MS",
75
+ "APPLE_PHOTOS_REQUEST_TIMEOUT_MS",
53
76
  "APPLE_PHOTOS_READ_ONLY",
54
77
  "APPLE_PHOTOS_ALLOW_DESTRUCTIVE",
55
78
  "APPLE_PHOTOS_AUDIT_LOG",
56
79
  "APPLE_PHOTOS_EXPORT_DIR",
80
+ // Read by the Python engine, forwarded through the inherited environment.
81
+ "APPLE_PHOTOS_LIBRARY",
82
+ "APPLE_PHOTOS_PREVIEW_DIR",
83
+ "APPLE_PHOTOS_PREVIEW_PX",
84
+ "APPLE_PHOTOS_PREVIEW_MAX",
85
+ "APPLE_PHOTOS_WRITE_BATCH_MAX",
86
+ "APPLE_PHOTOS_ARCHIVE_ALBUM",
57
87
  ];
58
88
  //# sourceMappingURL=config.js.map
package/lib/config.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src-ts/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAYzC,SAAS,IAAI,CAAC,IAAY,EAAE,QAAiB;IAC3C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,QAAQ,CAAC;IAC5D,OAAO,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,GAAG,CAAC,IAAY;IACvB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AACpD,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,kBAAkB;IACzB,OAAO,aAAa,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,6EAA6E;IAC7E,iEAAiE;IACjE,MAAM,QAAQ,GAAG,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAC5C,MAAM,aAAa,GAAG,QAAQ,IAAI,IAAI,CAAC;IACvC,MAAM,UAAU,GAAG,QAAQ;QACzB,CAAC,CAAC,CAAC,IAAI,EAAE,kBAAkB,CAAC;QAC5B,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,kBAAkB,CAAC,CAAC;IAElH,OAAO;QACL,aAAa;QACb,UAAU;QACV,SAAS,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,yBAAyB,CAAC,IAAI,kBAAkB,EAAE,EAAE;QACjF,QAAQ,EAAE,IAAI,CAAC,wBAAwB,EAAE,KAAK,CAAC;QAC/C,gBAAgB,EAAE,IAAI,CAAC,gCAAgC,EAAE,IAAI,CAAC;QAC9D,SAAS,EAAE,GAAG,CAAC,wBAAwB,CAAC;QACxC,SAAS,EAAE,GAAG,CAAC,yBAAyB,CAAC;KAC1C,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,qBAAqB;IACrB,yBAAyB;IACzB,wBAAwB;IACxB,gCAAgC;IAChC,wBAAwB;IACxB,yBAAyB;CACjB,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src-ts/config.ts"],"names":[],"mappings":"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"}
package/lib/index.js CHANGED
@@ -41,7 +41,7 @@ Safety:
41
41
  APPLE_PHOTOS_ALLOW_DESTRUCTIVE=0 keep reads and edits, block archiving
42
42
  APPLE_PHOTOS_AUDIT_LOG append-only log of every attempted change
43
43
 
44
- https://github.com/navidmoazzez/apple-photos-mcp
44
+ https://github.com/navidmoazzez/apple-photos-mcp-cli
45
45
  `;
46
46
  function invokedAsCli() {
47
47
  const name = (process.argv[1] ?? "").split("/").pop() ?? "";
@@ -53,7 +53,7 @@ function invokedAsCli() {
53
53
  * An `"os": ["darwin"]` field in package.json looks right and breaks the thing
54
54
  * that matters: the HQ connector imports ALL_TOOLS for its schemas on a Linux
55
55
  * builder, never executing a tool, and npm refuses to install at all. The
56
- * pyproject next door already made this call for the same reason its comment
56
+ * pyproject next door already made this call for the same reason, its comment
57
57
  * notes that platform markers make `pip install` fail on Linux "instead of
58
58
  * installing and then telling the user this server needs a Mac".
59
59
  *
@@ -76,6 +76,10 @@ async function main() {
76
76
  process.stdout.write(`${VERSION}\n`);
77
77
  return;
78
78
  }
79
+ if (argv.includes("--help") || argv.includes("-h") || command === "help") {
80
+ process.stdout.write(HELP);
81
+ return;
82
+ }
79
83
  requireMac();
80
84
  if (invokedAsCli() && argv.length === 0) {
81
85
  process.exitCode = await runCli(["tools"]);
@@ -96,10 +100,6 @@ async function main() {
96
100
  process.stdout.write(HELP);
97
101
  return;
98
102
  }
99
- if (argv.includes("--version") || argv.includes("-v")) {
100
- process.stdout.write(`${VERSION}\n`);
101
- return;
102
- }
103
103
  const built = buildServer(loadConfig());
104
104
  const transport = new StdioServerTransport();
105
105
  await built.server.connect(transport);
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src-ts/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src-ts/index.ts"],"names":[],"mappings":"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"}
@@ -18,7 +18,7 @@ export const readTools = [
18
18
  description: "Search the entire Photos library through Apple's own on-device index: what a picture looks like, text read inside it, the place, the activity, and any named faces.\n\nThis covers every item, not a sample. `limit` caps what comes back, not what is searched, so the match count is library-wide.\n\nApple's visual vocabulary is a closed list of roughly 1,500 words. A term it has never heard of matches nothing, and no rephrasing of the same idea helps: check `unmatched_terms` in the result, or call list_vocabulary.\n\nSearch returns candidates, not answers. The filenames tell you nothing, so call look_at_photos on the top few before describing them.",
19
19
  schema: {
20
20
  query: z.string().optional().describe("What to look for, in Apple's vocabulary. Empty returns the newest items."),
21
- limit: z.number().int().min(1).max(200).optional().describe("How many to return. Defaults to 12."),
21
+ limit: z.number().int().min(1).max(100).optional().describe("How many to return, 1-100. Defaults to 12."),
22
22
  kind: z.enum(["photo", "video"]).optional().describe("Restrict to photos or videos."),
23
23
  person: z.string().optional().describe("A face the user has named in Photos."),
24
24
  album: z.string().optional().describe("Restrict to one album."),
@@ -40,16 +40,23 @@ export const readTools = [
40
40
  title: "Actually look at photos",
41
41
  description: "Return the images themselves so they can be looked at, rather than reasoned about from filenames and labels.\n\nCall this on the top few results before describing, recommending or choosing between them. Search gives candidates; this is the only way to know what is in them.",
42
42
  schema: {
43
- refs: REFS,
44
- size: z.number().int().min(64).max(2048).optional().describe("Longest edge in pixels. Defaults to 640."),
43
+ refs: z
44
+ .array(z.string())
45
+ .describe("Item refs: uuids from search_photos, or exact filenames. Only the first 8 are rendered; the result says so."),
46
+ size: z.number().int().min(128).max(2048).optional().describe("Longest edge in pixels, 128-2048. Defaults to 640."),
45
47
  },
46
48
  risk: "read",
49
+ timeoutMs: 300_000,
47
50
  }),
48
51
  defineTool({
49
52
  name: "photo_info",
50
53
  title: "Full metadata for specific items",
51
54
  description: "Everything Photos knows about specific items: date, place, camera and lens, dimensions, albums, keywords, faces, and whether the original is on this Mac or still in iCloud.",
52
- schema: { refs: REFS },
55
+ schema: {
56
+ refs: z
57
+ .array(z.string())
58
+ .describe("Item refs: uuids from search_photos, or exact filenames. Capped at 50 per call."),
59
+ },
53
60
  risk: "read",
54
61
  }),
55
62
  defineTool({
@@ -83,11 +90,19 @@ export const writeTools = [
83
90
  title: "Export originals to disk",
84
91
  description: "Export the original files to a folder on this Mac. Most items live in iCloud rather than on the disk, so an export downloads them first and can be slow.\n\nNothing is uploaded anywhere: the files land in a local folder and stay there.",
85
92
  schema: {
86
- refs: REFS,
87
- directory: z.string().optional().describe("Where to write. Defaults to a dated folder under ~/Downloads."),
93
+ refs: z
94
+ .array(z.string())
95
+ .describe("Item refs to export. Capped at 100 per call."),
96
+ directory: z.string().optional().describe("Where to write. Defaults to ~/Downloads/Photos Exports."),
88
97
  },
89
- risk: "write",
98
+ // Exporting copies files out; it does not change the library, which is why
99
+ // the engine keeps offering it under read-only. Classifying it as a write
100
+ // here hid it and the two layers disagreed.
101
+ risk: "read",
90
102
  idempotent: true,
103
+ // Originals usually live in iCloud, so each one is downloaded before it is
104
+ // written. The protocol default of 60s cancels work the engine is still doing.
105
+ timeoutMs: 900_000,
91
106
  summary: (args) => `export ${args.refs.length} original(s)`,
92
107
  }),
93
108
  defineTool({
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src-ts/tools/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src-ts/tools/index.ts"],"names":[],"mappings":"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"}
@@ -11,8 +11,10 @@ export type ToolContext = {
11
11
  };
12
12
  export type ToolResult = {
13
13
  content: {
14
- type: "text";
15
- text: string;
14
+ type: string;
15
+ text?: string;
16
+ data?: string;
17
+ mimeType?: string;
16
18
  }[];
17
19
  isError?: boolean;
18
20
  };
@@ -28,6 +30,8 @@ export type ToolSpec<S extends ZodRawShape> = {
28
30
  schema: S;
29
31
  risk: Risk;
30
32
  idempotent?: boolean;
33
+ /** Override the per-call deadline. Exports pull originals out of iCloud first. */
34
+ timeoutMs?: number;
31
35
  /** The Python tool this proxies to. Defaults to `name`. */
32
36
  python?: string;
33
37
  summary?: (args: z.infer<z.ZodObject<S>>) => string;
package/lib/tools/kit.js CHANGED
@@ -3,6 +3,13 @@ import { z } from "zod";
3
3
  import { PhotosError, ToolError } from "../errors.js";
4
4
  import { annotationsFor, needsConfirm } from "../safety.js";
5
5
  export function ok(data) {
6
+ // Content parts that are already MCP-shaped pass straight through. That is
7
+ // what keeps look_at_photos working: it returns images interleaved with
8
+ // captions, and serialising them into a text blob deletes the pictures,
9
+ // leaving a tool whose whole purpose is seeing that returns filenames.
10
+ if (Array.isArray(data) && data.every((p) => p && typeof p === "object" && "type" in p)) {
11
+ return { content: data };
12
+ }
6
13
  const text = typeof data === "string" ? data : JSON.stringify(data, null, 2);
7
14
  return { content: [{ type: "text", text }] };
8
15
  }
@@ -31,19 +38,35 @@ export async function runTool(spec, args, ctx) {
31
38
  const summary = spec.summary?.(args) ?? spec.name;
32
39
  ctx.guard.check(spec.name, spec.risk, args.confirm, summary);
33
40
  }
34
- // Drop empties so Python sees its own defaults rather than nulls.
35
- const payload = Object.fromEntries(Object.entries(args).filter(([, v]) => v !== undefined && v !== null && v !== ""));
36
- const result = await ctx.bridge.call(spec.python ?? spec.name, payload);
41
+ // Only undefined and null are dropped. An empty string is a real value here:
42
+ // clearing a caption is `set_photo_description --description ""`, and
43
+ // stripping it made the engine reject the call for a missing required
44
+ // argument the caller had plainly supplied.
45
+ const payload = Object.fromEntries(Object.entries(args).filter(([, v]) => v !== undefined && v !== null));
46
+ const result = await ctx.bridge.call(spec.python ?? spec.name, payload, spec.timeoutMs);
37
47
  if (result.isError)
38
48
  throw new ToolError(result.text || `${spec.name} failed.`);
39
- // The Python returns JSON as text. Parse it so `--json` gives real fields and
40
- // an MCP client gets structure rather than a string containing JSON.
49
+ // Anything that is not plain text images from look_at_photos is returned
50
+ // as content parts rather than squashed into a string.
51
+ if (result.content.some((part) => part.type !== "text"))
52
+ return result.content;
53
+ let parsed;
41
54
  try {
42
- return JSON.parse(result.text);
55
+ parsed = JSON.parse(result.text);
43
56
  }
44
57
  catch {
45
58
  return result.text;
46
59
  }
60
+ // The engine reports its own failures as an ordinary return carrying
61
+ // {"error": ...}, which the protocol marks successful. Without this check a
62
+ // failed export exited 0 with the error printed on stdout, so
63
+ // `export-originals ... && rm ...` would go on to delete the source.
64
+ if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
65
+ const record = parsed;
66
+ if (typeof record.error === "string" && record.ok !== true)
67
+ throw new ToolError(record.error);
68
+ }
69
+ return parsed;
47
70
  }
48
71
  export function register(server, contextFor, spec) {
49
72
  server.registerTool(spec.name, {
@@ -1 +1 @@
1
- {"version":3,"file":"kit.js","sourceRoot":"","sources":["../../src-ts/tools/kit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kit.js","sourceRoot":"","sources":["../../src-ts/tools/kit.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thenavidm/apple-photos-mcp-cli",
3
- "version": "1.0.3",
3
+ "version": "1.0.4",
4
4
  "description": "Apple Photos MCP server and CLI for Claude Code and AI agents. 13 tools to search, look at, organise and export your own Photos library, entirely on your Mac.",
5
5
  "type": "module",
6
6
  "main": "./lib/index.js",
package/pyproject.toml CHANGED
@@ -4,7 +4,7 @@
4
4
  # name is free, so both Python packages are named the same way. The installed
5
5
  # command is still `apple-photos-mcp`.
6
6
  name = "thenavidm-apple-photos-mcp"
7
- version = "0.1.0"
7
+ version = "1.0.4"
8
8
  description = "Apple Photos MCP server for Claude Code and AI agents. Photo search, scene labels, text in images, faces, places, albums, previews, and exports."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -67,7 +67,7 @@ def run(config: Config, lib: PhotosLibrary) -> dict[str, Any]:
67
67
  found,
68
68
  str(lib_path),
69
69
  "Open Photos once so macOS records a library path, or set "
70
- "APPLE_PHOTOS_MCP_LIBRARY to a .photoslibrary folder.",
70
+ "APPLE_PHOTOS_LIBRARY to a .photoslibrary folder.",
71
71
  )
72
72
  )
73
73
  except Exception as exc:
@@ -76,7 +76,7 @@ def run(config: Config, lib: PhotosLibrary) -> dict[str, Any]:
76
76
  "library found",
77
77
  False,
78
78
  str(exc),
79
- "Set APPLE_PHOTOS_MCP_LIBRARY to your .photoslibrary path.",
79
+ "Set APPLE_PHOTOS_LIBRARY to your .photoslibrary path.",
80
80
  )
81
81
  )
82
82