Skip to main content
Glama

MCPlanManager - AI Agent 任务管理系统

PyPI version License: MIT

一个简洁高效的任务管理器,专为 AI Agent 的长程任务执行而设计,支持MCP (Model Context Protocol) 标准,并同时支持 uvx 和 Docker 两种部署方式。

版本 1.2.0 更新亮点:

  • 新增计划持久化工具:引入 dumpPlan 和 loadPlan 工具,允许对任务计划进行完整的导出和恢复。

  • 优化工具文档:为使用 Pydantic 模型的工具(如 initializePlan, editDependencies)补充了参数结构描述,以改善部分客户端的兼容性。

  • 增强测试套件:添加了针对持久化功能的完整测试用例,并优化了测试运行流程。

🚀 部署与使用

我们提供两种推荐的部署方式,请根据您的需求选择。

方式一:使用 uvx (轻量级 & 快速启动)

uvx 允许您以一行命令轻松启动 MCP 服务,它会自动处理依赖管理和环境设置。

  1. 先决条件:安装 uv 如果您的系统中还没有 uv,请先执行以下命令安装:

    curl -LsSf https://astral.sh/uv/install.sh | sh
  2. 配置您的AI客户端 在 Cursor、Continue.dev 等客户端中,使用以下配置即可自动下载并运行服务(通过标准输入输出进行通信):

    {
      "mcpServers": {
        "mcplanmanager": {
          "command": "uvx",
          "args": ["mcplanmanager"]
        }
      }
    }

方式二:使用 Docker (生产环境 & 隔离部署)

Docker 提供了最佳的环境一致性和隔离性,是生产环境部署的首选方案。服务将以 SSE (Server-Sent Events) 模式运行。

  1. 拉取或构建镜像 从 Docker Hub 拉取最新镜像:

    docker pull donway19/mcplanmanager:latest

    或者在项目根目录本地构建:

    docker-compose build
  2. 运行容器 您可以通过 docker run 或 docker-compose 来启动服务。

    使用 docker run:

    docker run -d --name mcplanmanager_service -p 8080:8080 donway19/mcplanmanager:latest

    使用 docker-compose (推荐): 项目根目录下的 docker-compose.yml 文件已为您配置好:

    services:
      mcplanmanager:
        build: .
        container_name: mcplanmanager_service
        ports:
          - "8080:8080"
        restart: unless-stopped

    然后运行 docker-compose up -d。

  3. 配置您的AI客户端 使用以下配置通过 SSE 连接到 Docker 容器中运行的服务:

    {
      "mcpServers": {
        "mcplanmanager-docker": {
          "transport": "sse",
          "url": "http://localhost:8080/sse"
        }
      }
    }

    注意:如果部署在云服务器上,请将 localhost 替换为服务器的公网 IP 或域名。

Related MCP server: TaskMateAI

🧪 运行测试

我们提供了一套完整的测试套件来保证代码质量。

  1. 启动服务 确保您的 MCP 服务正在运行(通过 uvx 或 Docker)。

  2. 运行所有测试 在项目根目录执行以下命令:

    # 推荐使用 SSE 模式测试 Docker 部署
    python test/run_all_tests.py --mode sse
    
    # 或者使用 uvx 模式测试本地服务
    # python test/run_all_tests.py --mode uvx

    该脚本会自动运行所有功能测试和边界情况测试,并输出详细报告。

🛠️ MCP 工具列表

本项目提供以下15个工具:

  • initializePlan: 初始化新的任务计划

  • loadPlan: 从一个完整的计划对象加载并替换当前计划

  • dumpPlan: 导出当前完整的计划数据为一个字典对象

  • getCurrentTask: 获取当前正在执行的任务

  • startNextTask: 开始下一个可执行的任务

  • completeTask: 标记任务为完成状态

  • failTask: 标记任务失败

  • skipTask: 跳过指定任务

  • addTask: 添加新任务到计划中

  • getTaskList: 获取任务列表(支持状态过滤)

  • getExecutableTaskList: 获取当前可执行的任务列表

  • getPlanStatus: 获取整个计划的状态

  • editDependencies: 修改任务间的依赖关系

  • visualizeDependencies: 生成依赖关系可视化(支持ascii, tree, mermaid格式)

  • generateContextPrompt: 生成上下文提示词

🧑‍💻 本地开发

如果您希望贡献代码或进行二次开发,请遵循以下步骤:

  1. 克隆仓库并设置环境

    git clone https://github.com/donway19/MCPlanManager.git
    cd MCPlanManager
    uv venv
    source .venv/bin/activate
    uv pip install -e .
  2. 在 Cursor 中进行本地调试 为了实现修改代码后实时生效的热重载调试,请在 Cursor 的 mcp.server.configFiles 设置中指向项目中的 examples/mcp_configs/local_development.json 文件。该文件已为您配置好了本地开发所需的环境变量。

    启动 Cursor 后,您就可以在聊天窗口中使用 @mcplanmanager-local-dev 来调用和测试您本地的最新代码了。

📄 许可证

本项目基于 MIT License - 详见 LICENSE 文件。

Available Tools

15 tools
addTaskA

向当前计划中动态添加一个新任务。

Args: name (str): 新任务的名称,应确保唯一性。 dependencies (List[int]): 新任务所依赖的任务ID的整数列表 (从0开始)。 reasoning (str): 解释为何要添加此任务的字符串。 after_task_id (int, optional): 一个任务ID,新任务将被插入到该任务之后。如果省略,则添加到列表末尾。

Returns: ToolResponse[TaskOutput]: 包含新创建任务的响应对象。

Inputs: name (required), dependencies (required), reasoning (required), after_task_id.

completeTaskA

将指定ID的任务标记为 'completed' (已完成)。 这是解锁后续依赖任务的关键步骤。

Args: task_id (int): 需要标记为完成的任务的ID (从0开始)。 result (str): 描述任务完成结果或产出的字符串。

Inputs: task_id (required), result (required).

dumpPlanA

导出当前完整的计划数据为一个字典对象。 这个导出的对象可以被 loadPlan 工具用来恢复状态。

Returns: ToolResponse[dict]: 包含当前完整计划数据的响应对象。

Inputs: no named parameters.

editDependenciesA

以批量、事务性的方式编辑一个或多个任务的依赖关系。

此工具允许 'set' 或 'update' 操作,所有编辑将在应用前进行全面验证。 如果任何指令失败,整个操作将回滚。

Args: edits (List[DependencyEdit]): 一个包含编辑指令对象的列表,每个对象的结构如下: - task_id (int): 要修改的任务ID。 - action (Literal["set", "update"]): 要执行的操作。 - dependencies (Optional[List[int]]): 当 action 为 'set' 时,提供新的完整依赖ID列表。 - add (Optional[List[int]]): 当 action 为 'update' 时,提供要添加的依赖ID列表。 - remove (Optional[List[int]]): 当 action 为 'update' 时,提供要移除的依赖ID列表。

Inputs: edits (required).

failTaskB

将指定ID的任务标记为 'failed' (失败)。

Args: task_id (int): 需要标记为失败的任务的ID (从0开始)。 error_message (str): 描述任务失败原因的字符串。 should_retry (bool, optional): 是否应该重试该任务的标志。默认为 True。

Inputs: task_id (required), error_message (required), should_retry.

generateContextPromptB

生成一个详细的文本提示,总结计划的当前状态。 这个提示可以作为上下文提供给AI模型,以帮助其决定下一步行动。 内容包括:总体目标、当前任务、可执行任务列表等。

Inputs: no named parameters.

getCurrentTaskA

获取当前标记为 'in_progress' (正在进行中) 的任务详情。

Returns: ToolResponse[TaskOutput]: 包含当前任务详情的响应对象。

Inputs: no named parameters.

getExecutableTaskListB

获取当前所有依赖已满足且状态为 'pending' 的可执行任务列表。

Returns: ToolResponse[List[TaskOutput]]: 包含可执行任务列表的响应对象。

Inputs: no named parameters.

getPlanStatusB

获取整个计划的全面概览,包括元数据、进度、任务状态统计等。

Inputs: no named parameters.

getTaskListB

获取计划中所有任务的列表,可按状态进行过滤。

Args: status_filter (str, optional): 用于过滤任务的状态字符串。 可接受的值: 'pending', 'in_progress', 'completed', 'failed', 'skipped'。

Returns: ToolResponse[List[TaskOutput]]: 包含任务列表的响应对象。

Inputs: status_filter.

initializePlanA

初始化或完全替换一个新的任务计划。

Args: goal (str): 描述计划总体目标的字符串。 tasks (List[TaskInput]): 任务对象的列表。每个任务的结构如下: - name (str): 任务的名称,在一个计划中应唯一。 - dependencies (List[Union[str, int]]): 依赖的任务名称或ID列表。 - reasoning (str): 阐述为何需要此任务。

Inputs: goal (required), tasks (required).

loadPlanA

通过一个完整的计划对象加载或替换当前计划。 这个工具会直接覆盖内存中的整个计划,请谨慎使用。

Args: plan_data (dict): 一个包含完整计划数据的字典对象,通常由 dumpPlan 工具导出。 它应包含 'meta', 'state', 和 'tasks' 三个顶级键。

Inputs: plan_data (required).

skipTaskA

将指定ID的任务标记为 'skipped' (已跳过)。 被跳过的任务在依赖解析中被视为“已完成”,允许后续任务继续。

Args: task_id (int): 需要跳过的任务的ID (从0开始)。 reason (str): 解释为何跳过此任务的字符串。

Inputs: task_id (required), reason (required).

startNextTaskA

自动查找下一个可执行的任务(所有依赖均已完成)并开始执行。 这会将任务状态更新为 'in_progress'。这是推进计划的核心方法。

Returns: ToolResponse[TaskOutput]: 包含已启动任务的响应对象。

Inputs: no named parameters.

visualizeDependenciesB

生成当前任务依赖关系的可视化图。

Args: format (str, optional): 输出的格式。可接受的值为 'mermaid' (生成流程图代码), 'tree' (生成树状图), 或 'ascii' (生成纯文本格式的列表)。 默认为 'ascii'。

Returns: str: 包含所选格式可视化内容的字符串。

Inputs: format.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4/5.0

    Scored across 15 tools

    Disambiguation5/5

    Each tool has a distinct purpose with clear boundaries. For example, addTask, completeTask, failTask, and skipTask handle different task states; getCurrentTask, getExecutableTaskList, getTaskList, and getPlanStatus provide different views of plan data; and initializePlan, dumpPlan, and loadPlan manage plan lifecycle. No tools overlap in functionality.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern with snake_case, such as addTask, completeTask, dumpPlan, editDependencies, failTask, generateContextPrompt, getCurrentTask, getExecutableTaskList, getPlanStatus, getTaskList, initializePlan, loadPlan, skipTask, startNextTask, and visualizeDependencies. This uniformity makes the set predictable and easy to understand.

    Tool Count5/5

    With 15 tools, the server is well-scoped for managing task plans, covering all essential operations like task addition, state changes, dependency management, plan loading/saving, status queries, and visualization. Each tool serves a specific role without redundancy, making the count appropriate for the domain.

    Completeness5/5

    The tool set provides complete coverage for task plan management, including CRUD operations (addTask, initializePlan, loadPlan, dumpPlan), task lifecycle handling (completeTask, failTask, skipTask, startNextTask), dependency management (editDependencies, visualizeDependencies), and comprehensive querying (getCurrentTask, getExecutableTaskList, getTaskList, getPlanStatus, generateContextPrompt). No obvious gaps exist; agents can fully interact with plans from creation to completion.

    Maintenance

    ActivityInactive
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      D
      maintenance
      A Model Context Protocol server that provides persistent task management capabilities for AI assistants, allowing them to create, update, and track tasks beyond their usual context limitations.
      5
      -
    • A
      license
      Not graded
      quality
      D
      maintenance
      AI-driven task management application that operates via MCP, enabling autonomous creation, organization, and execution of tasks with support for subtasks, priorities, and progress tracking.
      2
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      An intelligent task management system that provides structured workflows for AI Agents to plan, decompose, and execute complex programming tasks. It features a dedicated research mode for technical investigations and a task memory function to optimize workflows and avoid redundant coding work.
      1
      MIT