Skip to main content
Glama
edivianika

IndoAds Prompt MCP

by edivianika

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

Related MCP server: Enhanced Multimedia Analysis MCP

Core MCP tools

  1. generateAdPromptpreferred default for direct ad creation. Selects the best concept and composes the final image-generation prompt in one external call.

  2. recommend_ad_prompts — return multiple concept options when the user explicitly wants to choose.

  3. search_ad_prompts — browse/search the concept library.

  4. get_ad_prompt — inspect one known concept ID.

  5. compose_ad_prompt — compose from an already selected concept ID.

  6. 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.

  1. User uploads/describes a product and asks to make an ad.

  2. ChatGPT infers useful fields such as category, product type, product description, objective, target audience, style, platform and aspect ratio.

  3. ChatGPT calls generateAdPrompt once.

  4. The server ranks concepts internally, selects the best one, composes the final prompt, and returns the prompt plus concept metadata.

  5. ChatGPT uses the returned prompt directly 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.

F
license - not found
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • AI visual generation agent: multi-pipeline rendering, prompt crafting, and image composition.

  • Search and discover advertiser products through an open marketplace for AI agents.

  • Generate logos, social posts, app screenshots, comic panels & visual-novel assets from prompts.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/edivianika/indoads-prompt-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server