appshots-mcp

appshots-mcp

Unofficial MCP server for appshots.design that enables AI assistants to search and view real app screenshots for grounded design research.

Category
访问服务器

README

appshots-mcp

Unofficial MCP server for appshots.design. Lets Claude search the library and actually look at the screenshots, so it can pull real design references instead of guessing.

appshots has no public API — this talks to their backend (be.appshots.design) using your own account's Firebase session. You get back whatever your account can see.

tools

  • appshots_search_screens — search apps + their screens by keyword
  • appshots_search_flows — search user flows
  • appshots_search_by_tag — screens by UI pattern (Onboarding, Settings, Paywall…)
  • appshots_search_by_component — screens by component (Card, Search Bar, Tab Bar…)
  • appshots_search_text_in_images — find text inside screenshots
  • appshots_get_screens — fetch screenshots as actual images Claude can see
  • appshots_whoami — which account is connected

Search tools take query, platform (ios/android/web), page, per_page, scope. get_screens takes the img_urls from any search result and returns them as images. It skips blurred free-tier previews by default.

setup

Need node 18+ and an appshots account (free is fine).

pnpm install
pnpm run build
node dist/index.js auth

pnpm test runs the offline checks (url guard, formatters, token parsing) — no account needed.

The auth command tells you to log into appshots, open the browser console, and run:

copy(localStorage['firebase:authUser:AIzaSyD0RRt1ciOD-6JZ2RfACtM0FkHc6w4ZXeg:[DEFAULT]'])

Paste that at the prompt. Token saves to ~/.appshots-mcp/auth.json and refreshes itself after.

clients

This is a plain stdio MCP server, so it works with any MCP client, not just Claude. Point whatever you use at node /absolute/path/to/appshots-mcp/dist/index.js.

Claude Code:

claude mcp add appshots -- node /absolute/path/to/appshots-mcp/dist/index.js

Codex CLI:

codex mcp add appshots -- node /absolute/path/to/appshots-mcp/dist/index.js

Claude Desktop / Cursor / Cline / Windsurf / anything using the mcpServers JSON format:

{
  "mcpServers": {
    "appshots": {
      "command": "node",
      "args": ["/absolute/path/to/appshots-mcp/dist/index.js"]
    }
  }
}

Restart / reconnect the client and the tools show up. Auth is shared — it reads the same ~/.appshots-mcp/auth.json no matter which client runs it.

how it works

appshots is a Nuxt app on Firebase. Every request carries your Firebase id token as a bearer header; it expires hourly and gets refreshed off the refresh token against Google's securetoken endpoint. Search hits the _es (elasticsearch) routes. Screenshots are public storage URLs — get_screens fetches them (host-allowlisted so it can't be pointed anywhere else) and hands them back as base64 for the model to look at.

use case

The point is grounded design research. Instead of one-shotting a design, have Claude look at what real apps do first. Example prompt:

Research how top apps handle onboarding for a fintech app. Search for the relevant screens and flows, fetch the best ones as images, compare the patterns across products, and write me an HTML report with the actual screenshots embedded and notes on what the best apps do differently.

Claude searches, pulls the screens as images, reasons over the real UI, and gives you a report grounded in shipped products — then you take that into whatever you're building.

notes

  • per_page defaults to 20 and is honored up to the number of matches — no free-tier cap showed up in testing. search_flows caps at 20 and search_text_in_images always returns 20 regardless of what you pass.
  • if a screen ever comes back as a blurred /blur/ preview, get_screens skips it unless you pass include_blurred: true.
  • search_by_tag / search_by_component match whole tag values and the backend is case-sensitive; the server retries your query title-cased, so onboarding finds Onboarding. tags are free-form, so obscure terms still miss — fall back to search_screens.
  • appshots can change these endpoints whenever. it surfaces errors instead of hiding them.

license

ISC

推荐服务器

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 模型以安全和受控的方式获取实时的网络信息。

官方
精选