Skip to main content

mcp-tdo

License People Stars Forks Watches Last Updated PyPI

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 for local development

💻 Installation

Install mcp-tdo from PyPI using pip or uv:

# Using pip
pip install mcp-tdo

# Using uv (recommended)
uv add mcp-tdo

# Using pipx (for CLI tools)
pipx install mcp-tdo

From Source

For development or to get the latest changes:

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

🚀 Usage

Running the Server

If installed from PyPI:

mcp-tdo

Or specify a custom path to the tdo executable:

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

If running from source:

uv run mcp-tdo

MCP Server Configuration

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

Option 1: Using direct command (PyPI install)

{
  "mcpServers": {
    "mcp-tdo": {
      "command": "mcp-tdo"
    }
  }
}

If your tdo executable is not in PATH:

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

Option 2: Using uv for development

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

Option 3: 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

You tell me!

🧑‍💻 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

Metadata

Release files for mcp-tdo 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mcp-tdo 0.1.2
File Size Uploaded Provenance
mcp_tdo-0.1.2.tar.gz 24.9 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for mcp-tdo 0.1.2
File Interpreter ABI Platform
mcp_tdo-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 46.1 kB

Release files / mcp_tdo-0.1.2.tar.gz

Download URL mcp_tdo-0.1.2.tar.gz
Size 24.9 kB
Tags Source
SHA-256 checksum
How to use checksums
a0b87fc11997144db1f7f9b9f67fe84218a24c912c7d7780261938d67b4aafe1
BLAKE2b-256 checksum
How to use checksums
bfe776b6b6c3a9dd33f852cadcc897b7ad2871c023fe476f564873d34f1a1e77
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 25, 2025.

Transparency log

Release files / mcp_tdo-0.1.2-py3-none-any.whl

Download URL mcp_tdo-0.1.2-py3-none-any.whl
Size 21.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
46ced4e680bebc96a4d67afe3a534ee1b1c3503037b2201a0dbd1d4c00036869
BLAKE2b-256 checksum
How to use checksums
0a09e270f311138843102f16cca66b1da21b0c19bce60eb29d9004dc949d39d0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 25, 2025.

Transparency log

Security for mcp-tdo 0.1.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for mcp_tdo-0.1.2.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 25, 2025.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page