返回市场
瓦尔基-人工智能任务

瓦尔基-人工智能任务

作者:jbrinkman22 星标更新:2025-07-06

项目介绍

Valkey MCP 任务管理服务器

Lint 发布容器 发布 常规提交

一个实现模型上下文协议(MCP)的任务管理系统,用于与代理型AI工具无缝集成。该系统允许AI代理使用Valkey作为持久层,在计划中创建、管理和跟踪任务。

特性

  • 计划管理(创建、读取、更新、删除)
  • 任务管理(创建、读取、更新、删除)
  • 任务排序和优先级设置
  • 任务状态跟踪
  • 支持Markdown格式的笔记,适用于计划和任务
  • 集成AI代理的MCP服务器
  • 支持STDIO、SSE和可流式传输HTTP传输协议
  • 使用Docker容器进行轻松部署

架构

该系统构建使用:

  • Go:后端实现
  • Valkey:数据持久化
  • Valkey-Glide v2:官方Go客户端
  • 模型上下文协议:AI代理集成

快速开始

Docker部署

MCP服务器设计为一次运行一种协议以简化操作。默认情况下,所有协议都是禁用的,需要显式启用所需的协议。

先决条件

  1. 创建一个命名卷用于Valkey数据持久化:
    docker volume create valkey-data
    

使用SSE(推荐用于大多数情况)

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

使用可流式传输HTTP

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

使用STDIO(用于直接进程通信)

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 API参考

MCP服务器支持两种传输协议:服务端发送事件(SSE)和可流式传输HTTP。每种协议暴露相似的端点但交互模式不同。

服务端发送事件(SSE)端点

  • GET /sse/list_functions:列出所有可用函数
  • POST /sse/invoke/{function_name}:调用具有给定参数的函数

可流式传输HTTP端点

  • POST /mcp:处理所有MCP请求,使用JSON格式
    • 列出函数:{"method": "list_functions", "params": {}}
    • 调用函数:{"method": "invoke", "params": {"function": "function_name", "params": {...}}}

传输选择

服务器根据以下内容自动选择适当的传输方式:

  1. URL路径:连接到您首选传输的具体端点
  2. 内容类型:当连接到根路径(/)时,服务器基于内容类型重定向:
    • application/json → 可流式传输HTTP
    • 其他内容类型 → SSE

健康检查

  • GET /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:获取任务的笔记

MCP配置

本地MCP配置

要配置AI代理使用本地MCP服务器,请在您的MCP配置文件中添加以下内容(确切的文件位置取决于您的AI代理):

使用SSE传输(默认)

注意:Docker容器应已运行。

{
  "mcpServers": {
    "valkey-tasks": {
      "serverUrl": "http://localhost:8080/sse"
    }
  }
}

使用可流式传输HTTP传输

注意:Docker容器应已运行。

{
  "mcpServers": {
    "valkey-tasks": {
      "serverUrl": "http://localhost:8080/mcp"
    }
  }
}

使用STDIO传输

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 MCP配置

在Docker中运行时,使用容器名称作为主机名:

使用SSE传输(默认)

{
  "mcpServers": {
    "valkey-tasks": {
      "serverUrl": "http://valkey-mcp-server:8080/sse"
    }
  }
}

笔记功能

系统支持丰富的Markdown格式笔记,适用于计划和任务。此功能特别有助于AI代理在会话之间维护上下文并记录重要信息。

笔记特性

  • 完整的Markdown支持,包括:
    • 标题、列表和表格
    • 带语法高亮的代码块
    • 链接和图片
    • 强调和格式化
  • 计划和任务的独立笔记
  • 专门的MCP工具用于管理笔记
  • 笔记包含在所有相关的API响应中

笔记的最佳实践

  1. 维持上下文:使用笔记记录应在会话之间持续的重要上下文
  2. 记录决策:记录关键决策及其理由
  3. 追踪进度:使用笔记追踪进度和下一步行动
  4. 组织信息:使用Markdown格式清晰地结构化信息
  5. 代码示例:包含带有适当语法高亮的代码片段

笔记安全性

笔记内容经过清理以防止XSS和其他安全问题,同时保留Markdown格式。

MCP资源

除了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"
    },
    // 更多任务...
  ]
}

使用MCP资源

AI代理可以通过MCP资源API访问这些资源。这里是一个如何读取资源的例子:

{
  "action": "read_resource",
  "params": {
    "uri": "ai-tasks://plans/123/full"
  }
}

这将返回完整的计划资源,包括所有任务,比分别获取计划和任务更高效。

与AI代理一起使用

AI代理可以通过MCP API使用SSE或可流式传输HTTP传输与这个任务管理系统交互。这里有两个传输协议的例子:

使用SSE传输

  1. 代理调用/sse/list_functions来发现可用函数
  2. 代理调用/sse/invoke/create_plan并传递参数:
    {
      "application_id": "my-app",
      "name": "新功能开发",
      "description": "为应用程序实现新功能",
      "notes": "# 项目笔记\n\n该项目旨在实现以下功能:\n\n- 功能A\n- 功能B\n- 功能C"
    }
    
  3. 代理可以使用以下方法之一向计划添加任务:
    • 单独创建任务,使用/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\": \"待办\"
          }
        ]"
      }
      
  4. 代理调用/sse/invoke/update_task随着工作进展更新任务状态

示例代理提示

这是一个触发AI代理使用MCP任务管理系统的示例提示:

我需要为我的新应用“库存管理器”组织工作。
为此应用创建一个计划,并附上以下计划笔记:
"# 库存管理器项目

该项目旨在创建一个全面的库存管理系统,目标如下:
- 实时跟踪库存水平
- 生成库存移动报告
- 提供低库存物品警报"

添加以下任务:
1. 设置数据库模式
2. 实现REST API端点
3. 创建用户认证系统
4. 设计前端仪表板
5. 实现库存跟踪功能

对于数据库模式任务,添加以下笔记:
"# 数据库模式笔记

模式应包括以下表:
- 产品
- 分类
- 库存交易
- 用户
- 角色"

适当设置任务优先级,并将前两个任务设为“正在进行”。

有了这个提示,拥有Valkey MCP任务管理服务器访问权限的AI代理将会:

  1. 使用指定的Markdown格式笔记创建一个新的计划,应用ID为"inventory-manager"
  2. 向计划添加五个指定的任务
  3. 向数据库模式任务添加详细的Markdown格式笔记
  4. 为每个任务设置适当的优先级
  5. 将前两个任务的状态更新为“正在进行”
  6. 返回创建的计划和任务的总结