stillport
Allows searching an Apple Photos library using the native Photos search engine, filtering by date, favorites, and albums, and exporting previews or original files.
Allows importing and searching local Google Takeout photo archives by filenames, captions, and folder names, and exporting photos from the archive.
Allows starting Google Photos Picker sessions for a user to select photos, then accessing the selected session items and exporting previews or full downloads.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@stillportsearch my Apple Photos for dogs at the beach"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Stillport gives AI agents a CLI and an MCP server for Apple Photos, Google Photos Picker, and local Google Takeout archives. Search with the native Photos engine, inspect metadata, and export the photos an agent needs to see.
Built in TypeScript with Bun. Standalone releases require neither Node nor Bun. No hosted intermediary, telemetry, or AI API key.
Install
macOS and Linux, Apple Silicon/ARM64 or Intel/x64:
curl -fsSL https://raw.githubusercontent.com/baney75/stillport/main/install.sh | shInstalls into ~/.local/bin. If needed, add export PATH="$HOME/.local/bin:$PATH" to your shell profile, then restart your shell. The installer verifies the release’s SHA-256 checksum and checks the binary before replacing an existing installation. It keeps the previous executable as stillport.previous.
Prefer to inspect first? Read the installer, download it, and run sh install.sh. Override the destination with STILLPORT_INSTALL_DIR; pin a release with STILLPORT_VERSION=v0.1.0. Manual downloads include SHA256SUMS.
stillport doctor
stillport update --check
stillport updateThe updater verifies checksums, validates the new version, and replaces the binary atomically. It does not change your credentials or photo index. Checksums verify release integrity; they are not independent publisher signatures. The initial macOS binaries are not Developer ID notarized.
Related MCP server: iOS MCP Server
Apple Photos: native search
stillport search "dogs at the beach" --source apple --limit 10
stillport search "July 2026" --source apple
stillport list --source apple --after 2026-07-01 --before 2026-08-01
stillport list --source apple --favorite
stillport albums --source apple
stillport selection
stillport get 'PHOTO_ID' --source apple
stillport preview 'PHOTO_ID' --source apple --out ./previews
stillport export 'PHOTO_ID' --source apple --original --out ./photos
stillport reveal 'PHOTO_ID'Queries go directly to Apple Photos’ search scripting command. This uses the search index maintained by Photos; results depend on macOS, Photos, language, and indexing progress. People, places, subjects, and text may be available through that engine. Stillport does not invent a separate semantic index or guarantee a specific match. Date, favorites, and album filters can narrow results.
Requires a Mac with Photos and its scripting search command. On first access, macOS may ask you to allow your terminal or agent host to control Photos. Grant that in System Settings → Privacy & Security → Automation. This is access to the currently open library, including items synced through iCloud. Stillport never reads or modifies Photos’ private database. It exposes no library editing or deletion commands. Its Automation permission is broader than the operations it exposes.
preview makes a still image up to 1600 pixels. export --original asks Photos for original files, which may include more than one file per item and may need an iCloud download. Without --original, Photos exports its rendered representation. Hidden, Recently Deleted, smart album access, and original availability are not guaranteed.
Google Photos: search and choose
Google removed general access to users’ existing libraries from the Library API in 2025. The supported route is the Photos Picker API: a person uses Google Photos’ native search and chooses what the agent can access. Stillport does not scrape a signed-in browser or ask for Google passwords.
One-time setup requires your own Google Cloud OAuth Desktop app client with the Photos Picker API enabled. Setup guide.
stillport auth google --client-json ./desktop-client.json
stillport google pick --open
# Open the returned pickerUri, search in Google Photos, select photos, finish.
stillport google session 'SESSION_ID'
stillport google items 'SESSION_ID'
stillport preview 'PHOTO_ID' --source google --session 'SESSION_ID' --out ./previews
stillport export 'PHOTO_ID' --source google --session 'SESSION_ID' --out ./photos
stillport google close 'SESSION_ID'Agents should pass the Picker URL to the user and honor the session’s pollingConfig. There is no unattended native Google library search. Sessions expire, and only selected items are accessible. Google’s image downloads omit location metadata; its video download is a high-quality transcode. Downloads are capped at 1 GiB per item. Credentials use the OS credential store; --profile NAME separates Google authorizations. See the setup guide for headless tokens and revocation.
Google Takeout: local archive search
stillport takeout import '/path/to/extracted/Takeout/Google Photos'
stillport search 'beach' --source takeout
stillport albums --source takeout
stillport get 'PHOTO_ID' --source takeout
stillport export 'PHOTO_ID' --source takeout --out ./photosImports metadata from extracted media and JSON sidecars, including supplemental metadata files. Search covers filenames, captions, and folder names. It cannot reproduce Google’s private people, object, or OCR index. The archive stays where it is; Stillport keeps a private SQLite index. Re-import the same directory to update it and remove stale entries. Separate archive copies are separate items; there is no content-based deduplication.
Built for agents
JSON by default, including errors.
--humanpretty-prints;--jsonis explicit JSON mode.stillport schemadescribes commands and options.stillport capabilitiesexplains each provider’s limits.Bounded pages, opaque IDs, and
nextCursor. Reuse the same query and filters with--cursor.--afterincludes its timestamp;--beforeexcludes it. Date-only values mean midnight UTC.Each export creates a new private folder and returns its real paths. No overwrites or automatic uploads.
Exit codes:
0success,1failure,2input,3permission/platform,4not found,5temporary provider failure.Help and version are plain text. OAuth progress goes to stderr; stdout contains the final JSON result.
{"ok":true,"apiVersion":"1","data":{"items":[],"nextCursor":null,"searchEngine":"apple-photos-native"}}The example is illustrative. A returned page may include other documented metadata.
MCP
Use the absolute path printed by command -v stillport in your MCP client’s config. Claude Desktop and clients using the mcpServers format:
{
"mcpServers": {
"stillport": {
"command": "/absolute/path/to/stillport",
"args": ["mcp"]
}
}
}The stdio server exposes provider discovery, search, listing, albums, selection, metadata, previews, exports, and Google Picker sessions. Authenticate Google once using the CLI before starting the server. Use args: ["mcp", "--profile", "personal"] for a named profile. MCP does not expose credential management, self-update, or archive import.
Prefer shell tools? Read the portable agent skill, or run stillport agent skill to retrieve its contents as JSON. The agent can then use its own image-reading tool on an exported preview.
Development
git clone https://github.com/baney75/stillport.git
cd stillport
bun install --frozen-lockfile --ignore-scripts
bun run check
bun run dev -- capabilities
bun run build
# Cross-compile all four release binaries:
bun scripts/build.ts --allBun 1.3.10+; releases build with 1.3.14. Runtime code has no npm dependencies. TypeScript and Bun types are development dependencies. CI tests macOS and Linux and checks a compiled executable. Tagging vX.Y.Z builds all release binaries and publishes their checksums, provided the tag matches package.json.
For source installs, update with git pull --ff-only && bun install --frozen-lockfile --ignore-scripts. stillport update manages standalone binaries.
Project
Verification and limits · Security · Contributing · Brand assets · MIT license
Stillport is an independent project, not affiliated with Apple or Google. Platform names identify the services it connects to.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Search Google straight from your AI agent. Web results, images, videos, news, products, scholarly ar
Live Google Maps business search, review, and photo data for AI agents over MCP.
Personal asset search engine: everything you make or upload is searchable by what's inside it.
15 media & data tools for AI agents: search, transcribe, subtitles, voiceover, translate & more.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables AI assistants to search, browse, and retrieve metadata and images from your Google Photos library. It supports content-based filtering, album listing, and location extraction via STDIO and HTTP transports.39-
- FlicenseNot gradedqualityDmaintenanceAllows LLMs to access, scan, and search photos on connected iOS devices via USB using libimobiledevice and ChromaDB. It supports semantic search, metadata filtering, and automated file organization for efficient media management.-
- AlicenseAqualityAmaintenanceEnables AI assistants to query and export from the macOS Apple Photos library using natural language, backed by osxphotos.2110314MIT

CoreViz MCPofficial
AlicenseNot gradedqualityDmaintenanceExposes a visual library with semantic search, tagging, editing, and management of photos as tools for AI agents like Claude Code.3048MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/baney75/stillport'
If you have feedback or need assistance with the MCP directory API, please join our Discord server