Prepare the server locally
Run this once before adding it to Claude Code.
git clone https://github.com/rodrigoramosrs/FlowStepMCP
cd FlowStepMCPThen follow the repository README for any remaining dependency or build steps.
Register it in Claude Code
claude mcp add flow-step -- dotnet run --project /path/to/FlowStep.MCP.Library.csprojReplace any placeholder paths in the command with the real path on your machine.
Make your agent remember this setup
flow-step's config, env vars, and the gotchas you hit — recalled in every future Claude Code, Cursor, and Codex session.
npx conare@latestFree · one command · indexes the sessions already on disk. Set up in the browser instead →
What it does
- Supports multiple rendering modes: Console, Avalonia Desktop GUI, and Telegram Bot
- Provides tools for notifications, confirmations, and multi-selection lists
- Enables free-form text input collection from users
- Allows custom input selection from predefined lists
- Includes progress reporting for long-running operations
Tools 4
notifyDisplay non-blocking or blocking informational messages to the user.confirmRequest explicit Yes/No or Cancel confirmation from the user.selectProvide dropdowns or lists for choosing one or multiple options.textInputCollect free-form text from the user with multi-line support.Environment Variables
FLOWSTEP_MODESets the rendering mode (cli, gui, or telegram)FLOWSTEP_TELEGRAM__BOTTOKENTelegram bot token for Telegram modeFLOWSTEP_TELEGRAM__CHATIDTelegram chat ID for notificationsTry it
Original README from rodrigoramosrs/FlowStepMCP
FlowStep - MCP Server for User Interactions
🚧 **Under Development**
A complete Model Context Protocol (MCP) server designed to facilitate seamless interaction between Large Language Models (LLMs) and end-users. It provides a robust set of tools for notifications, confirmations, selections, and text inputs, supporting multiple rendering modes including Console, GUI, and Telegram Bot.
🎯 Native Desktop UI
▶️ Watch the demonstration video

🎯 Telegram UI
▶️ Watch the demonstration video

🎯 Overview
FlowStep acts as an abstraction layer for user interactions. It exposes standard MCP tools that LLMs can invoke to interact with the user based on the application's configuration (Console, GUI, or Telegram).
Key Capabilities:
- Notifications: Display non-blocking or blocking informational messages.
- Confirmations: Request explicit Yes/No or Cancel confirmation from the user.
- Single & Multi-Selection: Provide dropdowns or lists for choosing one or multiple options.
- Text Input: Collect free-form text from the user with multi-line support.
- Custom Input: Allow selection from a predefined list or custom text entry.
- Progress Reporting: Visual feedback for long-running operations.
- Multiple Render Modes: Console (CLI), Desktop GUI (Avalonia), or Telegram Bot.
📦 Project Structure
The library is organized into logical layers:
FlowStep.MCP.Library/
├── Models/
│ └── InteractionModels.cs # Data models (InteractionRequest, InteractionResponse, InteractionOption)
├── Contracts/
│ ├── IFlowStepService.cs # Core service interface
│ └── IInteractionRenderer.cs # Renderer interface (Contracts for UI implementation)
├── Services/
│ └── FlowStepService.cs # Business logic and orchestration
├── McpServices/
│ └── FlowStepMcpService.cs # Implementation of MCP Server Tools
├── Renderers/
│ ├── CliInteractionRenderer.cs # Console-based implementation
│ ├── TelegramRenderer.cs # Telegram Bot implementation
│ ├── GuiInteractionBridge.cs # Bridge for custom GUI implementations
│ └── AvaloniaUI/
│ ├── AvaloniaUIRenderer.cs # Main Avalonia GUI renderer
│ ├── Themes/
│ │ └── ThemeColors.cs # Dark mode color definitions
│ ├── Header/
│ │ └── HeaderContentFactory.cs
│ ├── Footer/
│ │ ├── StandardFooterFactory.cs
│ │ └── NotificationFooterFactory.cs
│ ├── Inputs/
│ │ ├── SingleChoiceInputFactory.cs
│ │ ├── MultiChoiceInputFactory.cs
│ │ ├── TextInputFactory.cs
│ │ └── ChoiceWithTextInputFactory.cs
│ ├── Factories/
│ │ ├── ConfirmationButtonsFactory.cs
│ │ ├── SimpleConfirmationContentFactory.cs
│ │ └── ResponseBuilder.cs
│ └── Styles/
│ └── DarkThemeStyles.cs # XAML-like styling logic
├── Extensions/
│ └── FlowStepServiceExtension.cs # DI Registration helper
└── FlowStep.MCP.Library.csproj
🖥️ Rendering Modes
FlowStep supports three rendering modes, configurable at startup:
| Mode | Description | Use Case |
|---|---|---|
| CLI | Console/Terminal interface | Headless servers, debugging, automation scripts |
| GUI | Avalonia Desktop application | Rich desktop experience with modern dark UI |
| Telegram | Telegram Bot integration | Remote interactions, mobile notifications, distributed teams |
Mode Selection Priority
Configuration is resolved in the following order (highest to lowest priority):
- Command Line Arguments
- Environment Variables (prefix:
FLOWSTEP_) - appsettings.json
- Default (GUI)
⚙️ Configuration
Command Line Arguments
# GUI Mode (default)
dotnet run
# CLI Mode
dotnet run -- --mode cli
# Telegram Mode
dotnet run -- --mode telegram --telegram-token "123456:ABC-DEF" --telegram-chat-id 123456789
# Custom configuration file
dotnet run -- --config /path/to/custom-config.json
Environment Variables
# Windows
set FLOWSTEP_MODE=telegram
set FLOWSTEP_TELEGRAM__BOTTOKEN=123456:ABC-DEF
set FLOWSTEP_TELEGRAM__CHATID=123456789
# Linux/Mac
export FLOWSTEP_MODE=telegram
export FLOWSTEP_TELEGRAM__BOTTOKEN=123456:ABC-DEF
export FLOWSTEP_TELEGRAM__CHATID=123456789
appsettings.json
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"Mode": "gui",
"Telegram": {
"BotToken": "123456:ABC-DEF",
"ChatId": "123456789"
}
}
Environment-Specific Configuration
Create `appsetti