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

repomix)生成一个逐步编码计划,供AI代理遵循,并对高难度任务进行递归任务分解。repomix的截断。.mcp/features/目录下的单独JSON文件中,以便当用户请求调整计划时,Gemini 2.5可以拥有上下文。git diff HEAD输出,使用LLM创建新的任务(如果需要)。AUTO_REVIEW_ON_COMPLETION=true),在功能的最后一个原始任务完成后自动运行代码审查过程。adjust_plan工具调整计划。克隆:
git clone https://github.com/jhawkins11/task-manager-mcp.git
cd task-manager-mcp
安装后端依赖:
npm install
配置: 后续将在Cursor的MCP设置中直接配置API密钥(参见使用部分),但你可能仍然希望有一个本地的.env文件用于手动测试(参见配置部分)。
构建: 此命令构建后端和前端服务器,并将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)访问。
如果手动运行(非通过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当前的价格/层级而产生相关成本。请检查他们的网站并在配置中调整备用模型,如有必要。
这是该服务器的主要使用方式。尚未测试与其他AI代码编辑器的兼容性。如果您尝试了,请告知我结果,我会更新README。
构建服务器后(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)。.env文件。plan_feature,mark_task_complete,get_next_task,review_changes,adjust_plan)可用且已为此模式启用。您可能还需要根据工作流启用其他工具,如代码库、终端等。始终在执行任何其他操作之前使用plan_feature mcp工具获取功能请求。永远!它将返回实现的第一步。不要实施超出任务描述的内容。完成之后运行mark_task_complete,这将给出下一个任务。如果用户说“审查”,使用review_changes工具。review_changes工具将生成新的任务供您遵循,就像plan_feature一样。审查后,遵循相同的逐项任务完成工作流程:完成每个审查生成的任务,标记其完成,并调用get_next_task直到全部完成。
如果在任何步骤需要澄清,您将不会收到下一个任务,并且必须在用户通过UI回答澄清问题后手动运行get_next_task。
重要提示:您的工作是逐项完成任务。不要做任何其他更改,只做当前任务所说的。
plan_feature工具。status: "completed"和第一个任务的描述在message字段中。用户界面(如果正在运行)会被启动/更新。status: "awaiting_clarification",featureId,uiUrl,以及指示代理等待并稍后调用get_next_task的说明。用户界面会被启动/更新以显示问题。featureId调用get_next_task。mark_task_complete(带taskId和featureId)。review_changes。集成的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)。