[](https://mseep.ai/app/terryso-mcp-pinterest)
# Pinterest MCP Server
[](https://badge.fury.io/js/pinterest-mcp-server)

[](https://smithery.ai/server/@terryso/mcp-pinterest)
[](https://mseep.ai/app/23da55f4-6d6a-4dc9-af31-cd6073eb1b27)
A Model Context Protocol (MCP) server for Pinterest image search and information retrieval.
## Features
- Search for images on Pinterest by keywords
- Retrieve detailed information about Pinterest images
- Seamless integration with Cursor IDE through MCP
- Support for headless browser mode
- Limit control for search results
- Search and download images from Pinterest
## Prerequisites
- [Node.js](https://nodejs.org/) (v18 or higher)
- [Cursor IDE](https://cursor.sh/) for MCP integration
## Installation
### Using NPX (Recommended)
The easiest way to use Pinterest MCP Server is via npx:
```bash
npx pinterest-mcp-server
```
You can configure the server with command-line options:
```bash
# Specify download directory
npx pinterest-mcp-server --downloadDir /path/to/downloads
# Specify filename template
npx pinterest-mcp-server --filenameTemplate "pinterest_{id}"
# Specify both options
npx pinterest-mcp-server --downloadDir ./images --filenameTemplate "pinterest_{id}"
```
### Global Installation
To install the package globally and use it directly from the command line:
```bash
npm install -g pinterest-mcp-server
```
After installation, you can run the server with:
```bash
pinterest-mcp-server
```
With the same command line options as the NPX version:
```bash
pinterest-mcp-server --downloadDir /path/to/downloads --filenameTemplate "pinterest_{id}"
```
### Installing via Smithery
To install mcp-pinterest for Claude Desktop automatically via [Smithery](https://smithery.ai/server/mcp-pinterest):
```bash
npx -y @smithery/cli install mcp-pinterest --client claude
```
### Manual Installation
1. Clone this repository:
```bash
git clone https://github.com/terryso/mcp-pinterest.git pinterest-mcp-server
cd pinterest-mcp-server
```
2. Install dependencies:
```bash
npm install
```
3. Build the server:
```bash
npm run build
```
4. Run the server:
```bash
npm start
```
## Configuring as MCP Server in Cursor
1. Open Cursor IDE
2. Go to Settings (⚙️) > Extensions > MCP
3. Click "Add Server"
4. Enter the following details:
- Name: Pinterest MCP
- Type: Command
- Command: `node`
- Args: `["/path/to/mcp-pinterest/dist/pinterest-mcp-server.js"]`
或者直接编辑Cursor的MCP配置文件(通常位于`~/.cursor/mcp.json`),添加以下内容:
```json
"pinterest": {
"command": "node",
"args": ["/path/to/mcp-pinterest/dist/pinterest-mcp-server.js"]
}
```
5. Click "Save"
### Alternative: Using NPX for Cursor Configuration
You can also configure Cursor to use the npx version of the server:
1. Open Cursor IDE
2. Go to Settings (⚙️) > Extensions > MCP
3. Click "Add Server"
4. Enter the following details:
- Name: Pinterest MCP
- Type: Command
- Command: `npx`
- Args: `["pinterest-mcp-server"]`
5. Click "Save"
### Complete Configuration Example with Environment Variables
For the most flexibility, you can configure the server with environment variables in your Cursor MCP configuration:
```json
"pinterest": {
"command": "npx",
"env": {
"MCP_PINTEREST_DOWNLOAD_DIR": "/Users/xxx/Desktop/Images",
"MCP_PINTEREST_FILENAME_TEMPLATE": "pin_{imageId}_{timestamp}.{fileExtension}",
"MCP_PINTEREST_PROXY_SERVER": "http://127.0.0.1:7890"
},
"args": ["pinterest-mcp-server"]
}
```
This configuration:
- Uses npx to run the server
- Sets a custom download directory on your desktop
- Uses a custom filename template with both image ID and timestamp
- Configures a proxy server for users in regions where Pinterest might be blocked
Add this to your `~/.cursor/mcp.json` file or set up through the Cursor IDE interface.
## Available MCP Functions
The server exposes the following MCP functions:
- `pinterest_search`: Search for images on Pinterest by keyword
- Parameters:
- `keyword`: Search term (required)
- `limit`: Number of images to return (default: 10)
- `headless`: Whether to use headless browser mode (default: true)
- `pinterest_get_image_info`: Get detailed information about a Pinterest image
- Parameters:
- `image_url`: URL of the Pinterest image (required)
- `pinterest_search_and_download`: Search and download images from Pinterest
- Parameters:
- `keyword`: Search term (required)
- `limit`: Number of images to return (default: 10)
- `headless`: Whether to use headless browser mode (default: true)
## Example Usage in Cursor
Once configured, you can use the Pinterest MCP functions directly in Cursor's AI chat:
```
Search for robot images on Pinterest
```
The AI will use the MCP server to search Pinterest and display the results.
### Example Screenshot

*Screenshot showing a search for 20 images of 三上悠亚 with all images successfully downloaded.*
## Development
### Project Structure
- `pinterest-mcp-server.ts`: Main server file
- `dist/pinterest-mcp-server.js`: Built JavaScript file for production
- `package.json`: Project configuration and dependencies
### Adding New Features
To add new MCP functions:
1. Modify `pinterest-mcp-server.ts`
2. Register new functions using the MCP SDK
3. Implement the function logic
4. Rebuild with `npm run build`
## Troubleshooting
- If the server fails to start, check if the port is already in use
- Ensure all dependencies are correctly installed with `npm install`
- Make sure TypeScript is properly configured with a `tsconfig.json` file
- If you encounter build errors, try running `npm install -D typescript @types/node`
- Verify network connectivity for Pinterest access
## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## Configuration Options
### Command Line Options (NPX Mode)
When using the server via npx, you can configure it using the following command line options:
- `--downloadDir`: Specifies the root directory for downloading images
```bash
npx pinterest-mcp-server --downloadDir /path/to/downloads
```
- `--filenameTemplate`: Specifies the filename template for downloaded images
```bash
npx pinterest-mcp-server --filenameTemplate "pin_{imageId}_{timestamp}"
```
- `--port`: Specifies the port for the server to listen on (default: 3000)
```bash
npx pinterest-mcp-server --port 8080
```
- `--proxyServer`: Specifies the proxy server to use for connecting to Pinterest
```bash
npx pinterest-mcp-server --proxyServer "http://127.0.0.1:7890"
```
You can combine multiple options:
```bash
npx pinterest-mcp-server --downloadDir ./images --filenameTemplate "pinterest_{id}" --port 8080 --proxyServer "http://127.0.0.1:7890"
```
### Environment Variables
The server also supports the following environment variables for configuration:
- `MCP_PINTEREST_DOWNLOAD_DIR`: Specifies the root directory for downloading images. If not set, the default is the `../downloads` directory relative to the server script.
- `MCP_PINTEREST_FILENAME_TEMPLATE`: Specifies the filename template for downloaded images. If not set, the default is `pinterest_{imageId}.{fileExtension}`.
- `MCP_PINTEREST_PROXY_SERVER`: Specifies the proxy server to use for connecting to Pinterest. Format should be `protocol://host:port`, for example `http://127.0.0.1:7890` or `socks5://127.0.0.1:1080`.
These environment variables can be set in several ways:
1. Directly in your terminal (as shown in the examples below)
2. In your Cursor MCP configuration through the `env` field (see [Complete Configuration Example](#complete-configuration-example-with-environment-variables))
3. In a `.env` file in the project root directory
4. Through command line options with npx (as shown in the [Command Line Options](#command-line-options-npx-mode) section)
### Usage
#### Setting Download Directory
1. Using npx with command line options:
```bash
npx pinterest-mcp-server --downloadDir /path/to/your/download/directory
```
2. Set the download directory using an environment variable:
```bash
# Linux/macOS
export MCP_PINTEREST_DOWNLOAD_DIR=/path/to/your/download/directory
npx pinterest-mcp-server
# Windows (CMD)
set MCP_PINTEREST_DOWNLOAD_DIR=C:\path\to\your\download\directory
npx pinterest-mcp-server
# Windows (PowerShell)
$env:MCP_PINTEREST_DOWNLOAD_DIR="C:\path\to\your\download\directory"
npx pinterest-mcp-server
```
3. If the environment variable is not set, the server will use the default download directory (relative to the server script's `../downloads`).
#### Setting Filename Template
1. Using npx with command line options:
```bash
npx pinterest-mcp-server --filenameTemplate "pin_{imageId}_{timestamp}.{fileExtension}"
```
2. Using an environment variable:
```bash
# Linux/macOS
export MCP_PINTEREST_FILENAME_TEMPLATE="pin_{imageId}_{timestamp}.{fileExtension}"
npx pinterest-mcp-server
# Windows (CMD)
set MCP_PINTEREST_FILENAME_TEMPLATE="pin_{imageId}_{timestamp}.{fileExtension}"
npx pinterest-mcp-server
# Windows (PowerShell)
$env:MCP_PINTEREST_FILENAME_TEMPLATE="pin_{imageId}_{timestamp}.{fileExtension}"
npx pinterest-mcp-server
```
The template supports the following variables:
- `{imageId}`: The unique ID of the Pinterest image
- `{fileExtension}`: The file extension (e.g., jpg, png)
- `{timestamp}`: Current UTC timestamp in YYYYMMDDHHMMSS format
- `{index}`: The index number when downloading multiple images (starts from 1)
Example templates:
- `pinterest_{imageId}.{fileExtension}` (default)
- `pin_{timestamp}_{imageId}.{fileExtension}`
- `pinterest_image_{index}_{imageId}.{fileExtension}`
- `{timestamp}_pinterest.{fileExtension}`
If the template is invalid (e.g., contains unsupported variables or has mismatched brackets), the server will log a warning and use the default template.
#### Setting Proxy Server
If you need to use a proxy to access Pinterest (especially in regions where Pinterest might be restricted), you can set the proxy configuration:
1. Using npx with command line options:
```bash
npx pinterest-mcp-server --proxyServer "http://127.0.0.1:7890"
```
2. Using an environment variable:
```bash
# Linux/macOS
export MCP_PINTEREST_PROXY_SERVER="http://127.0.0.1:7890"
npx pinterest-mcp-server
# Windows (CMD)
set MCP_PINTEREST_PROXY_SERVER=http://127.0.0.1:7890
npx pinterest-mcp-server
# Windows (PowerShell)
$env:MCP_PINTEREST_PROXY_SERVER="http://127.0.0.1:7890"
npx pinterest-mcp-server
```
Supported proxy protocols:
- HTTP: `http://host:port`
- HTTPS: `https://host:port`
- SOCKS4: `socks4://host:port`
- SOCKS5: `socks5://host:port`
The proxy configuration affects both the browser used for searching and the image downloading process.
#### Notes
- The server will verify the existence and writability of the download directory when starting. If the directory does not exist, it will attempt to create it; if it cannot be created or written to, the server will exit.
- Clients should not specify download paths or filename templates through parameters when calling download-related tools, as all downloads will use the server's environment variable configuration or defaults.
- The server automatically sanitizes filenames by replacing illegal characters (such as `/`, `\`, `:`, `*`, `?`, `"`, `<`, `>`, `|`) with underscores.
#### Interface Description
The server provides the following MCP tools:
1. `pinterest_search`: Search for Pinterest images by keyword
2. `pinterest_get_image_info`: Get detailed information about a Pinterest image
3. `pinterest_search_and_download`: Search and download Pinterest images
For detailed interface parameter references, please refer to the MCP tool definitions.