Atlas / MCP servers / thenavidm / apple-photos-mcp-cli

apple-photos-mcp-cliSAFE

mcp/thenavidm/apple-photos-mcp-cli

Apple Photos MCP server and CLI for Claude Code, Codex and AI agents. 13 tools to search, look at, organise and export your own library, entirely on your Mac.

Verdict
SAFE
Grade
B
Trust score
89 /100
Exposed tools
13 8r · 4w · 1d
Transport
—
License
MIT
Stars
0
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

[](https://www.npmjs.com/package/@thenavidm/apple-photos-mcp-cli) [](./LICENSE) [](https://youtube.com/@thenavidm?sub_confirmation=1) [](https://x.com/thenavidm) [](https://linkedin.com/in/thenavidm)

Apple Photos MCP server and CLI for Claude Code, Codex and AI agents. 13 tools to search, look at, organise and export your own library, entirely on your Mac.

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.

Built and maintained by Navid Moazzez. Built on Slipway, which turns one definition of each tool into the MCP server and the CLI.

Everything runs on your Mac. There is no backend.

Two ways to use it

Command line

apple-photos-cli in your terminal, for scripting, cron, pipes, or a quick question without opening anything:

apple-photos-cli                                    # every command, one line each
apple-photos-cli library-stats --json               # real totals, one call
apple-photos-cli search-photos "sunset" --limit 5 --screenshots exclude
apple-photos-cli photo-info --refs IMG_2073.MOV
apple-photos-cli export-originals --refs  --directory ./out
apple
Read from source at commit b30908b7b322OBSERVED · 2026-10-11
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.

claude-code
claude mcp add apple-photos-mcp-cli -- npx -y @thenavidm/[email protected]
claude-desktop
{
  "mcpServers": {
    "apple-photos-mcp-cli": {
      "command": "npx",
      "args": [
        "-y",
        "@thenavidm/[email protected]"
      ]
    }
  }
}
03

Exposed tools (13)

8 read · 4 write · 1 destructive. Blast radius: 1 tool can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.

ToolRiskDescription
add_keywordswriteAdd keywords to items. Keywords are how a library stays searchable beyond what Apple
add_to_albumwriteAdd items to an album, creating it if it does not exist.
archive_photosreadThe closest thing to deleting that macOS allows.
doctorreadDiagnose setup: macOS, Full Disk Access, the library, the index, and
export_originalsreadExport 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.
favorite_photosdestructiveMark items as favourites, or clear the mark. One click to undo in Photos, so this does not ask for confirmation.
library_statsreadSize and shape of the library: totals, albums, named people, how much
list_vocabularyreadList the scene labels Apple
look_at_photosreadReturn 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.
photo_inforeadEverything 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.
search_photosreadSearch the entire Photos library through Apple
set_photo_descriptionwriteSet the description, the caption field Photos shows under an item.
set_photo_titlewriteSet the title on one item, as shown in Photos.
04

Trust audit

SAFEgrade B · trust 89/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codePASS
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfaceWARN
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (2 observation(s))
Network
declared (1 observation(s))
Shell
none-observed
Dependencies
not all pinned
Secrets in source
none-found

Findings (7)

MEDIUMFilesystem / path · mcp.destructive_tools · CWE-22, CWE-59
favorite_photos
Why it matters. 1 tool(s) can delete or overwrite
Fix. prefer a read-only mode or scoped tokens; the page states the blast radius
LOWInventory / provenance · inv.hidden_file · CWE-1104
.mcpbignore
.mcpbignore
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
desktop-extension/build.sh:59
( cd "$BUILD" && zip -qr "../../$OUT" . -x '*.DS_Store' )
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
@thenavidm/slipway, @types/node, typescript, vitest
Why it matters. 4 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
CHANGELOG.md:33
Node 22 or later is required; 1.1.1 ran on 20. Over MCP, expect an approval prompt or form before an archive; a headless agent that should archive with `confirm: true` alone needs `APPLE_PHOTOS_CONFIR
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
INFOInventory / provenance · inv.oversize · CWE-1104
desktop-extension/apple-photos-1.0.4.mcpb
desktop-extension/apple-photos-1.0.4.mcpb
Why it matters. 4764113 bytes not read
INFOSupply chain · prompt.pipe_to_shell · CWE-829, CWE-1357
README.md:203
curl -LsSf https://astral.sh/uv/install.sh | sh

Gates applied: no_behavioural_pass.

Audited 2026-10-11 · audit v0.4.1 · source sha b30908b7b322full audit observations/trust-audit/mcp-server/thenavidm__apple-photos-mcp-cli.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-11b30908b7b322SAFEB89first audit
06

Questions

What is the apple-photos-mcp-cli MCP server?

Apple Photos MCP server and CLI for Claude Code, Codex and AI agents. 13 tools to search, look at, organise and export your own library, entirely on your Mac.

What tools does apple-photos-mcp-cli expose?

13 in total: 8 read-only, 4 that write, and 1 that can delete or overwrite (favorite_photos). Every one is listed on this page with its risk.

Is apple-photos-mcp-cli safe to connect to an agent?

The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean server reads B. Separately from the audit: 1 of its tools can destroy data, so scope the token you give it to what you actually need.

What credentials does apple-photos-mcp-cli need?

No credential environment variables were found in its source, so it appears to need none.

How current is this page?

The grade is for one exact copy of the source (b30908b7b322), read on 2026-10-11. The repository is watched and re-audited when it changes.

Advertisement