IndoAds Prompt MCP
A retrieval-first prompt engine for commercial advertising that curates, ranks, and composes visual ad prompts for image generation models like GPT Image, Midjourney, and Flux without generating images itself.
README
IndoAds Prompt MCP
A retrieval-first prompt engine for commercial advertising. It does not generate images. It stores curated visual concepts, ranks them against a product brief, and composes a final prompt that ChatGPT can pass to GPT Image, Nano Banana, Seedream, Midjourney, Flux, or another image model.
What is included
- Remote MCP endpoint:
POST /mcp - REST API for Custom GPT Actions
- OpenAPI schema:
/openapi.yaml - Curated concepts across F&B, beauty, fashion, tech, home/property, automotive and general e-commerce
- Search/ranking with product fit, objective, style, platform, ratio and contextual product/audience details
- Diversity-aware recommendation
- Product-reference fidelity protection
- Optional Bearer API key
- Read-only MCP annotations for prompt tools
Core MCP tools
generateAdPrompt— preferred default for direct ad creation. Selects the best concept and composes the final image-generation prompt in one external call.recommend_ad_prompts— return multiple concept options when the user explicitly wants to choose.search_ad_prompts— browse/search the concept library.get_ad_prompt— inspect one known concept ID.compose_ad_prompt— compose from an already selected concept ID.list_prompt_taxonomy— discover supported filters.
All of the tools above only read/process the server's prompt library. They do not mutate external state. The MCP registrations advertise read-only/idempotent/closed-world annotations supported by the current MCP SDK. These annotations are client hints; they do not guarantee that a ChatGPT permission dialog will be skipped.
Recommended one-call ChatGPT workflow
- User uploads/describes a product and asks to make an ad.
- ChatGPT infers useful fields such as category, product type, product description, objective, target audience, style, platform and aspect ratio.
- ChatGPT calls
generateAdPromptonce. - The server ranks concepts internally, selects the best one, composes the final prompt, and returns the prompt plus concept metadata.
- ChatGPT uses the returned
promptdirectly with image generation if the user asks to generate.
Do not call recommend_ad_prompts → get_ad_prompt → compose_ad_prompt after generateAdPrompt has already returned a final prompt.
The older multi-step workflow remains available for users who explicitly want multiple concepts before choosing.
Local run
cp .env.example .env
npm install
npm test
npm run dev
Health check:
curl http://localhost:3000/health
One-call generate test:
curl -X POST http://localhost:3000/api/generate \
-H 'content-type: application/json' \
-d '{
"productName":"Lumina Serum",
"brandName":"Lumina",
"productDescription":"Brightening facial serum with niacinamide",
"keyBenefit":"Brighter looking skin",
"targetAudience":"Women 20-35",
"objective":"conversion",
"style":"premium",
"platform":"Instagram",
"aspectRatio":"4:5",
"copyText":"Glow Starts Here"
}'
Expected response includes:
{
"prompt": "...final image-generation prompt...",
"concept": {
"id": "...",
"name": "...",
"style": "premium",
"objective": "conversion"
},
"aspectRatio": "4:5",
"platform": "Instagram"
}
Recommendation flow when the user wants options:
curl -X POST http://localhost:3000/api/recommend \
-H 'content-type: application/json' \
-d '{"category":"fnb","productType":"sambal","query":"spicy authentic premium","aspectRatio":"4:5","count":6}'
Compose from a known ID:
curl -X POST http://localhost:3000/api/compose \
-H 'content-type: application/json' \
-d '{"promptId":"FNB-001","productName":"Sambel Pecel Marimar","productDescription":"standing pouch with red-green label","hasReferenceImage":true,"platform":"Instagram","aspectRatio":"4:5"}'
Use from a Custom GPT through Actions
Deploy this project to a public HTTPS domain, then in the GPT editor open Actions → Create new action and import:
https://YOUR_DOMAIN/openapi.yaml
The OpenAPI operation generateAdPrompt is the preferred action for direct “make an ad” requests. Existing operation IDs remain available for backward compatibility.
If you set INDOADS_API_KEY, configure the GPT Action authentication as a Bearer API key with the same value. If the variable is blank, the API remains read-only and unauthenticated.
Use as Remote MCP
Deploy on HTTPS and point the MCP-capable client to:
https://YOUR_DOMAIN/mcp
The MCP implementation is stateless and read-only. The privacy endpoint remains available at /privacy.
Add more prompt concepts
Edit the prompt corpus/seeds used by the project. Each concept stores art-direction components rather than a single giant prompt, including product/category fit, objective, visual concept, style tags, composition, lighting, camera, background/set, effects, copy zone, negative constraints, model hints and quality score.
License
Project scaffold: use/modify privately as needed. Prompt seed data in this project is original starter content and not copied verbatim from third-party prompt repositories.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.