使用说明

项目简介

本项目是一个基于 Model Context Protocol (MCP) 构建的服务器,它作为滴答清单 (TickTick) API 的桥梁,允许支持 MCP 协议的客户端(如AI助手)通过标准化的方式与您的滴答清单账户进行交互,实现任务和项目的管理。

主要功能点

  • 用户认证:通过 OAuth 2.0 协议安全认证滴答清单账户。
  • 项目管理
    • 获取所有项目列表。
    • 创建新的项目。
  • 任务管理
    • 获取指定项目或所有任务列表。
    • 创建新的任务,可设置标题、内容、截止日期、优先级等详细信息。
    • 更新现有任务的各项属性。
    • 完成和删除任务。
  • 本地时间工具: 提供获取服务器本地时间的工具。

安装步骤

  1. 克隆仓库
    git clone https://github.com/iamjzx/dida.git
    cd dida
  2. 安装依赖 确保您已安装 Node.js (v14 或更高版本) 和 npm。在项目根目录下运行:
    npm install

服务器配置

为了使 MCP 客户端能够连接到此服务器,您需要提供以下配置信息。这是一个 JSON 格式的配置示例,您需要将其填入 MCP 客户端的服务器配置中。

{
  "serverName": "ticktick",
  "command": "node",
  "args": [
    "src/tick.js",
    "<YOUR_CLIENT_ID>",
    "<YOUR_CLIENT_SECRET>"
  ],
  "transport": "stdio"
}

配置参数说明:

  • 'serverName': 服务器名称,这里设置为 'ticktick',用于在客户端标识该服务器。
  • 'command': 启动服务器的命令,这里使用 'node' 来运行 JavaScript 代码。
  • 'args': 传递给启动命令的参数列表。
    • '"src/tick.js"': 指定服务器入口文件。
    • '"<YOUR_CLIENT_ID>"': 替换为您的滴答清单应用的 Client ID。您需要在滴答清单开放平台 (Open API) 创建应用并获取 Client ID。
    • '"<YOUR_CLIENT_SECRET>"': 替换为您的滴答清单应用的 Client Secret。同样需要在滴答清单开放平台获取。
  • 'transport': 指定 MCP 服务器使用的传输协议,这里使用 'stdio' (标准输入输出),表示通过命令行管道进行通信。

获取 Client ID 和 Client Secret:

  1. 访问 滴答清单开放平台 并登录您的滴答清单账户。
  2. 创建一个新的应用。
  3. 在应用详情中,您将找到 'Client ID' 和 'Client Secret'。请将它们替换到上述 'args' 配置中。

基本使用方法

  1. 启动服务器 在项目根目录下,打开终端并运行以下命令启动 MCP 服务器 (请将 '<YOUR_CLIENT_ID>' 和 '<YOUR_CLIENT_SECRET>' 替换为实际值):

    npm start -- <YOUR_CLIENT_ID> <YOUR_CLIENT_SECRET>

    或者,您也可以直接使用 'node src/tick.js <YOUR_CLIENT_ID> <YOUR_CLIENT_SECRET>' 命令。

  2. 客户端连接 配置您的 MCP 客户端,使用上面提供的服务器配置 JSON 连接到该服务器。

  3. OAuth 授权 首次使用时,客户端调用 'dida365_authorize' 工具时,服务器会自动打开浏览器进行滴答清单 OAuth 授权。按照页面提示完成授权后,服务器将保存 Access Token。后续工具调用将自动使用该 Token。

  4. 调用工具 客户端可以使用以下工具与滴答清单进行交互 (工具名请参考 'README.md' 和 'src/tick.js' 文件中的 'server.tool()' 定义):

    • 'dida365_getProjects': 获取所有项目。
    • 'dida365_createTask': 创建新任务。
    • 'dida365_updateTask': 更新任务。
    • 'dida365_deleteTask': 删除任务。
    • 'dida365_getTasks': 获取任务列表。
    • 'dida365_createProject': 创建项目。
    • 'dida365_updateProject': 更新项目。
    • ... 等等。

    每个工具的具体参数请参考 'README.md' 中 "MCP Tools" 部分的描述或 'src/tick.js' 中的工具定义。

示例:客户端调用 'dida365_getProjects' 工具

客户端发送 MCP 请求调用 'dida365_getProjects' 工具,服务器将返回滴答清单中的项目列表数据。客户端可以解析返回的数据并展示给用户或进行后续处理。

{
  "jsonrpc": "2.0",
  "method": "call",
  "params": {
    "tool": "dida365_getProjects",
    "arguments": {}
  },
  "id": "1"
}

注意:

  • 请务必妥善保管您的 'Client ID' 和 'Client Secret',避免泄露。
  • 出于安全考虑,生产环境建议使用更安全的 Token 存储方案和 HTTPS 协议。

信息

分类

生产力应用