• 简体中文
  • 架构

    MoMCP-TUI 采用模块化架构,职责分离清晰。

    高层架构

    MoMCP-TUI 分为四层。TUI 层基于 Textual 框架处理所有用户交互,包括聊天界面、弹窗对话框和命令面板。核心层包含与大模型 API 通信的 LLM 客户端、编排工具服务器的 MCP 管理器,以及配置管理器。MCP 层管理本地(stdio)和远程(HTTP)工具服务器的连接。工具层提供上下文压缩、取消机制、剪贴板访问和国际化等横切关注点。

    graph TB
        subgraph "TUI 层 (Textual)"
            A[MomcpTUI 应用] --> B[聊天界面]
            A --> C[弹窗对话框]
            A --> D[命令面板]
        end
    
        subgraph "核心层"
            A --> E[LLM 客户端]
            A --> F[MCP 管理器]
            A --> G[配置管理器]
        end
    
        subgraph "MCP 层"
            F --> H[MCP 服务器]
            H --> I[stdio 传输]
            H --> J[HTTP 传输]
        end
    
        subgraph "工具层"
            A --> K[上下文压缩]
            A --> L[取消机制]
            A --> M[剪贴板]
            A --> N[国际化]
        end
    
        E -->|HTTP/SSE| O[大模型 API]

    请求流程

    当你发送消息时,TUI 将其追加到对话历史,并将完整上下文及可用工具定义传递给 LLM 客户端。大模型实时流式返回思考过程和回复内容。如果模型判断需要调用工具,它会发出工具调用事件 — TUI 将请求路由到 MCP 管理器,由管理器在对应的服务器上执行工具,并将结果反馈给大模型。对于复杂的多步任务,这个循环最多可重复 12 次。

    sequenceDiagram
        participant 用户
        participant TUI
        participant LLM
        participant MCP
        participant 服务器
    
        用户->>TUI: 输入消息
        TUI->>TUI: 追加到历史
        TUI->>LLM: 发送消息 + 工具定义
        LLM-->>TUI: 流式: 思考增量
        LLM-->>TUI: 流式: 内容增量
        alt 需要工具调用
            LLM-->>TUI: 工具调用事件
            TUI->>MCP: 执行工具
            MCP->>服务器: MCP call_tool
            服务器-->>MCP: 结果
            MCP-->>TUI: 结果
            TUI->>LLM: 工具结果
            LLM-->>TUI: 最终回复
        end
        TUI-->>用户: 显示回复

    线程模型

    MoMCP-TUI 使用多线程架构:

    线程用途
    主线程Textual 事件循环、UI 渲染
    LLM 线程流式 HTTP 请求
    MCP 事件循环异步 MCP 服务器通信

    MCP 管理器在守护线程中运行自己的 asyncio 事件循环,使用 run_coroutine_threadsafe 桥接同步/异步边界。

    关键设计决策

    1. 同步优先的 TUI: Textual 应用同步运行;LLM 调用在后台线程中进行
    2. 异步 MCP: MCP 服务器使用 asyncio 实现并发工具调用
    3. 基于 Token 的压缩: 当对话超过 max_context_tokens 时自动压缩
    4. 白名单安全: 文件访问被限制在明确允许的路径内