MCP server for seamless interaction between LLMs and end-users
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
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 notificationsConfiguration
{"mcpServers": {"flowstep": {"command": "dotnet", "args": ["run", "--project", "/path/to/FlowStep.MCP.Library.csproj"]}}}