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.
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) orpip
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
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
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
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.