项目简介

这是一个功能丰富的待办事项应用 Agenda 的后端服务,同时也实现了 Model Context Protocol (MCP) 的一部分功能。它通过 MCP 标准暴露了一些核心的待办事项管理能力,允许兼容 MCP 的 LLM 客户端直接与用户的待办事项数据进行交互,如创建任务或标记任务完成。

主要功能点

  • 添加待办事项: 允许 LLM 客户端创建新的待办事项,可指定标题、截止日期和优先级。
  • 完成待办事项: 允许 LLM 客户端将现有的待办事项标记为已完成。
  • 添加评论: 允许 LLM 客户端为待办事项添加评论。
  • 数据持久化: 管理用户、待办事项、工作区等数据,并将其存储在 PostgreSQL 数据库中。
  • 用户认证: 集成用户认证机制,确保只有授权用户才能访问和修改其数据。

安装步骤

该 MCP 服务是 Agenda 应用后端的一部分,需要部署整个应用。

  1. 克隆仓库: 获取 Agenda 应用的源代码。
  2. 安装依赖: 使用 Node.js 或 Bun 安装项目所需的依赖库。
  3. 设置环境变量: 复制 '.env.example' 文件为 '.env',并填入数据库连接字符串、认证密钥、第三方服务(如 Google OAuth, Stripe, Resend, PostHog)的凭据。请确保 'DATABASE_URL' 和 'BETTER_AUTH_SECRET' 等关键变量已设置。
  4. 初始化数据库: 运行数据库迁移脚本以创建必要的表结构。
  5. 运行服务: 启动 Next.js 应用,这会同时启动包括 MCP 接口在内的后端服务。通常使用 'bun dev' 或 'npm run dev' 启动开发服务器,或进行生产构建后启动。

服务器配置 (供 MCP 客户端使用)

该 MCP 服务通过 Next.js API 路由 '/api/[transport]' 暴露功能。MCP 客户端需要连接到已部署的 Agenda 应用的此端点。

请注意,MCP 客户端通常不会直接“运行”这个服务器代码。它们会通过网络连接到已经运行的服务。

MCP 客户端连接此服务时,可能需要以下配置信息:

  • 服务名称 (server name): 'agenda' (或其他自定义名称)
  • 连接协议 (transport): 通常使用 HTTP POST 请求。客户端需要知道完整的 API 端点 URL,例如部署后域名下的 '/api/http' 或 '/api/stdio'(具体取决于 MCP Adapter 的配置和支持)。
  • 认证 (authentication): 服务要求用户认证。客户端需要通过 MCP 协议传递有效的认证信息(通常在请求头中,如 'Authorization: Bearer <token>')。认证令牌需通过 Agenda 应用自身的认证流程获取。
  • 启动命令 (command) 和参数 (args): 对于连接到 HTTP 端点的 MCP 客户端,通常不需要指定启动命令和参数,因为服务是预先运行的。这些字段可能留空或用于其他目的,具体取决于客户端的实现。

例如,一个 JSON 格式的客户端配置片段可能看起来像这样(这是一个示例,具体字段名和结构取决于客户端应用):

{
  "server_name": "agenda",
  "protocol": "http",
  "endpoint_url": "https://your-agenda-app-domain.com/api/http", // 请替换为实际部署的URL
  "auth_method": "bearer",
  "auth_token": "USER_SESSION_TOKEN" // 需要从Agenda应用获取的用户会话令牌
  // "command": "", // 连接HTTP服务时通常留空
  // "args": []
}

基本使用方法

MCP 客户端连接并认证成功后,可以通过 JSON-RPC 请求调用服务器暴露的工具:

  • 添加待办事项 (add_todo): 向服务器发送 JSON-RPC 请求,方法名为 'add_todo',参数包含待办事项的 'name' (string), 'date' (string), 'time' (string), 'urgency' (number 1-5)。
  • 完成待办事项 (complete_todo): 方法名为 'complete_todo',参数包含待办事项的 'todoId' (string)。
  • 添加评论 (add_comment): 方法名为 'add_comment',参数包含 'todoId' (string) 和 'text' (string)。

LLM 客户端会根据用户的指令,识别需要调用的工具,并构造相应的 JSON-RPC 请求发送给该 MCP 服务端点。

信息

分类

生产力应用