Pic Nicked MCP
by micfogas
README.md
# Pic Nicked MCP
> **Search. See. Save.** – An MCP that nicks Google photos (pics) into your chat.
## Usage & Requirements
### Requirements
- Node.js v20+
- Google Cloud Platform account (free tier sufficient)
- Devin
### Setup Guide
Follow these steps to set up this MCP:
#### Create Google Custom search engine
1. Go to [Google Programmable Search Engine](https://programmablesearchengine.google.com/controlpanel/all)
2. **"Add"** to create a new search engine
3. In **"Sites to search"**, enter `*.reddit.com/` for example, to include reddit.com in your possible search results (note: you can only add up to 50 TLDs)
4. Name your search engine (e.g., "PicNick")
5. Enable **"Image search"** option
6. Click **"Create"**
7. Copy the **Search engine ID** - save this
#### Get Google API Key
1. Go to [Google Cloud Console API Credentials](https://console.cloud.google.com/apis/credentials)
2. Select a project
3. Click **"+ CREATE CREDENTIALS"** then **"API key"**
4. Copy the generated API key
#### Configure MCP
Add the following configuration to your MCP settings:
```json
{
"mcpServers": {
"googleImagesSearch": {
"command": "npx",
"args": ["-y", "@micfogas/mcp-picnick"],
"env": {
"API_KEY": "google-api-key",
"SEARCH_ENGINE_ID": "search-engine-id"
},
"autoApprove": ["persist_image", "search_image"]
}
}
}
```
Replace `google-api-key` and `search-engine-id` appropriately.
### Example
Ask your assistant to search for images
```
Find 5 images of your mom
```
Request additional results
```
Find 5 more images
```
Save a specific result to your project
```
Save the 3rd image to the "yourmom" folder
```
The MCP will display the results as images in your chat history, and you can save them to your project.
**Quick start**:
1. Copy `.envrc.example` to `.envrc` and add your Google API credentials
2. Run `pnpm install && pnpm dev`
3. Update your MCP configuration for development:
```json
{
"mcpServers": {
"googleImagesSearch": {
"command": "node",
"args": ["/abs/path/to/project/src/index.js", "--debug", "--pretty-print"],
"env": {
"API_KEY": "google-api-key",
"SEARCH_ENGINE_ID": "search-engine-id"
},
"autoApprove": ["search_image", "persist_image"]
}
}
}
```
## Tools
**🔍 search_image** - Find images
- `query` (req) - exampple, your mom
- `count` (1-10, Def. 2) - How many
- `safe` ('off'/'medium'/'high') - safefilter
- `startIndex` - because
**💾 persist_image** - Download and save images to your project
- `url` (req) - image to dl
- `targetPath` (req) - Where to save it
TDQS
B3.3/5.0
Scored across 2 tools
Disambiguation5/5
search_image and persist_image have completely distinct purposes: one looks up images online, the other saves a specific image locally. There is no overlap or ambiguity between them.
Naming Consistency5/5
Both tools follow the exact same verb_noun pattern with snake_case (search_image, persist_image), making the naming predictable and consistent.
Tool Count3/5
With only 2 tools, the server feels minimal and is on the thin side. The count is acceptable if the scope is strictly search-and-save, but it is borderline for a utility server.
Completeness3/5
The core operations (search and persist) are covered, but there is no way to list, delete, or otherwise manage persisted images. This is a notable gap in the image lifecycle, making the surface feel incomplete.
Maintenance
ActivityStale
ResponsivenessNo issues