@thenavidm/apple-photos-mcp-cli 1.0.1 → 1.0.2
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/lib/bridge.d.ts +43 -0
- package/lib/bridge.js +91 -0
- package/lib/bridge.js.map +1 -0
- package/lib/cli.d.ts +92 -0
- package/lib/cli.js +634 -0
- package/lib/cli.js.map +1 -0
- package/lib/config.d.ts +19 -0
- package/lib/config.js +58 -0
- package/lib/config.js.map +1 -0
- package/lib/errors.d.ts +15 -0
- package/lib/errors.js +22 -0
- package/lib/errors.js.map +1 -0
- package/lib/index.d.ts +12 -0
- package/lib/index.js +117 -0
- package/lib/index.js.map +1 -0
- package/lib/safety.d.ts +27 -0
- package/lib/safety.js +70 -0
- package/lib/safety.js.map +1 -0
- package/lib/server.d.ts +10 -0
- package/lib/server.js +38 -0
- package/lib/server.js.map +1 -0
- package/lib/tools/index.d.ts +55 -0
- package/lib/tools/index.js +154 -0
- package/lib/tools/index.js.map +1 -0
- package/lib/tools/kit.d.ts +48 -0
- package/lib/tools/kit.js +64 -0
- package/lib/tools/kit.js.map +1 -0
- package/package.json +5 -5
- package/src/apple_photos_mcp/__pycache__/__init__.cpython-313.pyc +0 -0
- package/src/apple_photos_mcp/__pycache__/__main__.cpython-313.pyc +0 -0
- package/src/apple_photos_mcp/__pycache__/config.cpython-313.pyc +0 -0
- package/src/apple_photos_mcp/__pycache__/doctor.cpython-313.pyc +0 -0
- package/src/apple_photos_mcp/__pycache__/library.cpython-313.pyc +0 -0
- package/src/apple_photos_mcp/__pycache__/previews.cpython-313.pyc +0 -0
- package/src/apple_photos_mcp/__pycache__/safety.cpython-313.pyc +0 -0
- package/src/apple_photos_mcp/__pycache__/search.cpython-313.pyc +0 -0
- package/src/apple_photos_mcp/__pycache__/server.cpython-313.pyc +0 -0
- package/src/apple_photos_mcp/__pycache__/writes.cpython-313.pyc +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src-ts/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,UAAU,EAAoB,MAAM,UAAU,CAAC;AAEpE,MAAM,IAAI,GAAG,CAAC;KACX,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KACjB,QAAQ,CAAC,mFAAmF,CAAC,CAAC;AAEjG,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,UAAU,CAAC;QACT,IAAI,EAAE,eAAe;QACrB,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EACT,6oBAA6oB;QAC/oB,MAAM,EAAE;YACN,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0EAA0E,CAAC;YACjH,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;YAClG,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;YACrF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;YAC9E,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;YAC/D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;YAC5E,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;YACnE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YACjE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YAC/D,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;YAClF,WAAW,EAAE,CAAC;iBACX,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;iBACpC,QAAQ,EAAE;iBACV,QAAQ,CAAC,uFAAuF,CAAC;YACpG,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;SACzE;QACD,IAAI,EAAE,MAAM;KACb,CAAC;IAEF,UAAU,CAAC;QACT,IAAI,EAAE,gBAAgB;QACtB,KAAK,EAAE,yBAAyB;QAChC,WAAW,EACT,mRAAmR;QACrR,MAAM,EAAE;YACN,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;SACzG;QACD,IAAI,EAAE,MAAM;KACb,CAAC;IAEF,UAAU,CAAC;QACT,IAAI,EAAE,YAAY;QAClB,KAAK,EAAE,kCAAkC;QACzC,WAAW,EACT,8KAA8K;QAChL,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;QACtB,IAAI,EAAE,MAAM;KACb,CAAC;IAEF,UAAU,CAAC;QACT,IAAI,EAAE,eAAe;QACrB,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EACT,2aAA2a;QAC7a,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,MAAM;KACb,CAAC;IAEF,UAAU,CAAC;QACT,IAAI,EAAE,iBAAiB;QACvB,KAAK,EAAE,oCAAoC;QAC3C,WAAW,EACT,0LAA0L;QAC5L,MAAM,EAAE;YACN,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;YACnF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;SACrG;QACD,IAAI,EAAE,MAAM;KACb,CAAC;IAEF,UAAU,CAAC;QACT,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,iBAAiB;QACxB,WAAW,EACT,wOAAwO;QAC1O,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,MAAM;KACb,CAAC;CACH,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,UAAU,CAAC;QACT,IAAI,EAAE,kBAAkB;QACxB,KAAK,EAAE,0BAA0B;QACjC,WAAW,EACT,4OAA4O;QAC9O,MAAM,EAAE;YACN,IAAI,EAAE,IAAI;YACV,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+DAA+D,CAAC;SAC3G;QACD,IAAI,EAAE,OAAO;QACb,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,UAAW,IAAI,CAAC,IAAiB,CAAC,MAAM,cAAc;KAC1E,CAAC;IAEF,UAAU,CAAC;QACT,IAAI,EAAE,iBAAiB;QACvB,KAAK,EAAE,0BAA0B;QACjC,WAAW,EAAE,kHAAkH;QAC/H,MAAM,EAAE;YACN,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;SACrF;QACD,IAAI,EAAE,OAAO;QACb,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,IAAK,IAAI,CAAC,IAAiB,CAAC,MAAM,UAAU;KACxH,CAAC;IAEF,UAAU,CAAC;QACT,IAAI,EAAE,iBAAiB;QACvB,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE,gDAAgD;QAC7D,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE;QAC9G,IAAI,EAAE,OAAO;QACb,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;KAC/C,CAAC;IAEF,UAAU,CAAC;QACT,IAAI,EAAE,uBAAuB;QAC7B,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EAAE,oEAAoE;QACjF,MAAM,EAAE;YACN,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;YACjD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;SAC5D;QACD,IAAI,EAAE,OAAO;QACb,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;KAClD,CAAC;IAEF,UAAU,CAAC;QACT,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,8GAA8G;QAC3H,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE;QAClF,IAAI,EAAE,OAAO;QACb,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,WAAY,IAAI,CAAC,IAAiB,CAAC,MAAM,UAAU;KACvE,CAAC;IAEF,UAAU,CAAC;QACT,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,iBAAiB;QACxB,WAAW,EAAE,0DAA0D;QACvE,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE;QACjE,IAAI,EAAE,OAAO;QACb,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAQ,IAAI,CAAC,IAAiB,CAAC,MAAM,gBAAgB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG;KAC9F,CAAC;IAEF,UAAU,CAAC;QACT,IAAI,EAAE,gBAAgB;QACtB,KAAK,EAAE,kCAAkC;QACzC,WAAW,EACT,kVAAkV;QACpV,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,UAAU,EAAE;QACrC,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,WAAY,IAAI,CAAC,IAAiB,CAAC,MAAM,UAAU;KACvE,CAAC;CACH,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAkB,CAAC,GAAG,SAAS,EAAE,GAAG,UAAU,CAAkB,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/** Shared plumbing every tool uses. One spec feeds both the MCP server and the CLI. */
|
|
2
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
3
|
+
import { z, type ZodRawShape } from "zod";
|
|
4
|
+
import type { PythonBridge } from "../bridge.js";
|
|
5
|
+
import type { Config } from "../config.js";
|
|
6
|
+
import { needsConfirm, type Risk, type WriteGuard } from "../safety.js";
|
|
7
|
+
export type ToolContext = {
|
|
8
|
+
bridge: PythonBridge;
|
|
9
|
+
config: Config;
|
|
10
|
+
guard: WriteGuard;
|
|
11
|
+
};
|
|
12
|
+
export type ToolResult = {
|
|
13
|
+
content: {
|
|
14
|
+
type: "text";
|
|
15
|
+
text: string;
|
|
16
|
+
}[];
|
|
17
|
+
isError?: boolean;
|
|
18
|
+
};
|
|
19
|
+
export declare function ok(data: unknown): ToolResult;
|
|
20
|
+
export declare function fail(error: unknown): ToolResult;
|
|
21
|
+
export declare const confirmArg: {
|
|
22
|
+
confirm: z.ZodOptional<z.ZodBoolean>;
|
|
23
|
+
};
|
|
24
|
+
export type ToolSpec<S extends ZodRawShape> = {
|
|
25
|
+
name: string;
|
|
26
|
+
title: string;
|
|
27
|
+
description: string;
|
|
28
|
+
schema: S;
|
|
29
|
+
risk: Risk;
|
|
30
|
+
idempotent?: boolean;
|
|
31
|
+
/** The Python tool this proxies to. Defaults to `name`. */
|
|
32
|
+
python?: string;
|
|
33
|
+
summary?: (args: z.infer<z.ZodObject<S>>) => string;
|
|
34
|
+
};
|
|
35
|
+
export declare function defineTool<S extends ZodRawShape>(spec: ToolSpec<S>): ToolSpec<S>;
|
|
36
|
+
export type AnyToolSpec = Omit<ToolSpec<ZodRawShape>, "summary"> & {
|
|
37
|
+
summary?: (args: never) => string;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Every tool runs the same way: guard, then hand the arguments to Python.
|
|
41
|
+
*
|
|
42
|
+
* There is no per-tool handler, because there is nothing per-tool to do. The
|
|
43
|
+
* Python server already implements all thirteen; this layer exists to give them
|
|
44
|
+
* a second surface, an install story and a schema HQ can import.
|
|
45
|
+
*/
|
|
46
|
+
export declare function runTool(spec: AnyToolSpec, args: Record<string, unknown>, ctx: ToolContext): Promise<unknown>;
|
|
47
|
+
export declare function register(server: McpServer, contextFor: () => ToolContext, spec: AnyToolSpec): void;
|
|
48
|
+
export { needsConfirm };
|
package/lib/tools/kit.js
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/** Shared plumbing every tool uses. One spec feeds both the MCP server and the CLI. */
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { PhotosError, ToolError } from "../errors.js";
|
|
4
|
+
import { annotationsFor, needsConfirm } from "../safety.js";
|
|
5
|
+
export function ok(data) {
|
|
6
|
+
const text = typeof data === "string" ? data : JSON.stringify(data, null, 2);
|
|
7
|
+
return { content: [{ type: "text", text }] };
|
|
8
|
+
}
|
|
9
|
+
export function fail(error) {
|
|
10
|
+
const payload = error instanceof PhotosError ? error.toJSON() : { error: error?.message ?? String(error) };
|
|
11
|
+
return { content: [{ type: "text", text: JSON.stringify(payload, null, 2) }], isError: true };
|
|
12
|
+
}
|
|
13
|
+
export const confirmArg = {
|
|
14
|
+
confirm: z
|
|
15
|
+
.boolean()
|
|
16
|
+
.optional()
|
|
17
|
+
.describe("Must be true for this to run. It cannot be undone from here, so it is refused without an explicit confirmation."),
|
|
18
|
+
};
|
|
19
|
+
export function defineTool(spec) {
|
|
20
|
+
return spec;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Every tool runs the same way: guard, then hand the arguments to Python.
|
|
24
|
+
*
|
|
25
|
+
* There is no per-tool handler, because there is nothing per-tool to do. The
|
|
26
|
+
* Python server already implements all thirteen; this layer exists to give them
|
|
27
|
+
* a second surface, an install story and a schema HQ can import.
|
|
28
|
+
*/
|
|
29
|
+
export async function runTool(spec, args, ctx) {
|
|
30
|
+
if (spec.risk !== "read") {
|
|
31
|
+
const summary = spec.summary?.(args) ?? spec.name;
|
|
32
|
+
ctx.guard.check(spec.name, spec.risk, args.confirm, summary);
|
|
33
|
+
}
|
|
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);
|
|
37
|
+
if (result.isError)
|
|
38
|
+
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.
|
|
41
|
+
try {
|
|
42
|
+
return JSON.parse(result.text);
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
return result.text;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
export function register(server, contextFor, spec) {
|
|
49
|
+
server.registerTool(spec.name, {
|
|
50
|
+
title: spec.title,
|
|
51
|
+
description: spec.description,
|
|
52
|
+
inputSchema: spec.schema,
|
|
53
|
+
annotations: { title: spec.title, ...annotationsFor(spec.risk, { idempotent: spec.idempotent }) },
|
|
54
|
+
}, (async (args) => {
|
|
55
|
+
try {
|
|
56
|
+
return ok(await runTool(spec, args, contextFor()));
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
return fail(error);
|
|
60
|
+
}
|
|
61
|
+
}));
|
|
62
|
+
}
|
|
63
|
+
export { needsConfirm };
|
|
64
|
+
//# sourceMappingURL=kit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kit.js","sourceRoot":"","sources":["../../src-ts/tools/kit.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@thenavidm/apple-photos-mcp-cli",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
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
|
-
"main": "./
|
|
6
|
+
"main": "./lib/index.js",
|
|
7
7
|
"bin": {
|
|
8
|
-
"apple-photos-mcp": "
|
|
9
|
-
"apple-photos-cli": "
|
|
8
|
+
"apple-photos-mcp": "lib/index.js",
|
|
9
|
+
"apple-photos-cli": "lib/index.js"
|
|
10
10
|
},
|
|
11
11
|
"engines": {
|
|
12
12
|
"node": ">=20"
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"cli"
|
|
51
51
|
],
|
|
52
52
|
"files": [
|
|
53
|
-
"
|
|
53
|
+
"lib",
|
|
54
54
|
"src",
|
|
55
55
|
"pyproject.toml",
|
|
56
56
|
"README.md",
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|