FlowStep-用于用户交互的MCP服务器
🚧 开发中
一个完整的模型上下文协议(MCP)服务器,旨在促进大型语言模型(LLM)和最终用户之间的无缝交互。它为通知、确认、选择和文本输入提供了一套强大的工具,支持多种渲染模式,包括Console、GUI和Telegram Bot。
🎯 本机桌面UI
🎯 电报用户界面
🎯 概述
FlowStep充当用户交互的抽象层。它公开了标准的MCP工具,LLM可以根据应用程序的配置(Console、GUI或Telegram)调用这些工具与用户进行交互。
关键能力:
- 通知:显示非阻塞或阻塞信息消息。
- 确认:请求用户明确的“是/否”或“取消”确认。
- 单选和多选:提供下拉菜单或列表,用于选择一个或多个选项。
- 文本输入:通过多行支持从用户那里收集自由格式的文本。
- 自定义输入:允许从预定义列表中选择 *或* 自定义文本输入。
- 进度报告:长时间运行操作的视觉反馈。
- 多种渲染模式:控制台(CLI)、桌面GUI(Avalonia)或Telegram Bot。
📦 项目结构
库被组织成逻辑层:
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支持三种渲染模式,可在启动时配置:
| 模式 | 描述 | 用例 |
|---|---|---|
| 命令行界面 | 控制台/终端界面 | 无头服务器、调试、自动化脚本 |
| 图形用户界面 | Avalonia桌面应用程序 | 具有现代深色UI的丰富桌面体验 |
| 电报 | Telegram Bot集成 | 远程交互、移动通知、分布式团队 |
模式选择优先级
配置按以下顺序(从高到低优先级)解决:
- 命令行参数
- 环境变量 (前缀:
FLOWSTEP_) - 应用程序参数
- 默认 (GUI)
⚙️ 配置
命令行参数
# 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"
}
}环境特定配置
创建 appsettings.Development.json 或 appsettings.Production.json 对于特定于环境的覆盖:
{
"Mode": "cli",
"Logging": {
"LogLevel": {
"Default": "Debug"
}
}
}🌐 MCP客户端配置
要将FlowStep与您最喜欢的AI编辑器或客户端集成(例如。, 光标、风帆、克劳德桌面,或 克莱恩),将服务器配置添加到客户端的设置中。
HTTP传输(推荐)
{
"mcpServers": {
"FlowStep.MCP": {
"url": "http://localhost:59170"
}
}
}STDIO传输(本地执行)
{
"mcpServers": {
"FlowStep.MCP": {
"command": "dotnet",
"args": [
"run",
"--project",
"src/FlowStep.MCP/FlowStep.MCP.csproj",
"--",
"--mode",
"gui"
]
}
}
}🛠️ MCP工具参考
所有工具均通过 FlowStepMcpService 并自动向MCP服务器注册。
1.通知userasync
向用户显示带有标题和消息的简单通知。
- 参数:
- message (string):要向用户显示的消息。 - title (string):通知标题(可选;默认值:“系统”)。 - waitConfirmation (bool):如果为true,则等待用户确认。默认值:false。
- 退货:操作状态。
2.确认
通过消息请求用户确认。
- 参数:
- message (string):给用户的确认消息。 - title (string):确认标题(可选)。 - isCancellable (bool):表示是否可以取消操作(可选;默认值:true)。
- 退货:“是”、“否”或“取消”。
3.选择OptionAsync
允许用户在几个可用选项中选择一个。
- 参数:
- message (string):描述可用选项的消息。 - options (列表):可供选择的选项列表。 - title (string):选择的标题(可选)。 - allowCustomInput (bool):是否允许自定义输入选项(可选;默认值:false)。
- 退货:所选选项的值,如果提供了自定义输入,则为“custom:{Value}”。
4.选择多重选项同步
允许用户选择多个选项。
- 参数:
- title (string):所选内容的标题(可选)。 - message (string):描述可用选项的消息。 - options (列表):可供选择的选项列表。 - minSelections (int):所需选择的最小数量(可选;默认值:0)。 - maxSelections (int):允许的最大选择数(可选;默认值:1)。
- 退货:所选选项的值列表。
5.Askuserfortexample.com
请求用户键入自由格式的文本。支持GUI模式下的多行输入。
- 参数:
- message (string):给用户的指令或消息。 - title (string):文本字段的标题(可选)。 - placeholder (string):输入字段中显示的占位符文本(可选;默认值:“在此处键入…”)。
- 退货:用户输入的文本(可能包含换行符)。
6.选择WithCustomTextAsync
允许用户选择一个选项,并可选择键入自定义文本。
- 参数:
- message (string):用户的指令消息。 - options (列表):可供选择的选项列表。 - title (string):交互的标题(可选)。 - placeholder (string):自定义文本输入字段的占位符文本(可选)。
- 退货:所选选项值或前缀为“custom:”的自定义文本。
7.显示进度。
显示指示操作进度的通知。
- 参数:
- operationName (string):正在进行的操作的描述性名称。 - total (int):要处理的项目总数。 - status (string):当前状态或进度消息。
- 退货:操作状态。
🎨 交互类型
该库处理中定义的六种不同的交互类型 InteractionType:
- 通知:简单显示(OK)。
- 确认:是/否决定。
- 单选:下拉菜单/收音机(选择1)。
- 多项选择的:复选框(选择N)。
- 文本输入框:带换行功能的多行文本输入。
- 选择文本:预定义选项+自定义文本字段。
🏗️ 建筑
- 服务层:
FlowStepService处理编排和超时管理。 - 渲染器层:
IInteractionRenderer定义合同。实施包括:
- CliInteractionRenderer:终端/控制台界面 - AvaloniaUIRenderer:具有深色主题的现代桌面GUI - TelegramRenderer:Telegram Bot API集成
- MCP层:
FlowStepMcpService公开符合模型上下文协议的工具。
🚀 入门指南
先决条件
- .NET 10.0 SDK
- (可选)用于Telegram模式的Telegram Bot令牌
在GUI模式下运行(默认)
dotnet run --project src/FlowStep.MCP/FlowStep.MCP.csproj在CLI模式下运行
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许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
Made with ❤️
