Skip to main content

MCP server for tdo note taking tool

Project description

mcp-tdo

License People Stars Forks Watches Last Updated

MCP for your Tdos 🤖✅

mcp-tdo is a Model Context Protocol (MCP) server that allows AI models to access and manage your todo notes and tasks through the tdo CLI tool.

✨ Features

  • Retrieve todo note contents for today, tomorrow, or any date offset
  • Search across all notes for specific content
  • List all pending todos across all your notes
  • Get count of pending todos across all your notes
  • Create new todo notes
  • Mark specific todos as complete
  • Add new todo items to existing note files
  • Fully compatible with the MCP specification

⚡ Setup

⚙️ Requirements

  • Python 3.10+
  • tdo CLI tool installed and accessible in your PATH
  • uv

💻 Installation

Installing mcp-tdo is simple:

git clone https://github.com/2kabhishek/mcp-tdo
cd mcp-tdo
uv sync

For development:

git clone https://github.com/2kabhishek/mcp-tdo
cd mcp-tdo
uv sync --dev

🚀 Usage

Run the server directly:

uv run mcp-tdo

Or specify a custom path to the tdo executable:

uv run mcp-tdo --tdo-path /path/to/tdo.sh

MCP Server Configuration

To use this MCP server, add it to your MCP client configuration:

Option 1: Using uv (recommended)

If installed globally

{
  "mcpServers": {
    "mcp-tdo": {
      "command": "uv",
      "args": ["run", "mcp-tdo"]
    }
  }
}

For local development

{
  "mcpServers": {
    "mcp-tdo": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/mcp-tdo", "mcp-tdo"]
    }
  }
}

If your tdo executable is not in PATH:

{
  "mcpServers": {
    "mcp-tdo": {
      "command": "uv",
      "args": [
        "run",
        "--directory",
        "/path/to/mcp-tdo",
        "mcp-tdo",
        "--tdo-path",
        "/path/to/your/tdo"
      ]
    }
  }
}

Option 2: Using python directly

{
  "mcpServers": {
    "mcp-tdo": {
      "command": "python",
      "args": ["-m", "mcp_tdo"]
    }
  }
}

🧩 Available Tools

get_todo_contents

Shows contents of todo notes for today or a specific date offset.

Parameters:

  • offset: (optional) Offset like "1" for tomorrow, "-1" for yesterday, etc.

search_notes

Searches for notes matching a query term.

Parameters:

  • query: Search query term

get_pending_todos

Shows all pending todos (unchecked checkboxes) from all your notes.

No parameters required.

get_todo_count

Shows the count of pending todos across all your notes.

No parameters required.

create_note

Creates a new todo note at the specified path.

Parameters:

  • note_path: Path/name for the new note (e.g., 'tech/vim' or 'ideas')

mark_todo_done

Marks a specific todo item as done.

Parameters:

  • file_path: Path to the file containing the todo
  • todo_text: Text of the todo item to mark as done

add_todo

Adds a new todo item to a specified file.

Parameters:

  • file_path: Path to the file to add the todo to
  • todo_text: Text of the todo item to add

🔧 Development

This project uses uv for dependency management and Ruff for linting and formatting.

Setup

# Clone the repository
git clone https://github.com/2kabhishek/mcp-tdo
cd mcp-tdo

# Install dependencies (including dev dependencies)
uv sync --dev

Common Development Commands

# Run tests
uv run pytest tests/ -v

# Run linter
uv run ruff check src/ tests/

# Format code
uv run ruff format src/ tests/

# Fix linting issues automatically
uv run ruff check --fix src/ tests/

# Run the MCP server locally
uv run mcp-tdo

# Install the package in development mode
uv sync

Project Structure

├── src/mcp_tdo/          # Main package
│   ├── models.py         # Data models
│   ├── tdo_client.py     # TDO CLI integration
│   └── server.py         # MCP server implementation
├── tests/                # Test suite
├── pyproject.toml        # Project configuration
└── uv.lock              # Dependency lockfile

🏗️ What's Next

✅ To-Do

  • Publish to PyPI
  • Add CD

🧑‍💻 Behind The Code

🌈 Inspiration

mcp-tdo was inspired by the need to give AI assistants access to personal task management tools, allowing for more productive interactions with AI models.

💡 Challenges/Learnings

  • Implementing proper error handling and command execution
  • Working with the MCP protocol specification
  • Managing file path and content operations safely

🧰 Tooling

  • dots2k — Dev Environment
  • nvim2k — Personalized Editor
  • sway2k — Desktop Environment
  • qute2k — Personalized Browser

🔍 More Info


⭐ hit the star button if you found this useful ⭐

Source | Blog | Twitter | LinkedIn | More Links | Other Projects

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcp_tdo-0.1.0.tar.gz (24.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcp_tdo-0.1.0-py3-none-any.whl (21.1 kB view details)

Uploaded Python 3

File details

Details for the file mcp_tdo-0.1.0.tar.gz.

File metadata

  • Download URL: mcp_tdo-0.1.0.tar.gz
  • Upload date:
  • Size: 24.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for mcp_tdo-0.1.0.tar.gz
Algorithm Hash digest
SHA256 1276265460f03e2f0e6389fc9a003565f647e7e4335fc4742b7813062585aab1
MD5 4b89862914c534a4a9ada4cf83a517fa
BLAKE2b-256 6c96b243ce8c9f3339a43d351593f82dec14ac61b2991467e311315065a29827

See more details on using hashes here.

Provenance

The following attestation bundles were made for mcp_tdo-0.1.0.tar.gz:

Publisher: pypi-release.yml on 2KAbhishek/mcp-tdo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mcp_tdo-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: mcp_tdo-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 21.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for mcp_tdo-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e3980375bb2b83e39de9f936096fe222a967eecd7d60c5305bc4c5dfa059e6e7
MD5 4ae3e0a8cdbedf2c8c1017b046c4e0a9
BLAKE2b-256 6e9e0c865bcd2c8cd0112232ac57b6ec99fc93196a701b8991c2a294bf3640a1

See more details on using hashes here.

Provenance

The following attestation bundles were made for mcp_tdo-0.1.0-py3-none-any.whl:

Publisher: pypi-release.yml on 2KAbhishek/mcp-tdo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page