Skip to main content
Glama
by hsgui
requirements.md6.78 kB
# 每日工作记录 MCP 服务需求文档 ## 背景与目标 - 为个人或小团队提供一个轻量级 MCP(Model Context Protocol)服务,用于追踪并回顾每日工作内容。 - 通过 MCP 与 AI 工具联动,便于查询最近的工作记录。 - 所有数据保存在本地数据库中,保障隐私与离线可用性。 ## 功能需求 1. **新增工作内容** - 接收详细描述、可选标签,无需填写日期或标题。 - 标签建议使用 `领域/项目` 形式(如 `infra/login`、`ops/report`),并可在后续查询中复用;常用标签需记录在 README 供参考。 - MCP Server 自动生成 `createdAt` 时间戳并写入数据库,同时生成唯一 ID。 2. **获取工作内容列表** - 支持按日期范围查询: - `daily`:指定日期的全部工作。 - `weekly`:指定周(以周一为起点的自然周)内的全部工作。 - 支持按标签进行筛选(可选)。 - 未提供 `date` 参数时:`daily` 默认查询当天,`weekly` 默认查询当前周(周一至周日)。 - 常见查询示例:`/entries?range=daily&tags=infra`(今日基础设施工作)、`/entries?range=weekly&date=2025-12-01`(2025-12-01 所在周)。 - 返回结果按时间倒序排列。 3. **本地数据库存储** - 使用嵌入式数据库(推荐 SQLite)保存所有工作记录。 - 仅保留单一 `createdAt` 时间戳字段,记录插入时刻,不再维护 `updatedAt`。 - 数据写入后视为只读,不提供更新与删除能力。 - 需要定义数据迁移或初始化脚本,确保首次运行即可创建数据表。 4. **标签管理** - 维护一份常用标签白名单列表,并提供 `GET /tags` 接口以便客户端渲染自动补全。 - 提供 `POST /tags` 接口,用于新增合法标签(包含唯一名称、可选描述与推荐使用场景),并写入白名单。 - 支持在 README 中记录标签约定,接口返回需包含标签描述与示例用途。 5. **数据导出与搜索** - 提供 `GET /entries/export`(返回 CSV/JSON)以便备份或迁移,必要时可指定日期范围。 - 支持基于关键字的全文搜索(例如 `GET /entries/search?q=bug`),用于快速定位历史记录。 6. **提醒与摘要回顾** - MCP Server 需暴露“今日是否已记录”工具,供客户端触发提醒。 - 提供“最近 N 天摘要”接口,自动以标签聚合形式输出,便于周报撰写。 ## API 设计(初步) | 功能 | 方法 | 路径 | 请求示例 | 响应示例 | | --- | --- | --- | --- | --- | | 新增工作内容 | `POST` | `/entries` | `{ "description": "排查...", "tags": ["infra"] }` | `{ "id": "uuid", "createdAt": "服务器时间", "summary": "2025-11-26 · infra/login" }` | | 获取工作内容 | `GET` | `/entries?range=weekly` | `range`:`daily` 或 `weekly`,`date` 为 ISO 日期(可选,缺省按当前日/周;`weekly` 以周一为起点) | `[ { "description": "...", "createdAt": "...", "summary": "2025-11-26 · infra/login" } ]` | | 新增标签 | `POST` | `/tags` | `{ "name": "ops/report", "description": "运维回顾" }` | `{ "name": "ops/report", "createdAt": "服务器时间" }` | > **说明**:实际落地时可根据所选框架的 MCP 适配方式,将以上 REST 语义映射为 MCP 工具调用或流式响应。 ## 客户端体验要求 - 列表视图需显示 `summary`、`createdAt`(本地化格式)与标签徽章,并支持按标签快速筛选。 - 详情视图展示完整描述及原始 JSON,提供“复制到剪贴板”“导出单条”操作。 - 在 MCP 客户端中预留“导出全部记录”入口,调用 `GET /entries/export`。 - 若当天尚未创建记录,客户端需以提示条或通知方式提醒用户补录。 ## 数据模型 ``` WorkEntry { id: string (UUID) description: string tags?: string[] createdAt: string (ISO 8601, 由服务器自动填充) } Tag { name: string (唯一标识,建议使用 `领域/项目`) description?: string createdAt: string (ISO 8601, 由服务器自动填充) } ``` > 返回接口需额外提供 `summary`(由服务端根据日期 + 标签拼接生成),以提升阅读体验;该字段可为派生值,无需入库;`Tag` 实体用于驱动自动补全与标签规范化管理。 ## 非功能需求 - **可靠性**:写入操作需要返回明确的成功或失败状态。 - **可维护性**:需要提供数据库迁移/初始化脚本以及 README 说明。 - **可扩展性**:未来可扩展更多查询维度(如按标签统计)。 - **数据可移植性**:提供导出/备份指引(如 CSV 导出或 SQLite 文件备份),便于迁移至新设备。 - **可观测性**:记录关键 API/MCP 调用日志,便于快速排查失败原因。 - **容量假设**:面向单人使用,单进程 SQLite + MCP Server 即可满足性能需求。 ## MCP 框架方案 ### 首选方案:FastAPI + FastMCP(Python) - **优点**:Python 生态丰富,FastAPI 本身对异步友好,FastMCP 官方模版完善。 - **适用场景**:需要快速原型、依赖 Python 数据处理库时。 - **说明**:本项目已确定采用该方案,以下运行环境规划默认基于此。 ### 备选方案(当前不采纳) 1. **Node.js(TypeScript)+ 官方 `@modelcontextprotocol/server` SDK** - **优点**:TypeScript 类型约束强、与前端生态一致,官方 SDK 提供指令生成工具。 - **适用场景**:已有 Node/TS 技术栈,期望与现有前端/服务整合。 2. **Go + `mcp-go`(或 gRPC/MCP 兼容库)** - **优点**:单文件可执行、部署简单、性能高。 - **适用场景**:对性能、资源占用有要求,或希望零依赖部署。 ## 技术选型与运行环境 - **框架栈**:FastAPI 负责 HTTP/MCP 适配层,FastMCP 提供协议封装,搭配 Pydantic 进行数据校验。 - **数据库**:继续使用本地 SQLite,配套 Alembic 或自定义脚本完成表结构初始化。 - **运行环境管理**:统一使用 Conda,确保依赖隔离、可重复。 ### Conda 环境创建示例 1. `conda create -n daily-work-mcp python=3.11 -y` 2. `conda activate daily-work-mcp` 3. `pip install fastapi fastmcp uvicorn[standard] sqlite-utils` 4. (可选)`pip freeze > requirements.txt`,便于后续部署复现。 > 若需在不同机器部署,仅需安装 Conda 并按照上述步骤创建环境即可。 ## 验收标准 - 可以通过 MCP 客户端成功调用“新增工作内容”工具并写入本地数据库。 - 可以通过 MCP 客户端查询指定日期或周的工作内容并获得正确结果。 - 数据库初始化脚本与 README 说明清晰,克隆仓库后可直接运行。

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/hsgui/daily-work-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server