mcpField
O
Obsidian Tasks MCP Server

Obsidian Tasks MCP Server

本地服务
github.com/jfim记忆与知识1533 周前更新

关于 Obsidian Tasks MCP Server

Obsidian Tasks MCP Server 从 Obsidian Markdown 文件提取并查询任务,供 Claude 等 MCP 客户端辅助任务管理。它兼容 Obsidian Tasks 与 Dataview 元数据格式,并支持多种筛选条件。

主要功能

  1. 01递归提取 Markdown 任务
  2. 02识别已完成与未完成状态
  3. 03读取日期、标签和优先级等元数据
  4. 04按任务查询语法筛选

适用场景

  1. 01汇总 Vault 中的所有任务
  2. 02查找截止日期前尚未完成的任务
  3. 03按标签或文件路径筛选任务

MCP 相关

它通过 MCP 提供 list_all_tasks 和 query_tasks 工具,让客户端读取任务并按条件检索。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"obsidian-tasks": {
"command": "npx",
"args": [
"-y",
"@jfim/obsidian-tasks-mcp"
]
}
}
}
启动命令npx -y @jfim/obsidian-tasks-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@jfim/obsidian-tasks-mcp

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Obsidian Tasks MCP 服务

npm version

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

功能

  • 从 Obsidian Markdown 文件中提取任务,格式与 Obsidian Tasks 插件兼容
  • 识别已完成和待处理的任务
  • 访问任务元数据,包括:
    • 状态(已完成/未完成)
    • 截止日期
    • 计划日期
    • 开始日期
    • 创建日期
    • 标签
    • 优先级
    • 重复规则

工具

此 MCP 服务提供以下工具:

list_all_tasks

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

输入参数:

  • path(字符串,可选):要扫描 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
}
query_tasks

根据 Obsidian Tasks 查询语法搜索任务。应用多个筛选条件,查找匹配的任务。

输入参数:

  • path(字符串,可选):要扫描 Markdown 文件的目录。如果未指定,默认为第一个允许的目录。
  • query(字符串,必需):使用 Obsidian Tasks 查询语法的查询字符串。每一行都视为一个筛选条件。

返回: 与查询匹配的任务对象 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 - 描述中包含 “string” 的任务
    • description does not include string - 描述中不包含 “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

有关测试套件的详细信息,请参阅 TESTING.md。

与 Claude 配合使用

将此配置添加到支持 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 镜像:

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 Desktop 配置:

{
  "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"
      ]
    }
  }
}

任务格式

此服务同时支持 Obsidian Tasks 表情符号格式和 Dataview 格式的任务元数据。

  • 任务语法:- [ ] 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 许可证

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。