一个实现模型上下文协议(MCP)的任务管理系统,用于与代理型AI工具无缝集成。该系统允许AI代理使用Valkey作为持久层,在计划中创建、管理和跟踪任务。
该系统构建使用:
MCP服务器设计为一次运行一种协议以简化操作。默认情况下,所有协议都是禁用的,需要显式启用所需的协议。
docker volume create valkey-data
docker run -d --name valkey-mcp \
-p 8080:8080 \
-p 6379:6379 \
-v valkey-data:/data \
-e ENABLE_SSE=true \
ghcr.io/jbrinkman/valkey-ai-tasks:latest
docker run -d --name valkey-mcp \
-p 8080:8080 \
-p 6379:6379 \
-v valkey-data:/data \
-e ENABLE_STREAMABLE_HTTP=true \
ghcr.io/jbrinkman/valkey-ai-tasks:latest
docker run -i --rm --name valkey-mcp \
-v valkey-data:/data \
-e ENABLE_STDIO=true \
ghcr.io/jbrinkman/valkey-ai-tasks:latest
容器镜像发布到GitHub容器注册表,可以使用以下命令拉取:
docker pull ghcr.io/jbrinkman/valkey-ai-tasks:latest
# 或特定版本
docker pull ghcr.io/jbrinkman/valkey-ai-tasks:1.1.0
MCP服务器支持两种传输协议:服务端发送事件(SSE)和可流式传输HTTP。每种协议暴露相似的端点但交互模式不同。
GET /sse/list_functions:列出所有可用函数POST /sse/invoke/{function_name}:调用具有给定参数的函数POST /mcp:处理所有MCP请求,使用JSON格式
{"method": "list_functions", "params": {}}{"method": "invoke", "params": {"function": "function_name", "params": {...}}}服务器根据以下内容自动选择适当的传输方式:
/)时,服务器基于内容类型重定向:
application/json → 可流式传输HTTPGET /health:返回服务器健康状态create_plan:创建新计划get_plan:通过ID获取计划list_plans:列出所有计划list_plans_by_application:列出特定应用的所有计划update_plan:更新现有计划delete_plan:通过ID删除计划update_plan_notes:更新计划的笔记get_plan_notes:获取计划的笔记create_task:在计划中创建新任务get_task:通过ID获取任务list_tasks_by_plan:列出计划中的所有任务list_tasks_by_status:列出具有特定状态的所有任务update_task:更新现有任务delete_task:通过ID删除任务reorder_task:更改任务在其计划中的顺序update_task_notes:更新任务的笔记get_task_notes:获取任务的笔记要配置AI代理使用本地MCP服务器,请在您的MCP配置文件中添加以下内容(确切的文件位置取决于您的AI代理):
注意:Docker容器应已运行。
{
"mcpServers": {
"valkey-tasks": {
"serverUrl": "http://localhost:8080/sse"
}
}
}
注意:Docker容器应已运行。
{
"mcpServers": {
"valkey-tasks": {
"serverUrl": "http://localhost:8080/mcp"
}
}
}
STDIO传输允许MCP服务器通过标准输入/输出进行通信,这对于依赖于stdin/stdout进行通信的旧版AI工具非常有用。
对于需要启动和管理MCP服务器进程的代理工具,使用如下配置:
{
"mcpServers": {
"valkey-tasks": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-v", "valkey-data:/data"
"-e", "ENABLE_STDIO=true",
"ghcr.io/jbrinkman/valkey-ai-tasks:latest"
]
}
}
}
在Docker中运行时,使用容器名称作为主机名:
{
"mcpServers": {
"valkey-tasks": {
"serverUrl": "http://valkey-mcp-server:8080/sse"
}
}
}
系统支持丰富的Markdown格式笔记,适用于计划和任务。此功能特别有助于AI代理在会话之间维护上下文并记录重要信息。
笔记内容经过清理以防止XSS和其他安全问题,同时保留Markdown格式。
除了MCP工具外,系统还提供MCP资源,使AI代理能够直接访问结构化数据。这些资源在一个请求中提供了计划和任务的完整视图,比多次工具调用更高效。
计划资源提供了计划的完整视图,包括其任务和笔记。它支持以下URI模式:
ai-tasks://plans/{id}/full - 返回特定计划及其任务ai-tasks://plans/full - 返回所有计划及其任务ai-tasks://applications/{app_id}/plans/full - 返回特定应用的所有计划每个资源返回具有以下结构的JSON对象或数组:
{
"id": "plan-123",
"application_id": "my-app",
"name": "新功能开发",
"description": "为应用程序实现新功能",
"status": "new",
"notes": "# 项目笔记\n\n该项目旨在实现以下功能...",
"created_at": "2025-06-27T14:00:21Z",
"updated_at": "2025-07-01T13:04:01Z",
"tasks": [
{
"id": "task-456",
"plan_id": "plan-123",
"title": "任务1",
"description": "任务1的描述",
"status": "待办",
"priority": "高",
"order": 0,
"notes": "# 任务笔记\n\n此任务需要以下步骤...",
"created_at": "2025-06-27T14:00:50Z",
"updated_at": "2025-07-01T12:04:27Z"
},
// 更多任务...
]
}
AI代理可以通过MCP资源API访问这些资源。这里是一个如何读取资源的例子:
{
"action": "read_resource",
"params": {
"uri": "ai-tasks://plans/123/full"
}
}
这将返回完整的计划资源,包括所有任务,比分别获取计划和任务更高效。
AI代理可以通过MCP API使用SSE或可流式传输HTTP传输与这个任务管理系统交互。这里有两个传输协议的例子:
/sse/list_functions来发现可用函数/sse/invoke/create_plan并传递参数:
{
"application_id": "my-app",
"name": "新功能开发",
"description": "为应用程序实现新功能",
"notes": "# 项目笔记\n\n该项目旨在实现以下功能:\n\n- 功能A\n- 功能B\n- 功能C"
}
/sse/invoke/create_task/sse/invoke/bulk_create_tasks一次性创建多个任务:
{
"plan_id": "plan-123",
"tasks_json": "[
{
\"title\": \"任务1\",
\"description\": \"任务1的描述\",
\"priority\": \"高\",
\"status\": \"待办\",
\"notes\": \"# 任务笔记\\n\\n此任务需要以下步骤:\\n\\n1. 第一步\\n2. 第二步\\n3. 第三步\"
},
{
\"title\": \"任务2\",
\"description\": \"任务2的描述\",
\"priority\": \"中\",
\"status\": \"待办\"
}
]"
}
/sse/invoke/update_task随着工作进展更新任务状态这是一个触发AI代理使用MCP任务管理系统的示例提示:
我需要为我的新应用“库存管理器”组织工作。
为此应用创建一个计划,并附上以下计划笔记:
"# 库存管理器项目
该项目旨在创建一个全面的库存管理系统,目标如下:
- 实时跟踪库存水平
- 生成库存移动报告
- 提供低库存物品警报"
添加以下任务:
1. 设置数据库模式
2. 实现REST API端点
3. 创建用户认证系统
4. 设计前端仪表板
5. 实现库存跟踪功能
对于数据库模式任务,添加以下笔记:
"# 数据库模式笔记
模式应包括以下表:
- 产品
- 分类
- 库存交易
- 用户
- 角色"
适当设置任务优先级,并将前两个任务设为“正在进行”。
有了这个提示,拥有Valkey MCP任务管理服务器访问权限的AI代理将会: