Skip to main content
Glama
sheacoding

MCP Reminder

by sheacoding

小智MCP闹钟和待办事项服务

为小智AI提供闹钟和待办事项管理功能的MCP服务。

版本说明

🎉 V2 主动通知版本已发布!

  • V2 (当前默认): 支持资源订阅和主动通知,后台自动检查到期提醒

  • V1 (稳定版): 仅被动响应,需要客户端主动调用工具

详细测试指南请查看: V2_TEST_GUIDE.md

Related MCP server: nudge

功能特性

  • 语音设定闹钟,到点提醒

  • 语音添加待办事项,设置提醒时间

  • 语音完成待办,自动更新状态

  • 支持自然语言时间解析(如"明天下午3点"、"30分钟后")

  • 数据持久化存储

  • V2新增: Resource订阅机制,支持主动推送通知

安装

1. 克隆或下载项目

cd mcp-reminder

2. 安装依赖

项目使用UV管理依赖:

uv sync

使用方法

快速启动(推荐)

项目已包含 mcp_pipe.py 和启动脚本,开箱即用。默认启动V2版本(支持主动通知)。

Linux/Mac:

chmod +x start.sh
./start.sh

Windows PowerShell (推荐):

.\start.ps1

如果提示无法运行脚本,先执行:

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned

Windows CMD:

start.bat

⚠️ Windows用户注意:

  • 推荐使用PowerShell运行 .\start.ps1

  • 不要在PowerShell中运行.bat文件(会出现编码问题)

  • 详细的Windows启动说明请查看: WINDOWS_SETUP.md

这将自动连接到配置好的小智MCP接入点并启动服务。

手动启动

如需自定义配置,可以手动设置环境变量:

Linux/Mac:

export MCP_ENDPOINT="wss://api.xiaozhi.me/mcp/?token=YOUR_TOKEN"
uv run python mcp_pipe.py run_server.py

Windows (PowerShell):

$env:MCP_ENDPOINT = "wss://api.xiaozhi.me/mcp/?token=YOUR_TOKEN"
uv run python mcp_pipe.py run_server.py

Windows (CMD):

set MCP_ENDPOINT=wss://api.xiaozhi.me/mcp/?token=YOUR_TOKEN
uv run python mcp_pipe.py run_server.py

使用配置文件(可选)

复制配置文件模板:

cp mcp_config.json.example mcp_config.json

编辑 mcp_config.json 自定义配置,然后运行:

export MCP_ENDPOINT="wss://api.xiaozhi.me/mcp/?token=YOUR_TOKEN"
uv run python mcp_pipe.py

本地测试(stdio模式)

用于本地测试MCP工具功能(不连接小智):

uv run python -m mcp_reminder.server

然后可以使用MCP Inspector或其他MCP客户端连接测试。

MCP工具说明

闹钟管理

add_alarm - 添加闹钟

设置一个闹钟。

参数:

  • time (必填): 闹钟时间,支持自然语言

    • 示例: "下午2点30分"、"明天上午10点"、"2025-09-02 14:30"

  • description (可选): 闹钟描述

示例:

语音:"小智,帮我设置一个下午2点30分的闹钟"
语音:"小智,明天上午9点提醒我开会"

get_pending_alarms - 查询到期闹钟

获取所有已到期且未关闭的闹钟(小智会定期自动调用)。

dismiss_alarm - 关闭闹钟

关闭指定的闹钟。

参数:

  • alarm_id (必填): 闹钟ID

待办事项管理

add_todo - 添加待办事项

创建一个新的待办事项。

参数:

  • title (必填): 待办事项标题

  • remind_time (可选): 提醒时间,支持自然语言

  • description (可选): 待办事项描述

示例:

语音:"小智,提醒我明天下午3点完成项目文档"
语音:"小智,添加待办:给客户发送报价单"

get_pending_todos - 查询到期待办

获取所有到期且未完成的待办事项(小智会定期自动调用)。

complete_todo - 完成待办

标记待办事项为已完成,支持通过标题模糊匹配。

参数:

  • title (必填): 待办事项标题或关键词

示例:

语音:"小智,我已经完成项目文档了"
语音:"小智,报价单发完了"

list_todos - 列出待办事项

查看所有待办事项。

参数:

  • status (可选): 筛选状态

    • "pending": 未完成(默认)

    • "completed": 已完成

    • "all": 全部

示例:

语音:"小智,我有哪些待办事项"
语音:"小智,列出所有已完成的任务"

综合查询

check_all_reminders - 检查所有提醒(新增)✨

一次性检查所有到期的闹钟和待办事项。

重要:提醒机制说明

  • MCP服务是被动响应的,不能主动推送提醒

  • 需要小智AI定期调用此工具来检查是否有到期项

  • 建议配置每1分钟自动调用一次

参数:

返回:

  • 所有到期的闹钟和待办列表

  • 提醒消息列表(可直接语音播报)

示例:

语音:"小智,检查一下有没有到期的提醒"
语音:"小智,看看有什么要提醒我的"

详细说明请查看: REMINDER_MECHANISM.md

数据存储

数据以JSON格式存储在 data/ 目录下:

  • data/alarms.json - 闹钟数据

  • data/todos.json - 待办事项数据

开发说明

项目结构

mcp-reminder/
├── src/mcp_reminder/
│   ├── __init__.py
│   ├── models.py      # 数据模型
│   ├── storage.py     # JSON持久化
│   └── server.py      # MCP服务入口
├── data/              # 数据存储目录
├── pyproject.toml     # UV项目配置
└── README.md

运行测试

添加测试数据:

# 在Python REPL中测试
uv run python
from mcp_reminder.storage import JSONStorage
from mcp_reminder.models import Alarm, Todo, parse_time

storage = JSONStorage()

# 添加闹钟
alarm = Alarm(time=parse_time("2分钟后"), description="测试闹钟")
storage.add_alarm(alarm)

# 添加待办
todo = Todo(title="测试待办", remind_time=parse_time("1分钟后"))
storage.add_todo(todo)

扩展功能

未来可以考虑添加:

  • 重复闹钟(每天/每周)

  • 待办事项分类和标签

  • 优先级设置

  • 数据导出/导入

许可

MIT License

Available Tools

8 tools
add_alarmB

添加闹钟

Args: time: 闹钟时间,支持自然语言如"下午2点30分"、"明天上午10点"或精确时间"2025-09-02 14:30" description: 闹钟描述(可选)

Returns: 包含闹钟ID和确认信息的字典

ParametersJSON Schema
NameRequiredDescriptionDefault
timeYes
descriptionNo

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions that the tool adds an alarm and returns a dictionary with ID and confirmation, but lacks critical details: whether this requires specific permissions, if alarms are persistent across sessions, what happens on duplicate alarms, rate limits, or error conditions. For a mutation tool with zero annotation coverage, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded, starting with the purpose, followed by clear sections for Args and Returns. Each sentence adds value: the purpose statement, parameter explanations, and return format. There's no redundant information, though the structure could be slightly more polished (e.g., using bullet points).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (2 parameters, no output schema, no annotations), the description is partially complete. It covers the basic purpose and parameters well but lacks behavioral context (e.g., permissions, persistence) and doesn't fully explain the return value beyond '字典' (dictionary). For a mutation tool, this leaves gaps that could hinder agent understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds substantial meaning beyond the input schema, which has 0% description coverage. It explains that 'time' supports natural language (e.g., '下午2点30分') or precise formats, and that 'description' is optional. This compensates well for the schema's lack of details, though it doesn't specify exact formats or validation rules for 'time'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose as '添加闹钟' (add alarm) in Chinese, which translates to a specific verb+resource combination. It distinguishes itself from siblings like 'dismiss_alarm' or 'get_pending_alarms' by focusing on creation rather than management or querying. However, it doesn't explicitly differentiate from 'add_todo' in terms of use case, which slightly limits clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose 'add_alarm' over 'add_todo' for time-based reminders, or how it relates to 'check_all_reminders' or 'get_pending_alarms'. There's no context about prerequisites, such as system availability or user permissions, leaving usage entirely implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_todoB

添加待办事项

Args: title: 待办事项标题 remind_time: 提醒时间(可选),支持自然语言如"明天下午3点" description: 待办事项描述(可选)

Returns: 包含待办ID和确认信息的字典

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
remind_timeNo
descriptionNo

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions that 'remind_time' supports natural language like '明天下午3点' (tomorrow at 3 PM), which adds some context about input flexibility. However, it doesn't describe what happens after creation (e.g., persistence, notifications, error handling), permissions needed, or rate limits, leaving significant gaps for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and well-structured with clear sections for Args and Returns. Each sentence adds value: the purpose statement is direct, and parameter explanations are efficient. However, the 'Returns' section could be more specific, and there's some redundancy in labeling (e.g., '待办事项' repeated).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, no output schema, and 3 parameters with 0% schema coverage, the description is moderately complete. It covers parameter semantics well but lacks behavioral details (e.g., what '添加' entails operationally) and doesn't fully explain the return value beyond a vague '字典' (dictionary). For a mutation tool, this leaves room for improvement in safety and outcome clarity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It adds meaningful semantics: it explains that 'title' is required and what it represents, clarifies that 'remind_time' is optional and supports natural language input, and notes that 'description' is optional. This goes beyond the basic schema, providing practical usage information for all parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb '添加' (add) and resource '待办事项' (todo item), making the purpose specific and understandable. However, it doesn't explicitly differentiate from sibling tools like 'add_alarm' or 'complete_todo', which would require more specific context about what makes a todo distinct from an alarm or other todo-related operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose 'add_todo' over 'add_alarm' or how it relates to other todo tools like 'list_todos' or 'complete_todo'. There's no information about prerequisites, context, or exclusions for usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_all_remindersB

一次性检查所有到期的提醒(闹钟和待办事项)

这是一个便捷工具,小智可以定期调用此接口来检查是否有需要提醒的内容

Returns: 包含所有到期闹钟和待办的汇总信息

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions that it returns '包含所有到期闹钟和待办的汇总信息' ('summary information of all expired alarms and todos'), which gives some insight into output behavior. However, it lacks details on critical aspects like whether this is a read-only operation, if it modifies data (e.g., marks reminders as checked), error handling, or rate limits. For a tool with no annotations, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured in three sentences: it states the purpose, provides usage context, and describes the return value. Each sentence adds value without redundancy. It's front-loaded with the core functionality. However, it could be slightly more efficient by combining ideas, but overall, it's appropriately sized with minimal waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the context: no annotations, no output schema, 0 parameters, and sibling tools like 'get_pending_alarms' and 'get_pending_todos,' the description is moderately complete. It covers the purpose, usage, and return value, but lacks details on behavioral traits (e.g., safety, side effects) and doesn't fully differentiate from siblings. For a tool with no structured data support, it should provide more behavioral context to be fully helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters, and the input schema has 100% description coverage (though empty). The description doesn't need to add parameter semantics since there are none. According to the rules, for 0 parameters, the baseline score is 4, as there's nothing to compensate for. The description correctly doesn't mention any parameters, which is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: '一次性检查所有到期的提醒(闹钟和待办事项)' which translates to 'Check all expired reminders (alarms and todos) at once.' It specifies the verb ('check') and resources ('reminders, alarms, todos'), making the purpose understandable. However, it doesn't explicitly differentiate from siblings like 'get_pending_alarms' or 'get_pending_todos,' which might offer similar functionality with different scopes or filters.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides some usage context: '这是一个便捷工具,小智可以定期调用此接口来检查是否有需要提醒的内容' meaning 'This is a convenient tool, Xiao Zhi can call this interface regularly to check if there is content that needs reminding.' This implies when to use it (regularly for checking) and suggests it's for automated or periodic checks. However, it doesn't explicitly state when not to use it or name alternatives among siblings, leaving some ambiguity compared to tools like 'get_pending_alarms'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

complete_todoC

完成待办事项

通过标题关键词匹配待办事项并标记为已完成

Args: title: 待办事项标题或关键词

Returns: 操作结果

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It mentions marking as completed, which implies a mutation, but lacks details on permissions, error handling, or what happens if multiple todos match. This is a significant gap for a mutation tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is brief and front-loaded with the main action, followed by parameter and return notes. It avoids unnecessary fluff, though the structure could be slightly improved by integrating the Args and Returns more seamlessly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, 0% schema coverage, and no output schema, the description is incomplete. It covers the basic purpose and parameter hint but lacks behavioral details, error cases, and output specifics, which are crucial for a mutation tool with siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It adds that 'title' is for matching by title or keywords, providing some meaning beyond the schema. However, it doesn't explain format, case sensitivity, or partial matching rules, leaving gaps for the single parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool '完成待办事项' (complete todo) and mentions matching by title keywords and marking as completed, which clarifies the verb and resource. However, it doesn't distinguish from siblings like 'list_todos' or 'add_todo', making it somewhat vague in differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives is provided. The description implies usage for completing todos via title matching, but it doesn't specify prerequisites, exclusions, or compare to siblings like 'dismiss_alarm' or 'check_all_reminders'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dismiss_alarmC

关闭/删除闹钟

Args: alarm_id: 闹钟ID

Returns: 操作结果

ParametersJSON Schema
NameRequiredDescriptionDefault
alarm_idYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. '关闭/删除' suggests a destructive operation, but it doesn't clarify whether this permanently deletes the alarm or just dismisses it temporarily, whether the action is reversible, what permissions are required, or what happens on failure. The description mentions a return value ('操作结果' meaning operation result) but gives no details about format or possible outcomes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is brief with three lines, but the structure is inconsistent. The first line states the purpose clearly, but the Args/Returns sections use English labels with Chinese content, creating minor cognitive friction. While not verbose, the formatting could be more polished for better readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive operation tool with no annotations, no output schema, and 0% schema coverage, the description is incomplete. It doesn't address critical behavioral aspects like side effects, error conditions, or return format. Given the sibling tools include alarm management functions, more context about how this fits into the workflow would be valuable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the schema provides no parameter documentation. The description adds minimal value by stating 'alarm_id: 闹钟ID' (alarm ID), which just repeats the parameter name in Chinese. It doesn't explain where to obtain this ID, what format it follows, or provide examples. For a single required parameter with zero schema coverage, this is insufficient compensation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('关闭/删除' meaning close/delete) and identifies the resource ('闹钟' meaning alarm). It distinguishes this as a dismissal/deletion operation rather than creation or listing. However, it doesn't explicitly differentiate from potential sibling operations like snoozing or modifying alarms.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'get_pending_alarms' and 'add_alarm', there's no indication whether this should be used after checking alarms, whether it's for completed alarms only, or what prerequisites exist. The agent must infer usage from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_pending_alarmsB

获取所有到期的闹钟

小智会定期调用此接口检查是否有需要提醒的闹钟

Returns: 包含到期闹钟列表的字典

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions the tool is called periodically and returns a dictionary of expired alarms, but lacks critical details: whether this is read-only or has side effects, permission requirements, rate limits, error handling, or what '到期' (expired) precisely means. The description adds minimal behavioral context beyond the basic purpose.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with three sentences: purpose, usage context, and return value. Each sentence adds value without redundancy. However, the structure could be more front-loaded by merging the first two sentences for better clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description is incomplete. It mentions returning a '字典' (dictionary) but doesn't describe the structure, keys, or data types of the alarm list. For a tool with siblings and potential complexity in alarm management, more detail on behavior, output format, and differentiation from other tools is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters, and schema description coverage is 100% (though empty). The description doesn't need to explain parameters, so it meets baseline expectations. No additional parameter information is required or provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: '获取所有到期的闹钟' (Get all expired alarms). It specifies the verb ('获取' - get) and resource ('到期的闹钟' - expired alarms). However, it doesn't explicitly distinguish this from sibling tools like 'check_all_reminders' or 'get_pending_todos', which reduces clarity about its unique role.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides some usage context: '小智会定期调用此接口检查是否有需要提醒的闹钟' (Xiaozhi will periodically call this interface to check if there are alarms that need reminding). This implies it's for periodic checking, but it doesn't specify when to use this versus alternatives like 'check_all_reminders' or 'dismiss_alarm', nor does it mention prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_pending_todosC

获取所有到期且未完成的待办事项

小智会定期调用此接口检查是否有需要提醒的待办

Returns: 包含到期待办列表的字典

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions that '小智会定期调用此接口' (Xiaozhi will periodically call this interface), which hints at a monitoring/checking pattern, but doesn't disclose important behavioral traits like whether this is a read-only operation, what permissions are needed, whether it's safe to call frequently, or how results are structured beyond '包含到期待办列表的字典' (dictionary containing overdue todo list). For a tool with zero annotation coverage, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is reasonably concise with three sentences, but has structural issues. The first sentence states the purpose clearly. The second sentence about Xiaozhi's usage pattern adds context but could be more integrated. The 'Returns:' section is redundant since there's no output schema, and '字典' (dictionary) is vague. Some sentences don't fully earn their place in a tool description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no annotations, no output schema, and operates in a context with multiple sibling todo/alarm tools, the description is incomplete. It doesn't explain the return format beyond '字典' (dictionary), doesn't specify what '到期' (overdue) means temporally, doesn't clarify the relationship to other todo tools, and provides minimal behavioral context. For a tool in this ecosystem, more completeness is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters with 100% schema description coverage. The description doesn't need to explain any parameters, and it correctly doesn't attempt to do so. The baseline for zero parameters with complete schema coverage is 4, as there's nothing to compensate for and no parameter information is missing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: '获取所有到期且未完成的待办事项' (Get all overdue and incomplete todos). It specifies the verb ('获取' - get) and resource ('待办事项' - todos) with filtering criteria ('到期且未完成' - overdue and incomplete). However, it doesn't explicitly distinguish this from sibling tools like 'list_todos' or 'check_all_reminders', which keeps it from a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides minimal usage guidance. The second sentence '小智会定期调用此接口检查是否有需要提醒的待办' (Xiaozhi will periodically call this interface to check if there are todos that need reminding) suggests a periodic monitoring use case, but doesn't specify when to use this tool versus alternatives like 'list_todos' or 'check_all_reminders'. No explicit when-not-to-use or alternative tool recommendations are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_todosB

列出待办事项

Args: status: 筛选状态,可选值: "pending"(未完成)、"completed"(已完成)、"all"(全部),默认"pending"

Returns: 待办事项列表

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNopending

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. While it mentions the tool returns a '待办事项列表' (todo list), it doesn't describe format, pagination, sorting, or any limitations. For a list operation with zero annotation coverage, this leaves significant behavioral questions unanswered about what the agent can expect.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and well-structured with clear sections (Args, Returns). The Chinese text is concise and each sentence serves a purpose. However, the English translations in parentheses create some redundancy, and the structure could be more front-loaded with the core purpose emphasized earlier.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (single parameter filtering), no annotations, and no output schema, the description is minimally adequate. It covers the basic purpose and parameter semantics well, but lacks behavioral context about the returned list format and doesn't provide usage guidance relative to sibling tools. For a list operation, more detail about what '待办事项列表' contains would be helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds substantial value beyond the input schema, which has 0% description coverage. It fully documents the single parameter 'status', including its purpose ('筛选状态' - filter status), optional values with translations ('pending'(未完成), 'completed'(已完成), 'all'(全部)), and default value ('默认"pending"'). This completely compensates for the schema's lack of documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose as '列出待办事项' (list todos), which is a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'get_pending_todos' or 'check_all_reminders', which appear to have overlapping functionality. The purpose is clear but lacks sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'get_pending_todos' and 'check_all_reminders' available, there's no indication of when this filtered list approach is preferable or what distinguishes it from other listing tools. Only basic parameter information is provided without usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 8 tool updatesv0.1.0
    • First observedadd_alarm
    • First observedadd_todo
    • First observedcheck_all_reminders
    • First observedcomplete_todo
    • First observeddismiss_alarm
    • First observedget_pending_alarms
    • First observedget_pending_todos
    • First observedlist_todos

TDQS

B3.2/5.0

Scored across 8 tools

Disambiguation4/5

Most tools have distinct purposes, but there is some overlap between 'check_all_reminders' and the individual 'get_pending_alarms' and 'get_pending_todos' tools, which could cause confusion about when to use each. However, descriptions clarify that 'check_all_reminders' is a convenience tool for periodic checks, while the others are more specific.

Naming Consistency4/5

Tool names follow a consistent verb_noun pattern (e.g., 'add_alarm', 'complete_todo'), with only minor deviations like 'check_all_reminders' using a plural noun and 'list_todos' being slightly less descriptive. Overall, the naming is predictable and readable.

Tool Count5/5

With 8 tools, the count is well-scoped for a reminder management server, covering core operations like adding, completing, listing, and dismissing reminders without being overwhelming. Each tool serves a clear purpose in the domain.

Completeness4/5

The tool set provides good coverage for reminder management, including add, complete, list, and dismiss operations for both alarms and todos. A minor gap is the lack of a tool to update existing reminders (e.g., modify alarm time or todo details), but agents can work around this by dismissing and re-adding.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    An MCP server that allows AI assistants to manage todo lists stored in a simple markdown file, supporting creation, reading, updating, and deletion of todo items with persistent IDs.
    5
    9 npm
    6
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    An MCP server that connects AI assistants like Claude to your todo app, enabling natural, friendly reminders and task management without a server to run.
    8
    6 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for managing structured reminders for AI agents, with persistent storage, full-text search, and cross-session support.
    6 npm
    1
    MIT