flickr-mcp

flickr-mcp

Enables AI assistants to access, tag, describe, and manage a Flickr photo library, including automated batch processing.

Category
访问服务器

README

flickr-mcp

npm MCP Registry Sponsor

An MCP server that gives AI assistants authenticated access to your Flickr photo library. Tag photos, write descriptions, set titles, manage group memberships, and run a full automated processing workflow — all driven by AI, applied to your photos.

Works with any MCP-compatible AI client: Claude, Cursor, Windsurf, and others.


What it does

Once connected, you can ask your AI assistant things like:

  • "Process all my untagged photos" — scans your whole library, tags and describes everything in one pass
  • "Tag all the photos in my Japan album"
  • "Write a description for this photo" (with a Flickr URL or photo ID)
  • "Find my car photos and add them to relevant Flickr groups"
  • "Look at my recent uploads and add relevant tags to each one"

The AI looks at your photos visually (via built-in image fetching), generates metadata from the actual image content and EXIF data, and either previews changes before applying or runs fully automated depending on the tool.


Requirements

  • Node.js 18 or later
  • A Flickr Pro account — Flickr requires Pro to register API applications
  • An MCP-compatible AI client

Setup

1. Register a Flickr API key

Note: Flickr requires a Pro account to register API applications (~$8/month or ~$72/year). If you're using Flickr seriously enough to want AI-assisted tagging, you likely already have one.

Go to flickr.com/services/apps/create/noncommercial and fill out the short form — any app name works, select "personal use." It takes about two minutes. Copy the API key and API secret from the next page.

2. Run the setup command

npx flickr-mcp setup

A browser window will open with a setup wizard. Paste your API key and secret, then follow the prompts to authorize access to your Flickr account. Your credentials are saved to ~/.config/flickr-mcp/credentials.json and never leave your machine.

3. Add flickr-mcp to your AI client

The easiest way is to paste the following prompt directly into your AI assistant. It contains everything needed — the config entry, the setup reminder, and a pointer to the full docs:

Add an MCP server to my config with these details:

  • Name: flickr
  • Command: npx
  • Args: ["flickr-mcp"]

The full config entry is:

"flickr": {
  "command": "npx",
  "args": ["flickr-mcp"]
}

Add this to the mcpServers block in my MCP config file, then let me know where you put it and remind me to restart the client.

Full documentation and source: https://github.com/MK3Core/flickr-mcp

Your assistant knows where its own config file lives and will place the entry correctly regardless of which client you're using. After it confirms, restart the client.

<details> <summary>Prefer to do it manually?</summary>

Claude Code — add to ~/.claude/settings.json (global) or .claude/settings.json in a project:

{
  "mcpServers": {
    "flickr": {
      "command": "npx",
      "args": ["flickr-mcp"]
    }
  }
}

Claude Desktop

  • Mac: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "flickr": {
      "command": "npx",
      "args": ["flickr-mcp"]
    }
  }
}

Cursor / Windsurf — check your client's MCP settings panel, or ask your assistant to find and edit the config file for you.

</details>


Full automated workflow

The quickest way to process your entire library is two tool calls:

  1. flickr_get_unprocessed_photos — scans every photo in your library and returns a list of anything missing tags, a description, or a real title. Raw camera filenames like DSC_0042 or Lightroom export suffixes like IMG_1234-Edit are flagged automatically.

  2. flickr_process_photo — applies title, description, tags, and group assignments to a single photo in one atomic call. The AI fetches the image visually, reads EXIF for camera/lens/location data, generates up to ~20 focused tags following Flickr best practices, writes a concise description, and adds the photo to relevant groups — joining them automatically if needed.

Just ask: "Process all my untagged photos" and the AI will page through the unprocessed list and handle each one.


Available tools

These are the tools your AI assistant can call once the server is running. You don't interact with them directly — just describe what you want in plain language.

Reading your library

Tool Description
flickr_list_photos List your photostream, paginated
flickr_get_photo Full photo details, optionally including the image itself for visual analysis
flickr_get_exif Camera metadata: make, model, lens, GPS, shutter speed, ISO
flickr_search_my_photos Search your own photos by keyword or tag
flickr_get_albums List your albums
flickr_get_album_photos List photos inside an album

Editing metadata

Tool Description
flickr_add_tags Add tags to a photo (previews before applying by default)
flickr_remove_tag Remove a tag from a photo
flickr_set_metadata Set a photo's title and/or description (previews before applying by default)

Group management

Tool Description
flickr_search_groups Search Flickr groups by keyword — returns name, member count, pool size
flickr_join_group Join a Flickr group programmatically (accepts group rules automatically)
flickr_add_to_group Add a photo to a group pool (previews before applying by default)

Automated workflow

Tool Description
flickr_get_unprocessed_photos Scan your entire library and return photos missing tags, descriptions, or real titles
flickr_process_photo Apply title + description + tags + group assignments in one call, with auto-join

Individual write tools (flickr_add_tags, flickr_set_metadata, flickr_add_to_group) show a dry-run preview before applying. flickr_process_photo runs without preview by default — it's designed for batch automation.


Tagging approach

The AI follows Flickr-specific best practices when generating tags:

  • Target ~20 tags per photo — enough to reach the right audiences without diluting reach
  • Broad + specific subject pairing: "dog" and "golden retriever", not just one or the other
  • Location chain: continent, country, region, city, venue where available
  • Gear tags from EXIF: camera body and focal length (e.g. "sony a7 iv", "85mm")
  • Never: noise tags ("photo", "image", "picture"), irrelevant popular tags, or tag spam — Flickr's spam policy can hide photos from search

Privacy and scope

This server can only access your own photos. It has no ability to read, search, or modify other users' content. The write access it requests is limited to your account.

Your API credentials are stored locally at ~/.config/flickr-mcp/credentials.json and are never sent anywhere except Flickr's own API.


Rate limiting

The server uses a token bucket that targets 3,000 requests/hour (Flickr's limit is 3,600). Burst of up to 10 requests is allowed. Image fetches count against the budget. Under normal use you will not hit this limit.


Running from source

git clone https://github.com/MK3Core/flickr-mcp
cd flickr-mcp
npm install
npm run build
node dist/index.js setup

Then point your MCP client at node /path/to/flickr-mcp/dist/index.js instead of npx flickr-mcp.


Support

flickr-mcp is free and open source. If it saves you time, a GitHub sponsorship is always appreciated — it helps justify spending more time on projects like this.

Sponsor


Contributing

Issues and pull requests are welcome. The codebase is intentionally small — around 700 lines of TypeScript across six files.

src/
  index.ts          Entry point
  setup.ts          OAuth setup flow
  auth.ts           OAuth 1.0a implementation + credential storage
  rate-limiter.ts   Token bucket (3,000 req/hour)
  flickr-client.ts  Flickr API wrapper
  tools.ts          All tool definitions and handlers

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选