返回市场
任务管理器-mcp

任务管理器-mcp

作者:jhawkins1121 星标更新:2025-05-21

项目介绍

Task Manager MCP Server

这是一个与AI代码编辑器如Cursor集成的MCP服务器。其主要目标是最大化Cursor的代理能力以及Gemini 2.5的强大架构能力,同时绕过Cursor极其有限的上下文窗口限制。这在很大程度上受到了Roo Code的Boomerang模式的启发,但发现它非常昂贵,因为唯一能与其应用机器人一起工作的模型是Claude 3.7 Sonnet。通过这个服务器,你可以获得两全其美的效果:无限的上下文窗口和无限的使用权限,只需支付Cursor每月20美元的订阅费用。

此外,它还包括一个Svelte用户界面,允许你查看任务列表和进度,手动调整计划,并审查更改。

Svelte用户界面

任务列表

核心功能

  • 复杂功能规划: 提供一个功能描述,它会使用带有项目上下文的LLM(通过repomix)生成一个逐步编码计划,供AI代理遵循,并对高难度任务进行递归任务分解。
  • 集成用户界面服务器: 运行一个Express服务器来提供静态前端文件,并为用户界面提供基本的API端点。在规划完成后或需要澄清时,在默认浏览器中打开用户界面并显示任务列表和进度。
  • 无限上下文窗口: 使用Gemini 2.5的1百万令牌上下文窗口,并在需要时使用repomix的截断。
  • 对话历史记录: 对每个功能的对话历史记录进行跟踪,存储在.mcp/features/目录下的单独JSON文件中,以便当用户请求调整计划时,Gemini 2.5可以拥有上下文。
  • 澄清工作流程: 处理LLM需要更多信息的情况,暂停规划并通过WebSockets与连接的用户界面交互。
  • 任务CRUD: 允许通过用户界面创建、读取、更新和删除任务。
  • 代码审查: 分析git diff HEAD输出,使用LLM创建新的任务(如果需要)。
  • 自动审查(可选): 如果配置了(AUTO_REVIEW_ON_COMPLETION=true),在功能的最后一个原始任务完成后自动运行代码审查过程。
  • 计划调整: 创建后通过adjust_plan工具调整计划。

安装

预备条件:

  • Node.js
  • npm
  • Git

安装及构建:

  1. 克隆:

    git clone https://github.com/jhawkins11/task-manager-mcp.git
    cd task-manager-mcp
    
  2. 安装后端依赖:

    npm install
    
  3. 配置: 后续将在Cursor的MCP设置中直接配置API密钥(参见使用部分),但你可能仍然希望有一个本地的.env文件用于手动测试(参见配置部分)。

  4. 构建: 此命令构建后端和前端服务器,并将Svelte用户界面复制到dist/frontend-ui/目录。

    npm run build
    

手动运行服务器:

对于不使用Cursor的本地测试,你可以直接使用Node或npm脚本运行服务器。此方法使用.env文件进行配置。

直接使用Node(使用绝对路径):

node /full/path/to/your/task-manager-mcp/dist/server.js

使用npm start:

npm start

这将启动MCP服务器(标准I/O)、WebSocket服务器和用户界面的HTTP服务器。用户界面应可通过http://localhost:<UI_PORT>(默认3000)访问。

配置(手动运行的.env文件):

如果手动运行(非通过Cursor),则需在项目根目录创建一个.env文件以配置API密钥和端口。注意:当通过Cursor运行时,这些应在Cursor的mcp.json配置中设置(参见使用部分)。

# .env - 仅用于手动`npm start`或`node dist/server.js`
# === OpenRouter(推荐)===

# 获取密钥:https://openrouter.ai/keys
OPENROUTER_API_KEY=sk-or-v1-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
OPENROUTER_MODEL=google/gemini-2.5-flash-preview:thinking
FALLBACK_OPENROUTER_MODEL=google/gemini-2.5-flash-preview:thinking

# === Google AI API(替代方案)===
# GEMINI_API_KEY=your_google_ai_api_key
# GEMINI_MODEL=gemini-1.5-flash-latest
# FALLBACK_GEMINI_MODEL=gemini-1.5-flash-latest

# === 用户界面/WebSocket端口 ===
# 默认值为4999,若未设置。
UI_PORT=4999
WS_PORT=4999

# === 自动审查 ===
# 如果为true,则代理将在最后一个任务完成后自动运行'review_changes'工具。
# 默认为false。
AUTO_REVIEW_ON_COMPLETION=false

避免成本

重要提示: 建议将您自己的Google AI API密钥集成到OpenRouter中,以避免免费模型的速率限制。详情如下。

使用OpenRouter的免费层级: 通过使用标记为“免费”的模型(如撰写本文时的google/gemini-2.5-flash-preview:thinking),同时连接您的Google AI API密钥,您可以显著减少甚至消除成本。更多详情请参阅此Reddit帖子:https://www.reddit.com/r/ChatGPTCoding/comments/1jrp1tj/a_simple_guide_to_setting_up_gemini_25_pro_free/

备用成本: 如果主模型达到速率限制,服务器将自动重试使用备用模型。默认的备用模型(FALLBACK_OPENROUTER_MODEL)通常是更快/更便宜的模型,如Gemini Flash,这可能会根据OpenRouter当前的价格/层级而产生相关成本。请检查他们的网站并在配置中调整备用模型,如有必要。

使用Cursor(任务管理器模式)

这是该服务器的主要使用方式。尚未测试与其他AI代码编辑器的兼容性。如果您尝试了,请告知我结果,我会更新README。

1. 在Cursor中配置MCP服务器:

构建服务器后(npm run build),你需要告诉Cursor如何运行它。

找到Cursor的MCP配置文件。这可能是:

  • 项目特定的: 在项目的根目录下创建或编辑.cursor/mcp.json文件。
  • 全局的: 在用户的主目录下创建或编辑~/.cursor/mcp.json文件(适用于所有项目)。

向该JSON文件中的mcpServers对象添加以下条目:

{
  "mcpServers": {
    "task-manager-mcp": {
      "command": "node",
      "args": ["/full/path/to/your/task-manager-mcp/dist/server.js"],
      "env": {
        "OPENROUTER_API_KEY": "sk-or-v1-xxxxxxxxxxxxxxxxxxxx"
        //   可选:我推荐的MCP模型是Gemini 2.5 Pro Free,这已经是默认设置
        //   "OPENROUTER_MODEL": "google/gemini-2.5-flash-preview:thinking",
        //   也是可选的
        //   "FALLBACK_OPENROUTER_MODEL": "google/gemini-2.5-flash-preview:thinking",
        //   可选:如果没有设置,默认的UI端口是4999
        //   "UI_PORT": "4999",
        //   可选:如果没有设置,默认的WebSocket服务器端口是4999
        //   "WS_PORT": "4999"
        // 如果直接使用Google,请在此处添加GEMINI_API_KEY
        // 在此处添加任何其他必要的环境变量
      }
    }
    // 如果有其他MCP服务器,请在此处添加
  }
}

重要提示:

  • /full/path/to/your/task-manager-mcp/dist/server.js替换为您机器上编译后的服务器脚本的绝对路径。
  • sk-or-v1-xxxxxxxxxxxxxxxxxxxx替换为您的实际OpenRouter API密钥(或直接使用Google AI时设置GEMINI_API_KEY)。
  • 这些环境变量定义将被传递给Cursor启动服务器时的过程,覆盖任何.env文件。

2. 创建自定义Cursor模式:

  1. 转到Cursor设置 -> 功能 -> 聊天 -> 启用自定义模式。
  2. 返回聊天视图,点击模式选择器(左下角),然后点击添加自定义模式。
  3. 给它起个名字(例如,“MCP规划者”,“任务开发者”),选择图标/快捷键。
  4. 启用工具:确保此服务器暴露的工具(plan_featuremark_task_completeget_next_taskreview_changesadjust_plan)可用且已为此模式启用。您可能还需要根据工作流启用其他工具,如代码库、终端等。
  5. 推荐的代理指令:将以下规则精确地粘贴到“自定义指令”文本框中:
始终在执行任何其他操作之前使用plan_feature mcp工具获取功能请求。永远!它将返回实现的第一步。不要实施超出任务描述的内容。完成之后运行mark_task_complete,这将给出下一个任务。如果用户说“审查”,使用review_changes工具。review_changes工具将生成新的任务供您遵循,就像plan_feature一样。审查后,遵循相同的逐项任务完成工作流程:完成每个审查生成的任务,标记其完成,并调用get_next_task直到全部完成。

如果在任何步骤需要澄清,您将不会收到下一个任务,并且必须在用户通过UI回答澄清问题后手动运行get_next_task。

重要提示:您的工作是逐项完成任务。不要做任何其他更改,只做当前任务所说的。
  1. 保存自定义模式。

预期的工作流程(使用自定义模式):

  1. 在Cursor中选择您的新自定义模式。
  2. 给Cursor一个功能请求(例如,“使用JWT添加认证”)。
  3. Cursor按照指示调用plan_feature工具。
  4. 服务器规划,保存数据,并返回一个JSON响应(在文本内容内)给Cursor。
    • 如果成功:响应包括status: "completed"和第一个任务的描述在message字段中。用户界面(如果正在运行)会被启动/更新。
    • 如果需要澄清:响应包括status: "awaiting_clarification"featureIduiUrl,以及指示代理等待并稍后调用get_next_task的说明。用户界面会被启动/更新以显示问题。
  5. Cursor仅实施所描述的任务(如果提供了)。
  6. 如果需要澄清,用户在UI中回答,服务器恢复规划并通过WebSocket更新用户界面。代理按照指示使用featureId调用get_next_task
  7. 如果任务已完成,Cursor调用mark_task_complete(带taskIdfeatureId)。
  8. 服务器标记任务完成,并在响应消息中返回下一个待处理任务。
  9. Cursor重复步骤4-8。
  10. 如果用户要求Cursor“审查”,它将调用review_changes

API端点(用于用户界面)

集成的Express服务器为前端提供这些基本端点:

  • GET /api/features:返回现有功能ID列表。
  • GET /api/tasks/:featureId:返回特定功能的任务列表。
  • GET /api/tasks:返回最近创建/修改的功能的任务。
  • GET /api/features/:featureId/pending-question:检查功能是否有待澄清的问题。
  • POST /api/tasks:为功能创建一个新的任务。
  • PUT /api/tasks/:taskId:更新现有的任务。
  • DELETE /api/tasks/:taskId:删除任务。
  • (静态文件):从dist/frontend-ui/提供文件(例如,index.html)。