Valkey MCP任务管理服务器
   
一个实现模型上下文协议(MCP)的任务管理系统,用于与代理AI工具无缝集成。该系统允许AI代理使用Valkey作为持久层在计划中创建、管理和跟踪任务。
特性
- 计划管理(创建、读取、更新、删除)
- 任务管理(创建、读取、更新、删除)
- 任务排序和优先级
- 任务的状态跟踪
- 笔记支持Markdown格式,适用于计划和任务
- 用于AI代理集成的MCP服务器
- 支持STDIO、SSE和流式HTTP传输协议
- Docker容器支持,易于部署
建筑
该系统是使用以下方式构建的:
- 去:用于后端实现
- 瓦尔基:用于数据持久性
- Valkey Glide v2:Valkey的官方Go客户端
- 模型上下文协议:用于AI代理集成
快速开始
Docker部署
为了简单起见,MCP服务器被设计为一次运行一个协议。默认情况下,所有协议都被禁用,您需要明确启用要使用的协议。
先决条件
- 为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
# or a specific version
docker pull ghcr.io/jbrinkman/valkey-ai-tasks:1.1.0MCP API参考
MCP服务器支持两种传输协议:服务器发送事件(SSE)和流式HTTP。每种协议都暴露了类似的端点,但具有不同的交互模式。
服务器发送事件(SSE)端点
GET /sse/list_functions:列出所有可用功能POST /sse/invoke/{function_name}:调用具有给定参数的函数
可流式传输的HTTP端点
POST /mcp:使用JSON格式处理所有MCP请求
- 功能列表: {"method": "list_functions", "params": {}} - 对于函数调用: {"method": "invoke", "params": {"function": "function_name", "params": {...}}}
运输选择
服务器根据以下因素自动选择适当的传输:
- url路径:连接到您首选传输的特定端点
- 内容类型:连接到根路径时(
/),服务器根据内容类型重定向:
- 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回复中
Notes的最佳实践
- 维护上下文:使用笔记记录会议之间应持续存在的重要背景
- 文件决策:记录关键决策及其理由
- 跟踪进度:使用笔记跟踪进度和下一步行动
- 组织信息:使用Markdown格式清晰地组织信息
- 代码示例:包含带有正确语法突出显示的代码片段
Notes安全
Notes内容经过净化,以防止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": "New Feature Development",
"description": "Implement new features for the application",
"status": "new",
"notes": "# Project Notes\n\nThis project aims to implement the following features...",
"created_at": "2025-06-27T14:00:21Z",
"updated_at": "2025-07-01T13:04:01Z",
"tasks": [
{
"id": "task-456",
"plan_id": "plan-123",
"title": "Task 1",
"description": "Description for task 1",
"status": "pending",
"priority": "high",
"order": 0,
"notes": "# Task Notes\n\nThis task requires the following steps...",
"created_at": "2025-06-27T14:00:50Z",
"updated_at": "2025-07-01T12:04:27Z"
},
// Additional tasks...
]
}使用MCP资源
AI代理可以使用MCP资源API来访问这些资源。以下是一个如何读取资源的示例:
{
"action": "read_resource",
"params": {
"uri": "ai-tasks://plans/123/full"
}
}这将返回包括所有任务的完整计划资源,这比单独调用以获取计划及其任务更有效。
与AI代理一起使用
AI代理可以通过MCP API使用SSE或Streamable HTTP传输与该任务管理系统交互。以下是两种传输协议的示例:
使用SSE传输
- 代理人打电话来
/sse/list_functions发现可用功能 - 代理人打电话来
/sse/invoke/create_plan参数:
{
"application_id": "my-app",
"name": "New Feature Development",
"description": "Implement new features for the application",
"notes": "# Project Notes\n\nThis project aims to implement the following features:\n\n- Feature A\n- Feature B\n- Feature C"
}- 代理可以使用以下任一方式将任务添加到计划中:
- 使用创建单个任务 /sse/invoke/create_task - 批量任务创建 /sse/invoke/bulk_create_tasks 同时执行多个任务:
{
"plan_id": "plan-123",
"tasks_json": "[
{
\"title\": \"Task 1\",
\"description\": \"Description for task 1\",
\"priority\": \"high\",
\"status\": \"pending\",
\"notes\": \"# Task Notes\\n\\nThis task requires the following steps:\\n\\n1. Step one\\n2. Step two\\n3. Step three\"
},
{
\"title\": \"Task 2\",
\"description\": \"Description for task 2\",
\"priority\": \"medium\",
\"status\": \"pending\"
}
]"
}- 代理人打电话来
/sse/invoke/update_task随着工作的进展更新任务状态
样品代理提示
以下是一个示例提示,它将触发AI代理使用MCP任务管理系统:
I need to organize work for my new application called "inventory-manager".
Create a plan for this application with the following plan notes:
"# Inventory Manager Project
This project aims to create a comprehensive inventory management system with the following goals:
- Track inventory levels in real-time
- Generate reports on inventory movement
- Provide alerts for low stock items"
Add the following tasks:
1. Set up database schema
2. Implement REST API endpoints
3. Create user authentication system
4. Design frontend dashboard
5. Implement inventory tracking features
For the database schema task, add these notes:
"# Database Schema Notes
The schema should include the following tables:
- Products
- Categories
- Inventory Transactions
- Users
- Roles"
Prioritize the tasks appropriately and set the first two tasks as "in_progress".有了这个提示,可以访问Valkey MCP任务管理服务器的AI代理将:
- 使用application_id“库存管理器”和指定的Markdown格式注释创建新计划
- 将五项指定任务添加到计划中
- 将详细的Markdown格式注释添加到数据库模式任务中
- 为每项任务设定适当的优先级
- 将前两个任务的状态更新为“in_progress”
- 返回已创建计划和任务的摘要
开发者文档
有关如何设置开发环境、为项目做出贡献以及了解代码库结构的信息,请参阅 开发者指南.
有关贡献指南,包括提交消息格式和拉取请求过程,请参阅 贡献指南.
许可证
本项目根据BSD-3条款许可证获得许可。
