loading…
Search for a command to run...
loading…
Complete Model Context Protocol (MCP) server designed to facilitate seamless interaction between Large Language Models (LLMs) and end-users. It provides a robus
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.
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.
▶️ Watch the demonstration video

▶️ Watch the demonstration video

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:
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
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 |
Configuration is resolved in the following order (highest to lowest priority):
FLOWSTEP_)# 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
# 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
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"Mode": "gui",
"Telegram": {
"BotToken": "123456:ABC-DEF",
"ChatId": "123456789"
}
}
Create appsettings.Development.json or appsettings.Production.json for environment-specific overrides:
{
"Mode": "cli",
"Logging": {
"LogLevel": {
"Default": "Debug"
}
}
}
To integrate FlowStep with your favorite AI editor or client (e.g., Cursor, Windsurf, Claude Desktop, or Cline), add the server configuration to your client's settings.
{
"mcpServers": {
"FlowStep.MCP": {
"url": "http://localhost:59170"
}
}
}
{
"mcpServers": {
"FlowStep.MCP": {
"command": "dotnet",
"args": [
"run",
"--project",
"src/FlowStep.MCP/FlowStep.MCP.csproj",
"--",
"--mode",
"gui"
]
}
}
}
All tools are exposed via the FlowStepMcpService and automatically registered with the MCP server.
Displays a simple notification to the user with a title and message.
message (string): Message to be displayed to the user.title (string): Notification title (optional; default: 'System').waitConfirmation (bool): If true, waits for user confirmation. Default: false.Requests user confirmation with a message.
message (string): Confirmation message to the user.title (string): Confirmation title (optional).isCancellable (bool): Indicates whether the operation can be cancelled (optional; default: true).Allows the user to choose one option among several available ones.
message (string): Message describing the available options.options (Listtitle (string): Title of the choice (optional).allowCustomInput (bool): Whether to allow a custom input option (optional; default: false).Allows the user to select multiple options.
title (string): Title of the selection (optional).message (string): Message describing the available options.options (ListminSelections (int): Minimum number of required selections (optional; default: 0).maxSelections (int): Maximum number of allowed selections (optional; default: 1).Requests that the user type free-form text. Supports multi-line input in GUI mode.
message (string): Instruction or message to the user.title (string): Title of the text field (optional).placeholder (string): Placeholder text shown in the input field (optional; default: 'Type here...').Allows the user to choose one option and optionally type a custom text.
message (string): Instruction message for the user.options (Listtitle (string): Title of the interaction (optional).placeholder (string): Placeholder text for the custom text input field (optional).Displays a notification indicating the progress of an operation.
operationName (string): Descriptive name of the ongoing operation.total (int): Total number of items to process.status (string): Current status or progress message.The library handles six distinct interaction types defined in InteractionType:
FlowStepService handles orchestration and timeout management.IInteractionRenderer defines the contract. Implementations include:CliInteractionRenderer: Terminal/console interfaceAvaloniaUIRenderer: Modern desktop GUI with dark themeTelegramRenderer: Telegram Bot API integrationFlowStepMcpService exposes tools conforming to the Model Context Protocol.dotnet run --project src/FlowStep.MCP/FlowStep.MCP.csproj
dotnet run --project src/FlowStep.MCP/FlowStep.MCP.csproj -- --mode cli
# Via arguments
dotnet run --project src/FlowStep.MCP/FlowStep.MCP.csproj -- --mode telegram --telegram-token "YOUR_TOKEN" --telegram-chat-id 123456789
# Via environment
export FLOWSTEP_MODE=telegram
export FLOWSTEP_TELEGRAM__BOTTOKEN="YOUR_TOKEN"
export FLOWSTEP_TELEGRAM__CHATID=123456789
dotnet run --project src/FlowStep.MCP/FlowStep.MCP.csproj
This project is licensed under the MIT License - see the LICENSE file for details.
Made with ❤️
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"flowstepmcp": {
"command": "npx",
"args": []
}
}
}