Pinterest MCP
Provides tools for browsing and collecting from Pinterest without login or API key: search pins by keyword, view pin details, find related pins, read public boards, preview images as thumbnails, and download original images.
Click on "Deploy 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., "@Pinterest MCPSearch Pinterest for 20 dark dashboard UI pins and show me 8 previews"
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.
Pinterest MCP is an open-source MCP Server that gives Claude Code, Codex, Cursor and any other MCP client direct access to Pinterest — search pins, actually look at the images, follow "more like this", read boards, and download originals. It's built for designers and front-end developers who start every task by collecting references.
No Pinterest login. No API key. No headless browser.
❌ Without Pinterest MCP
You switch to the browser, search, scroll, save images by hand, and drag them back into the chat.
The AI only gets the images you remembered to paste, without their source, colours or context.
Related MCP server: pinterest-mcp
✅ With Pinterest MCP
> Find 20 dark dashboard UIs on Pinterest, look at the first 8,
pick the 3 with the most restrained palette and download them.The agent searches, looks at the thumbnails, explains its picks, saves full-resolution files to disk — and can go straight on to build the screen from them.
Features
⚡ Fast — talks to the same JSON endpoints pinterest.com uses; ~2–3 s for 20 pins, no Chrome to launch.
👀 The model can see — optional thumbnails are returned as images, so the agent judges style, layout and colour, not just titles.
🧾 Rich metadata — title, description, full-size URL and dimensions (thumbnail-only pins flagged
low_res), dominant colour, source site, board, creator, date. Ads are filtered out.🔁 Go deeper — related pins, whole boards, pagination with bookmarks.
🛡️ Robust — keeps an anonymous session and retries Pinterest's occasional "fake end of feed".
🪶 Token-friendly — hashtag walls collapsed, unusable fields dropped.
🎬 Videos too — video pins come with an MP4
video_url; filter to videos only for motion references.📥 Downloads — image originals with automatic 736px fallback and MP4 videos, only from
*.pinimg.com.
Quick start
Requires Node.js ≥ 20.18.
claude mcp add pinterest --scope user -- npx -y @sunkimkk/pinterest-mcp[mcp_servers.pinterest]
command = "npx"
args = ["-y", "@sunkimkk/pinterest-mcp"]Download pinterest-mcp.mcpb from the latest release and double-click it. Claude Desktop shows an install dialog where you can pick a download folder and an optional proxy.
{
"mcpServers": {
"pinterest": {
"command": "npx",
"args": ["-y", "@sunkimkk/pinterest-mcp"]
}
}
}Cursor: ~/.cursor/mcp.json · Claude Desktop: claude_desktop_config.json
git clone https://github.com/sunkimk/pinterest-mcp.git
cd pinterest-mcp && npm install
claude mcp add pinterest --scope user -- node "$PWD/src/server.js"Tools
Tool | What it does |
| Keyword search in any language, with pagination and optional thumbnails |
| Full details of one pin (pin URL, |
| "More like this" for a pin |
| Pins saved on a public board |
| Turn image URLs into thumbnails the model can see |
| Save full-resolution images and MP4 videos to disk |
search, related_pins and board_pins accept previews: N to attach thumbnails of the first N results, and media: "video" to return only video pins (each with an MP4 video_url) — handy for motion and interaction references.
Example prompts
"Search Pinterest for glassmorphism login screens and show me 8 thumbnails."
"What do these have in common — layout, palette, typography?"
"Find pins similar to https://www.pinterest.com/pin/1128714725389331478/"
"List everything on https://www.pinterest.com/awsmd_com/app-design/"
"Find 10 profile page animation videos and download them."
"Download #2, #5 and #7 to ~/Desktop/refs/login."
Tip: English keywords return far more results. Add words like
ui,app,dribbble,posterormoodboardto steer the style.
Configuration
Variable | Default | Description |
|
| Download root |
| system | HTTP proxy, e.g. |
|
| Request language |
|
| Per-request timeout |
Example with Claude Code:
claude mcp add pinterest --scope user -e MCP_PINTEREST_PROXY=http://127.0.0.1:7890 -- npx -y @sunkimkk/pinterest-mcpFAQ
Why can't I get details for a search result?
Logged-out search results carry anonymous ids that Pinterest won't resolve. Everything they have is already in the search result; get_pin and related_pins need a real pin link (pinterest.com/pin/<number>/).
Network errors?
If pinterest.com is blocked where you are, set MCP_PINTEREST_PROXY.
Will it break? It uses Pinterest's web endpoints rather than the official API, so a Pinterest redesign may require an update. Watch the repo or check the changelog.
Development
npm install
npm test # spins up the server and calls every tool against live pinterest.comSee CHANGELOG.md for release history. Issues and PRs are welcome.
Disclaimer
Not affiliated with, endorsed by, or sponsored by Pinterest. Use it for personal inspiration at a reasonable request rate, follow Pinterest's Terms of Service, and respect creators' copyright — downloaded images are for reference only.
Acknowledgements
Thanks to terryso/mcp-pinterest for first exploring Pinterest over MCP.
Star History
License
MIT © sunkimk
Available Tools
6 toolspinterest_board_pinsPins on a Pinterest boardARead-only
List the pins saved on a public board, e.g. one found in a search result's board.url. Accepts a board URL (pinterest.com///) or "/".
| Name | Required | Description | Default |
|---|---|---|---|
| board | Yes | Board URL or "<user>/<board>" | |
| limit | No | How many pins to return (1-200, default 25) | |
| media | No | Only return video pins ("video"), only still images ("image"), or both (default) | any |
| bookmark | No | Pass next_bookmark from a previous call to get the next page | |
| previews | No | Also attach small thumbnails of the first N pins so you can actually look at them (0-16, default 0). Use this when judging visual style, layout or colour matters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint and openWorldHint already declare the safe-read, open-web nature, so the description only needs to add context. It contributes one genuinely useful constraint — the board must be public — but says nothing about pagination limits, rate limiting, or what happens with an invalid/private board URL, which is the main failure mode for an open-world read tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, and the core action is front-loaded ahead of the input-format tip. Nothing extraneous.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter list tool with full schema coverage and no output schema, the description covers purpose, access scope, and input sourcing adequately. It doesn't preview the shape of the response (pin fields, next_bookmark paging), but the schema's bookmark description carries that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter, including the board URL vs. '<user>/<board>' formats, is already documented in structured form. The description restates the board format without adding syntax or edge-case detail, so baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — 'List the pins saved on a public board' — with the important scope qualifier 'public'. An agent can distinguish it from pinterest_search or pinterest_get_pin without opening the schema, though sibling tools are never named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for when this is the right tool and where the required input comes from ('e.g. one found in a search result's board.url'), and the word 'public' implicitly excludes private boards. It stops short of naming an alternative for keyword-based discovery (pinterest_search) or single-pin lookup (pinterest_get_pin).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pinterest_downloadDownload Pinterest images and videosA
Save pin images (image_url) and videos (video_url MP4s) to disk; images at full resolution, falling back to 736px when the original is unavailable. Default location: /root/Downloads/pinterest-mcp/. Returns the saved file paths.
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Resolution to save | originals |
| folder | No | Sub-folder name, e.g. the search topic | |
| directory | No | Absolute base directory (default /root/Downloads/pinterest-mcp) | |
| image_urls | Yes | image_url or video_url values from other tools (*.pinimg.com) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, openWorldHint=true, so safety profile is partly covered. The description adds meaningful behavior beyond that: files are written to disk at a default path (/root/Downloads/pinterest-mcp/<folder>), resolution falls back to 736px when originals are unavailable, and saved paths are returned. It omits overwrite/duplicate-name behavior, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with the core action and destination front-loaded, then the return value. Every clause carries information; minor dash/semicolon density is the only cost.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter file-producing tool with no output schema, the description covers destination defaults, resolution behavior, accepted URL types, and return value ('saved file paths'). Only overwrite/naming behavior for repeated downloads is left unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds value beyond the schema: it clarifies that image_urls accepts both image_url and video_url (*.pinimg.com) values and explains the resolution fallback semantics tied to the 'size' parameter. The 'directory'/'folder' relationship is only lightly implied (via the shown default path).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Save pin images ... and videos ... to disk') and disambiguates by scope from the read-only siblings (search, get_pin, related_pins, board_pins, preview_images). An agent can immediately tell this is the write-to-disk tool rather than another pin lookup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage ('image_url or video_url values from other tools') but never explicitly states when to call this versus pinterest_preview_images, nor any prerequisite such as running a search first. The up-front 'values from other tools' hint is useful but the alternative routing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pinterest_get_pinGet Pinterest pinARead-only
Get full details for one pin from its link or numeric id: full description, image, source website, board, creator, saves, comments. Anonymous search ids (e1_…) cannot be looked up — their data is already in the search result.
| Name | Required | Description | Default |
|---|---|---|---|
| pin | Yes | A pin link (pinterest.com/pin/123…/, any regional domain, or a pin.it short link) or a numeric pin id | |
| preview | No | Attach a thumbnail of the image |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds non-obvious behavior beyond that: the failure mode for e1_ prefixed ids and the fact that the payload is a full single-pin detail record. It does not say what happens on an invalid or missing pin, but the additions are substantive for an annotated read tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste. The capability and its returned fields come first, and the exclusion caveat follows, which is the right ordering for an agent scanning for fit.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the inline enumeration of returned fields carries the return-value contract and does so adequately. With annotations covering safety and the schema covering both parameters, nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description goes further by constraining the 'pin' argument — it is a link or numeric id, and e1_ style ids are invalid. That value-level restriction is not expressed in the schema and prevents a predictable error.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get full details for one pin') and enumerates the returned fields (description, image, source, board, creator, saves, comments), so the agent knows exactly what it gets back. It also explicitly distinguishes itself from the listing/search path by ruling out anonymous e1_ ids.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear negative case — anonymous search ids cannot be looked up because their data is already in the search result — which steers the agent away from a wasted call. It does not name a sibling tool explicitly (pinterest_search, pinterest_related_pins) as the alternative, leaving that inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pinterest_preview_imagesLook at Pinterest imagesARead-only
Fetch small thumbnails of pin images (image_url values from other tools) so you can see them. Up to 16 at a time.
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Thumbnail width; larger costs more tokens | 236x |
| image_urls | Yes | i.pinimg.com image URLs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, openWorldHint), and the description adds genuinely non-structured context: the result is visual content the agent can actually perceive, and URLs are meant to come from other tools. It does not cover failure modes for invalid/non-pinimg URLs or what happens with fewer than the max items.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action and purpose, with the batch limit trailing. No filler to remove.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description does explain what comes back (small thumbnails the agent can view), which is the key unknown for a multimodal tool. It could say more about behavior on partial failures or oversized batches, but nothing essential to a correct call is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds provenance ('image_url values from other tools') that tells the agent where legitimate inputs originate, which the schema's 'i.pinimg.com image URLs' does not fully convey. The size parameter's tradeoff is left entirely to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource ('Fetch small thumbnails of pin images') and clarifies the intent ('so you can see them'), which separates it from text-returning siblings like pinterest_get_pin. It never names pinterest_download, which is the obvious alternative for full-size images, so sibling differentiation is implied rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'so you can see them' implies the scenario (visual inspection) and the parenthetical points at chained calls, but there is no explicit when-to-use/when-not statement and no named alternative such as pinterest_download for full-resolution images. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pinterest_searchSearch PinterestARead-only
Search Pinterest pins by keyword (any language) for visual inspiration. Returns title, description, full-size image_url with width/height, dominant colour, source website, board and save count for each pin; video pins also get video_url (MP4) and video_seconds. Pins whose largest image is under 500px wide are marked low_res: true; skip them when you need a full-size reference. Set media to "video" for motion/interaction references. Promoted pins are filtered out. Use next_bookmark to page further. Tips: English keywords usually return more results; add words like "ui", "app", "dribbble", "poster", "moodboard" to steer the style.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many pins to return (1-100, default 20) | |
| media | No | Only return video pins ("video"), only still images ("image"), or both (default) | any |
| query | Yes | Search keywords | |
| bookmark | No | Pass next_bookmark from a previous call to get the next page | |
| previews | No | Also attach small thumbnails of the first N pins so you can actually look at them (0-16, default 0). Use this when judging visual style, layout or colour matters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint and openWorldHint; the description adds substantial behavior: promoted pins are filtered out, pins under 500px are flagged low_res, video pins carry video_url and video_seconds, and pagination flows through next_bookmark. That is exactly the operational context annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and return shape, then behavior, then parameter guidance, then tips — a sensible ordering with no filler sentences. It is dense but long for a single paragraph; the field enumeration could be tightened slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so fully: field list, video extras, low_res flag, filtering of promoted pins, and paging. An agent has everything needed to call it and interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds intent behind parameters — media="video" is tied to motion/interaction references, previews to judging style/layout/colour, and bookmark to paging. The 500px low_res threshold also adds semantics not present in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search Pinterest pins by keyword'), plus the scope qualifier 'any language' and the intent ('for visual inspiration'). This is clearly distinguishable from siblings like pinterest_board_pins or pinterest_get_pin, which retrieve pins by board or id rather than keyword.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete conditional guidance: set media to "video" for motion references, skip low_res pins when a full-size reference is needed, use next_bookmark to page further, and steer style with keywords like "ui" or "poster". It never explicitly routes to or excludes a sibling tool (e.g. board_pins vs keyword search), which keeps it from a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v1.2.0- First observed
pinterest_board_pins - First observed
pinterest_download - First observed
pinterest_get_pin - First observed
pinterest_preview_images - First observed
pinterest_related_pins - First observed
pinterest_search
TDQS
Scored across 6 tools
Each tool addresses a distinct retrieval mode: keyword search, single-pin lookup, similarity lookup, board listing, thumbnail preview, and file download. The descriptions explicitly state dependencies and constraints (e.g. anonymous e1_ ids cannot be used with get_pin, preview vs download), leaving little room for misselection. Search/related/board_pins all return pins but differ clearly by input source and intent.
All tools share a consistent pinterest_ prefix and snake_case formatting. However, only get_pin and download use a verb-first pattern; search, related_pins, and board_pins read as noun phrases, so the verb_noun convention is not uniform.
Six tools is tightly scoped for a read-only inspiration/research server, with each tool covering a distinct step in the discover → inspect → preview → save workflow. No redundant or filler tools.
The core lifecycle (search, detail, similar, board browsing, visual preview, download) is fully covered with pagination via next_bookmark. Minor gaps exist for board/user-level discovery (no search for boards or pinners, no profile pin listing), which agents must work around by finding board URLs in search results.
Maintenance
Related MCP Connectors
Pinterest pins, boards, profiles and keyword search to JSON: saves, images, links, creators.
Web search, browser automation, scraping, crawling and CAPTCHA solving for AI agents.
Web scraping, search, crawling, structured extraction and research for AI agents.
Public web data for AI agents: scrape any page, plus Google, TikTok, Instagram and Amazon as JSON.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to interact with the Pinterest API, allowing management of boards and pins through natural language commands.150 npm38MIT
- AlicenseAqualityDmaintenanceExtracts images, gifs, videos, and search results from Pinterest without authentication. Supports search, pin details, board pins, related pins, autocomplete, and media downloads.626 npm1MIT
- FlicenseNot gradedqualityCmaintenanceEnables AI agents to search public Pinterest pins, retrieve pin metadata and media URLs, and download matching images, GIFs, or videos into a local folder, with read-only tools and explicit confirmation for downloads.-
- AlicenseAqualityCmaintenanceEnables AI agents to manage Pinterest accounts through the Pinterest API v5, including creating and editing pins, organizing boards, searching public content, and retrieving pin and account analytics.11MIT