Flag MCP

Flag MCP

Enables human-in-the-loop interaction for AI coding workflows through native desktop dialogs that present route choices, text input, and image annotation capabilities when AI assistants encounter decision points.

Category
Visit Server

README

<div align="center">

๐Ÿšฉ Flag MCP

<p align="center"> <a href="./README.md">English</a> | <a href="./README_CN.md">็ฎ€ไฝ“ไธญๆ–‡</a> </p>

<p align="center"> <img src="images/hero-banner.jpg" alt="Flag MCP" width="800"> </p>

<p align="center"> <em>"Every flag you plant changes the story."</em> </p>

<p align="center"> <strong>Plant your flag. Shape the route. Ship with confidence.</strong> </p>

<p align="center"> Human-in-the-loop interaction for AI coding workflows โ€” because in every great visual novel, <strong>you</strong> choose the route. </p>

<p align="center"> <a href="https://github.com/pauoliva/interactive-feedback-mcp/releases"><img src="https://img.shields.io/github/v/release/pauoliva/interactive-feedback-mcp?style=flat-square" alt="Release"></a> <a href="https://github.com/pauoliva/interactive-feedback-mcp/blob/main/LICENSE"><img src="https://img.shields.io/github/license/pauoliva/interactive-feedback-mcp?style=flat-square" alt="License"></a> <a href="https://www.python.org/"><img src="https://img.shields.io/badge/python-3.11+-blue?style=flat-square" alt="Python"></a> </p>

<p align="center"> Designed for <a href="https://cursor.sh">Cursor</a> ยท <a href="https://claude.ai/download">Claude Desktop</a> ยท <a href="https://cline.bot">Cline</a> ยท <a href="https://codeium.com/windsurf">Windsurf</a> </p>

<p align="center"> <video src="images/demo.mp4" controls="controls" width="100%" style="max-width: 800px;"></video> </p>

</div>


โœจ What is "Flag"?

In visual novels and Galgames, a "flag" (ใƒ•ใƒฉใ‚ฐ) is the moment a choice triggers a new story branch. One decision changes everything.

Flag MCP brings that same power to AI-assisted coding. When your AI assistant hits a crossroads, it doesn't guess โ€” it raises a flag and waits for you to choose the route.

๐ŸŽฎ You're the protagonist. The AI waits at every branching point.

๐Ÿ’Ž Every flag shapes the route. No more speculative rewrites.

๐Ÿš€ Rich interaction. Text, screenshots, annotations โ€” your full arsenal.

This transforms AI coding from "hope it works" into a narrative where you hold the controller.


Scope of Application:

  • Coding plans billed on a per-request basis.
  • Developers who wish to control AI behavior.

๐Ÿ”ฅ Before & After

โŒ Without Flag MCP โœ… With Flag MCP
AI guesses โ†’ wrong code โ†’ painful rework AI raises a flag โ†’ you choose โ†’ correct code
Multiple rounds of "wait, what did you mean?" One structured dialog, crystal clear
Anxious: "What is the AI about to do?!" Confident: every action confirmed by you
Helpless passenger You are the route-setter

๐ŸŽฏ Core Features

  • ๐Ÿ–ฅ๏ธ Dark Themed UI โ€” A sleek native desktop dialog that fits your workflow
  • โœ… Route Choices โ€” Structured predefined options (checkbox-style)
  • ๐Ÿ’ฌ Free Text โ€” When the predefined routes aren't enough, write your own script
  • ๐Ÿ“ท Rich Media Arsenal
    • Paste images from clipboard
    • Select local files
    • Screenshot + Built-in Annotator (rectangle, circle, arrow, pen, text, crop)
  • ๐Ÿ–ผ๏ธ Prompt Images โ€” AI can show you images (local paths, file://, http(s)://)
  • ๐Ÿ”’ Security First โ€” Remote images validated, size-limited, async loaded
  • ๐ŸŽจ macOS Optimized โ€” Proper icon handling and visual polish

๐Ÿ“ฆ Installation

Prerequisites

  • Python >= 3.11
  • uv (recommended) or pip

Quick Install

git clone https://github.com/pauoliva/interactive-feedback-mcp.git
cd interactive-feedback-mcp
uv sync

โš™๏ธ Configuration

Add to your MCP client configuration:

Cursor (mcp.json) / Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "interactive-feedback": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/interactive-feedback-mcp",
        "run",
        "server.py"
      ],
      "timeout": 900000,
      "autoApprove": ["interactive_feedback"]
    }
  }
}

โš ๏ธ Note: Timeout is in milliseconds for Cursor (900000 = 15 min). Some clients use seconds โ€” adjust accordingly.


๐Ÿšฉ The interactive_feedback Tool

Arguments

Parameter Type Description
message string The question/prompt to display
predefined_options array Optional. Route choices for quick decisions
message_images array Optional. Images to show (local/remote URLs)

Returns

  • Text feedback from user
  • Optional image attachments (as MCP image content blocks)

๐Ÿง™ Pro Tips

Recommended Agent Rules

Add this to your AI assistant's custom instructions:

If requirements are unclear, call interactive_feedback before implementing.
Present predefined options whenever possible โ€” give the user clear route choices.
Before finishing a task, call interactive_feedback once more for final confirmation.

Environment Variables

Variable Default Description
INTERACTIVE_FEEDBACK_TIMEOUT_SEC 60000 Max UI process lifetime
INTERACTIVE_FEEDBACK_ICON โ€” Custom app icon path
INTERACTIVE_FEEDBACK_REMOTE_IMAGE_TIMEOUT_SEC 5 Remote image fetch timeout
INTERACTIVE_FEEDBACK_REMOTE_IMAGE_MAX_BYTES 10485760 Max remote image size (10MB)

๐Ÿ›ก๏ธ Security & Reliability

  • โœ… Remote images validated by content-type (image/*)
  • โœ… Large payloads rejected via size cap
  • โœ… Async fetch keeps UI responsive
  • โœ… Local files read only when explicitly referenced

๐Ÿ“„ License

MIT License โ€” fork it, flag it, ship it.


<div align="center">

๐Ÿšฉ Plant your flag. Write your own route.

Made with ๐Ÿ’œ for developers who refuse to be NPCs in their own codebase.

</div>

Recommended Servers

playwright-mcp

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.

Official
Featured
TypeScript
Magic Component Platform (MCP)

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.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

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.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

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.

Official
Featured
TypeScript
Kagi MCP Server

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.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured
Exa Search

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.

Official
Featured