Skip to content

feat: MCP server 启动加载优化(缓存或并发加载) #120

Closed

Description

@minorcell

问题描述

目前 memo 配置的 MCP 服务每次启动时都需要重新加载,这在配置较多 MCP server 时会显著影响启动时间,降低用户体验。

现状

  • 每次启动 memo 时,都会重新初始化所有配置的 MCP server
  • 当 MCP server 较多或某些 server 响应较慢时,启动时间会明显变长
  • 用户需要等待所有 MCP 加载完成后才能开始交互

Activity

  1. minorcell commented on Feb 10, 2026

    @minorcell
    OwnerAuthor

    补充一个可落地方案(先定方向,后续再实现):

    方案:按需激活 MCP + 选择持久化

    在 memo 启动时提供 MCP server 多选列表,让用户决定本次会话激活哪些 server。

    • 交互形态:多选
    • 默认策略:默认全选(保持兼容当前行为)
    • 可选增强:将用户选择持久化(例如配置文件)作为下次默认值

    预期收益

    1. 减少 token 消耗:仅暴露/注入被激活 server 的工具定义,避免无关工具占用上下文。
    2. 降低等待时间:只初始化必要的 MCP server,减少启动阻塞。

    建议的产品细节

    • 提供“全选/清空/恢复默认”快捷操作。
    • 支持一次性选择(仅本次会话)与持久化选择(后续会话默认)。
    • 对未激活 server 保持可见状态(例如“未激活”),便于会话中再开启。

    缓存方向(先记录,后细化)

    缓存策略建议与“按需激活”配套设计:

    • 以 server + config hash 作为缓存键;
    • 缓存工具清单(tool schema)并设置 TTL;
    • 配置变更或 TTL 过期时自动失效;
    • 启动先用缓存快速可用,再后台刷新。

    如果这个方向认可,我可以在后续 PR 里按“按需激活(默认全选)→ 持久化选择 → 缓存”分阶段推进。

  2. pinned this issue on Feb 10, 2026
  3. unpinned this issue on Feb 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:toolsBuilt-in tools and tool runtimeneeds-triageIssue needs initial triage

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions