appshots-mcp
Unofficial MCP server for appshots.design that enables AI assistants to search and view real app screenshots for grounded design research.
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 keywordappshots_search_flows— search user flowsappshots_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 screenshotsappshots_get_screens— fetch screenshots as actual images Claude can seeappshots_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_pagedefaults to 20 and is honored up to the number of matches — no free-tier cap showed up in testing.search_flowscaps at 20 andsearch_text_in_imagesalways returns 20 regardless of what you pass.- if a screen ever comes back as a blurred
/blur/preview,get_screensskips it unless you passinclude_blurred: true. search_by_tag/search_by_componentmatch whole tag values and the backend is case-sensitive; the server retries your query title-cased, soonboardingfindsOnboarding. tags are free-form, so obscure terms still miss — fall back tosearch_screens.- appshots can change these endpoints whenever. it surfaces errors instead of hiding them.
license
ISC
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。