SavePinner Pinterest URL Tools
Parse, validate, classify, and normalize Pinterest URLs locally without network requests.
Install
Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).
savepinner-mcpclaude mcp add savepinner-pinterest-url-tools -- npx -y savepinner-mcp@0.1.1
{
"mcpServers": {
"savepinner-pinterest-url-tools": {
"command": "npx",
"args": [
"-y",
"savepinner-mcp@0.1.1"
]
}
}
}
Documentation
From the project's README on GitHub, refreshed weekly. Links open on GitHub.
Contents
SavePinner MCP
An MCP server for parsing, validating, classifying, and normalizing Pinterest URLs. It supports local stdio and public Streamable HTTP. The tools make no outbound network requests and do not download media.
Tools
| Tool | Purpose |
|---|---|
parse_pinterest_url | Return the URL kind, canonical URL, host, and type-specific identifiers. |
normalize_pinterest_url | Convert a supported URL to canonical form and remove tracking parameters. |
is_pinterest_url | Check whether a value is a supported Pinterest URL. |
Supported URL kinds include Pin, pin.it, profile, board, and Ideas URLs across Pinterest country domains.
Run
Node.js 18 or newer is required.
npx -y savepinner-mcp
Client configuration
Add the server to an MCP client that supports local stdio servers:
{
"mcpServers": {
"savepinner": {
"command": "npx",
"args": ["-y", "savepinner-mcp"]
}
}
}
Remote MCP
Connect any Streamable HTTP client to the public endpoint:
https://savepinner-pinterest-url-mcp.chenxuanshimo.workers.dev/mcp
The endpoint is read-only and does not require authentication.
The public Pinterest URL validation guide explains the validation and normalization boundaries used by the tools.
Docker
Build and run the server as a local stdio container:
docker build -t savepinner-mcp .
docker run --rm -i savepinner-mcp
The runtime image executes as the unprivileged node user and does not require secrets, volumes, or network access.
Example
Calling parse_pinterest_url with:
https://de.pinterest.com/pin/987654321/?utm_source=share
returns:
{
"kind": "pin",
"originalUrl": "https://de.pinterest.com/pin/987654321/?utm_source=share",
"normalizedUrl": "https://www.pinterest.com/pin/987654321/",
"host": "de.pinterest.com",
"pinId": "987654321"
}
Privacy and safety
- URL processing is local to the running server.
- The tools do not make outbound network requests.
- The server does not download media.
- Hostnames are checked against an exact Pinterest domain allow list.
- Lookalike domains and non-HTTPS URLs are rejected.
The URL parser is provided by pinterest-url-normalizer.
This project is maintained by the team behind the Pinterest image downloader, a browser tool for inspecting media exposed by public Pinterest Pin URLs.
Pinterest is a trademark of Pinterest, Inc. This project is independent and is not affiliated with or endorsed by Pinterest.
Development
npm install
npm test
npm run worker:check
License
MIT
Connection diagnostics
Use the connection diagnostic guide to check transport, tool discovery, normalization and deceptive-host rejection before investigating media availability.
Frequently asked questions
What is SavePinner Pinterest URL Tools?
Parse, validate, classify, and normalize Pinterest URLs locally without network requests.
How do I install SavePinner Pinterest URL Tools?
It runs on your machine. In Claude Code: claude mcp add savepinner-pinterest-url-tools -- npx -y savepinner-mcp@0.1.1. For other clients, paste the JSON configuration from this page into their MCP settings.
Does SavePinner Pinterest URL Tools need an API key?
Its registry entry lists no required key or secret. Some features may still need an account with the service it connects to.
Is SavePinner Pinterest URL Tools open source?
Yes. Its code is on GitHub under the MIT license.
Who maintains SavePinner Pinterest URL Tools?
It is published by jiankn. AI.tn lists it but does not maintain or endorse it.
From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.