nudge

nudge

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.

Category
访问服务器

README

nudge

npm version License: MIT MCP

Your AI assistant, acting like a friend who actually remembers what you said you'd do.

nudge is an open-source Model Context Protocol (MCP) server that connects Claude — or any MCP-compatible AI — to your todo app. Instead of a cold productivity dashboard, you get a friend checking in naturally.

"hey, you've had 'call the accountant' on your list for 4 days 👀"
"nothing due today, you're all clear"
"added 'dentist appointment' for Friday"

No server to run. No first-person AI narration. Just a nudge.


Install

Quickest — setup wizard

npx nudge-mcp-init

Walks you through picking your todo app, entering credentials, and wiring up Claude Desktop automatically. Done in under a minute.

Manual — Claude Desktop (no server needed)

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "nudge": {
      "command": "npx",
      "args": ["nudge-mcp"]
    }
  }
}

Restart Claude Desktop. That's it — Claude now has access to your tasks and will bring them up naturally.

Claude Desktop launches nudge as a subprocess. Nothing runs in the background when you're not using Claude.

Global install

npm install -g nudge-mcp
nudge-mcp

No install (try it)

npx nudge-mcp

Supported backends

App Config type Notes
Local JSON file local Default — zero config needed
Markdown checklist local Any - [ ] task format
Todoist todoist Full read + write via REST API
Notion notion Read + write via database
Linear linear Issues assigned to you, full read + write
GitHub Issues github Issues assigned to you, full read + write
Apple Reminders reminders macOS only — no API key, reads directly
Anything else local Sync/export to a JSON or .md file

Want to add an adapter? See CONTRIBUTING.md.


Configuration

Create ~/.nudge/config.json — or skip it entirely to use the zero-config local default.

Local JSON (default — no config file needed)

Tasks live at ~/.nudge/todos.json:

[
  { "id": "1", "title": "Call the accountant", "done": false, "due": "2026-03-03", "priority": "high" },
  { "id": "2", "title": "Buy birthday gift",   "done": true },
  { "id": "3", "title": "Dentist appointment", "done": false, "tags": ["health"] }
]

Markdown checklist

{
  "adapter": { "type": "local", "filePath": "~/Documents/tasks.md", "format": "markdown" }
}
- [ ] Call the accountant
- [x] Buy birthday gift
- [ ] Dentist appointment

Todoist

{
  "adapter": { "type": "todoist", "apiKey": "your_token_here" }
}

Or set the env var: TODOIST_API_KEY=your_token npx nudge-mcp

Get your token: Todoist → Settings → Integrations → Developer

Notion

{
  "adapter": {
    "type": "notion",
    "apiKey": "secret_xxx",
    "databaseId": "your_database_id"
  }
}

Your database needs: Name (title), Done (checkbox), and optionally Due (date), Priority (select: Low / Medium / High), Tags (multi-select).

Setup: create an internal integration at notion.so/my-integrations, then share your database with it.

Apple Reminders

{
  "adapter": {
    "type": "reminders",
    "list": "To Do"
  }
}

No API key needed — reads directly from the Reminders app via AppleScript. macOS only.

list is optional. If omitted, nudge reads all lists. If you have a lot of reminders or multiple iCloud accounts, specifying a list is faster and more reliable.

Troubleshooting:

  • First run — macOS will prompt for Automation permission. Click Allow when asked, or go to System Settings → Privacy & Security → Automation and enable Reminders for your terminal.
  • iCloud sync issues — if you get a "Can't get" error, open Reminders.app and wait for it to fully sync before trying again.
  • Timeouts with large lists — add "list": "To Do" (or whichever list you use most) to your config to limit the scope.
  • List name must match exactly — including capitalisation. Run osascript -e 'tell application "Reminders" to get name of every list' in Terminal to see your exact list names.

Tools

nudge exposes these tools to any connected AI:

Tool What it does
check_tasks "Did I ever call the dentist?" — fuzzy matched
get_pending_today What's still open and due today
list_todos Full list, with filters (overdue, tag, priority, done)
get_stats Honest summary — done, pending, overdue
search_todos Find tasks by keyword
create_todo "Remind me to call Dave on Friday" → adds it
mark_complete "Done with the report" → ticks it off
mark_incomplete "Actually I didn't finish that" → reopens it

nudge also ships a suggested system prompt (as an MCP prompt resource named nudge-persona) that gives the AI the right tone: warm, honest, not preachy. Claude Desktop can pick this up automatically.


Connecting apps without a native adapter

Apple Shortcuts — build a shortcut that exports tasks as JSON to ~/.nudge/todos.json on a schedule.

Zapier / Make — add a step that writes task updates to the file whenever something changes in your app.

Obsidian / Logseq — point filePath at your daily note and use format: "markdown".

Any CLI app — add a cron: 0 * * * * myapp export --format json > ~/.nudge/todos.json


Writing a new adapter

Each adapter is a single file in src/adapters/. Implement two required methods and you're done:

import { Todo, NewTodo, TodoAdapter } from "../types.js";

export class MyAppAdapter implements TodoAdapter {
  name = "myapp";

  async listTodos(): Promise<Todo[]> {
    // fetch from your app's API
    return [];
  }

  async getTodo(id: string): Promise<Todo | null> {
    return null;
  }

  // Optional — enables create_todo tool
  async createTodo(input: NewTodo): Promise<Todo> { ... }

  // Optional — enables mark complete/incomplete
  async markComplete(id: string): Promise<void>   { ... }
  async markIncomplete(id: string): Promise<void> { ... }
}

Then register it in src/index.ts in buildAdapter(). See CONTRIBUTING.md for the full guide.


Roadmap

  • [x] nudge init — interactive setup wizard
  • [x] Apple Reminders adapter (macOS, via AppleScript)
  • [x] Linear adapter
  • [x] GitHub Issues adapter
  • [x] mark_complete / mark_incomplete tools
  • [ ] Asana / Microsoft To Do adapter
  • [ ] Webhook listener for real-time push (tasks trigger the AI)
  • [ ] Scheduled nudge mode (daily check-in without opening Claude)

Contributing

PRs and issues are welcome — especially new adapters. See CONTRIBUTING.md.

License

MIT © Dave Leal

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选