任务管理协议服务器

一个用于从Markdown文件中提取和查询Obsidian任务的模型上下文协议(MCP)服务器,支持通过MCP协议与Claude配合实现AI辅助的任务管理。

  • by jfim
  • TypeScript
  • 本地部署
  • 15 星标
  • 更新于
在 GitHub 查看 jfim/obsidian-tasks-mcp

使用说明

黑曜石任务MCP服务器

用于从markdown文件中提取和查询黑曜石任务的模型上下文协议(MCP)服务器。旨在通过MCP协议与Claude合作,实现人工智能辅助任务管理。

特性

  • 使用与黑曜石任务插件兼容的格式从黑曜岩标记文件中提取任务
  • 确定已完成和待完成的任务
  • 访问任务元数据,包括:
    • 状态(完成/未完成)
    • 截止日期
    • 计划日期
    • 开始日期
    • 创建日期
    • 标签
    • 优先级
    • 重复规则

工具

此MCP服务器提供以下工具:

list_all_任务

从目录中的markdown文件中提取所有任务,递归扫描子文件夹。

输入参数:

  • path (string,可选):扫描markdown文件的目录。如果未指定,则默认为第一个允许的目录。

退货: 任务对象的JSON数组,每个对象包含:

{
  "id": "string",          // Unique identifier (filepath:linenumber)
  "description": "string", // Full text description of the task
  "status": "complete" | "incomplete", // Task completion status
  "filePath": "string",    // Path to the file containing the task
  "lineNumber": "number",  // Line number in the file
  "tags": ["string"],      // Array of tags found in the task
  "dueDate": "string",     // Optional - YYYY-MM-DD format 
  "scheduledDate": "string", // Optional - YYYY-MM-DD format
  "startDate": "string",   // Optional - YYYY-MM-DD format
  "createdDate": "string", // Optional - YYYY-MM-DD format
  "priority": "string",    // Optional - "high", "medium", or "low"
  "recurrence": "string"   // Optional - recurrence rule
}

查询任务

根据黑曜石任务查询语法搜索任务。应用多个筛选器来查找匹配的任务。

输入参数:

  • path (string,可选):扫描markdown文件的目录。如果未指定,则默认为第一个允许的目录。
  • query (string,必填):使用黑曜石任务查询语法的查询字符串。每条线都被视为一个过滤器。

退货: 与查询匹配的任务对象的JSON数组,其结构与 list_all_tasks.

支持的查询语法:

  • 状态筛选器:

    • done -显示已完成的任务
    • not done -显示未完成的任务
  • 日期筛选器(到期):

    • 语义说明: due today 完全匹配(只有今天到期的任务)。使用范围运算符包含较早/较晚的日期。
    • due today -今天到期的任务
    • due before today -今天之前到期的任务(不包括)
    • due after today -今天之后到期的任务(不包括)
    • due on or before today -今天或更早(含)到期的任务
    • due on or after today -今天或以后(含)到期的任务
    • due on YYYY-MM-DD 或 due YYYY-MM-DD -在特定日期到期的任务
    • due before YYYY-MM-DD -日期前到期的任务(不包括)
    • due after YYYY-MM-DD -日期后到期的任务(不包括)
    • due on or before YYYY-MM-DD -在某个日期(包括首尾两天)之前到期的任务
    • due on or after YYYY-MM-DD -日期(含)当天/之后到期的任务
    • no due date -没有截止日期的任务
    • has due date -有截止日期的任务
  • 开始日期筛选器:

    • 语义说明: starts today 完全匹配(仅今天开始的任务)。使用范围运算符包含较早/较晚的日期。
    • starts today -今天开始的任务
    • starts on YYYY-MM-DD 或 starts YYYY-MM-DD -从特定日期开始
    • starts before YYYY-MM-DD -日期之前开始(不包括)
    • starts after YYYY-MM-DD -日期后开始(不包括)
    • starts on or before YYYY-MM-DD -开始日期/之前(含)
    • starts on or after YYYY-MM-DD -开始日期(含)
    • no start date -没有开始日期的任务
    • has start date -有开始日期的任务
  • 标签过滤器:

    • no tags -没有标签的任务
    • has tags -至少有一个标签的任务
    • tag includes #tag -带有包含“tag”标签的任务
    • tag does not include #tag -没有包含“tag”的标签的任务
  • 路径筛选器:

    • path includes string -路径包含“string”的文件中的任务
    • path does not include string -路径不包含“string”的文件中的任务
  • 描述过滤器:

    • description includes string -描述包含“字符串”的任务
    • description does not include string -描述不包含“字符串”的任务
  • 优先级筛选器:

    • priority is highest -具有最高优先级的任务
    • priority is high -具有高优先级的任务
    • priority is medium -中等优先级的任务
    • priority is low -低优先级任务
    • priority is lowest -优先级最低的任务
    • priority is none -没有优先级的任务

示例查询:

not done
due before 2025-05-01
tag include #work

这将返回所有在2025年5月1日之前到期的、带有#work标签的未完成任务。

包含OR示例(单行):

due on or before today OR starts on or before today

用法

安装

来自npm(推荐):

# Install globally
npm install -g @jfim/obsidian-tasks-mcp

# Or use directly with npx without installing
npx @jfim/obsidian-tasks-mcp /path/to/obsidian/vault

来源:

git clone https://github.com/jfim/obsidian-tasks-mcp.git
cd obsidian-tasks-mcp
npm install
npm run build

运行服务器

使用npm包(推荐):

# If installed globally
obsidian-tasks-mcp /path/to/obsidian/vault

# Or with npx (no installation required)
npx @jfim/obsidian-tasks-mcp /path/to/obsidian/vault

来源:

node dist/index.js /path/to/obsidian/vault

测试

要运行测试套件,请执行以下操作:

npm test

看 测试.md 有关测试套件的详细信息。

与克劳德一起使用

将此配置添加到支持MCP的Claude客户端:

{
  "mcpServers": {
    "obsidian-tasks": {
      "command": "npx",
      "args": [
        "@jfim/obsidian-tasks-mcp",
        "/path/to/obsidian/vault"
      ]
    }
  }
}

如果从源代码安装:

{
  "mcpServers": {
    "obsidian-tasks": {
      "command": "node",
      "args": [
        "/path/to/obsidian-tasks-mcp/dist/src/index.js",
        "/path/to/obsidian/vault"
      ]
    }
  }
}

码头工人

构建Docker镜像:

docker build -t @jfim/obsidian-tasks-mcp .

使用Docker运行:

docker run -i --rm --mount type=bind,src=/path/to/obsidian/vault,dst=/projects/vault @jfim/obsidian-tasks-mcp /projects

Claude桌面配置:

{
  "mcpServers": {
    "obsidian-tasks": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "--mount", "type=bind,src=/path/to/obsidian/vault,dst=/projects/vault",
        "@jfim/obsidian-tasks-mcp",
        "/projects"
      ]
    }
  }
}

任务格式

服务器同时支持这两种功能 黑名单任务表情符号格式 和 数据视图格式 用于任务元数据。

  • 任务语法: - [ ] Task description
  • 已完成任务: - [x] Task description
  • 到期日:
    • 🗓️ YYYY-MM-DD
    • 📅 YYYY-MM-DD
  • 计划日期: ⏳ YYYY-MM-DD
  • 开始日期: 🛫 YYYY-MM-DD
  • 创建日期: ➕ YYYY-MM-DD
  • 优先: ⏫ (高), 🔼 (中等), 🔽 (低)
  • 复发: 🔁 every day/week/month/etc.
  • 标签: #tag1 #tag2

示例任务: - [ ] Complete project report 🗓️ 2025-05-01 ⏳ 2025-04-25 #work #report ⏫

许可证

MIT许可证