About Ticktick Api Mcp (typescript)
Ticktick Api Mcp (typescript) connects MCP clients to TickTick and Dida365 for project and task management. It provides project and task tools, a statistics resource, OAuth2-based token setup, and local or Docker-based HTTP operation.
Key features
- 01Create, view, update, and delete projects
- 02Create, update, complete, and delete tasks
- 03Manage subtasks, dates, priorities, and reminders
- 04Expose project and task statistics
- 05OAuth2 token setup and Docker HTTP access
Use cases
- 01Review projects and their tasks
- 02Create or update tasks with deadlines and reminders
- 03Complete or remove tasks and projects
- 04Check task counts and overdue-task statistics
MCP support
The server exposes TickTick and Dida365 project and task operations as MCP tools, plus a statistics resource. It supports local MCP client connections and Docker deployment with HTTP access.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMETickTick MCP Server (TypeScript)
Cервер Model Context Protocol (MCP) для интеграции с TickTick API, написанный на TypeScript.
🚀 Кстати! Если вы работаете с ИИ и автоматизацией — обратите внимание на polza.ai — российский агрегатор API нейросетей. Никаких VPN, оплата российской картой, интеграция с n8n/Make/Zapier. Идеально для ваших AI-проектов! 🇷🇺
Возможности
- 🔑 Простая авторизация - используйте access token из переменных окружения
- 📋 Управление проектами - создание, просмотр и удаление проектов (включая поддержку типов TASK и NOTE)
- ✅ Управление задачами - создание, обновление, завершение и удаление задач
- 🛠️ Отдельный скрипт для получения токена - простой способ получить access token
- 📊 Информация о конфигурации - просмотр текущих настроек через ресурсы
- 🔌 Бесшовная интеграция с Claude и другими MCP клиентами
- 🐳 Docker поддержка - запуск в контейнере с HTTP доступом
- ✅ Надежная валидация - автоматическая проверка и преобразование данных
- 🔄 Retry логика - автоматические повторы при временных ошибках
- 📝 Детальное логирование - подробные логи для отладки
Предварительные требования
- Node.js 18 или выше
- npm или yarn
- TickTick API credentials (Client ID, Client Secret)
Установка
- Клонируйте репозиторий:
git clone https://github.com/polza-ai/ticktick-mcp-ts.git
cd ticktick-mcp-ts
- Установите зависимости:
npm install
- Соберите проект:
npm run build
Аутентификация с TickTick
Этот сервер использует OAuth2 для аутентификации с TickTick. Процесс настройки простой:
Шаг 1: Регистрация приложения
- Зарегистрируйте ваше приложение в TickTick Developer Center
- Установите redirect URI как
http://localhost:8080/callback - Запишите ваш Client ID и Client Secret
- Установите redirect URI как
Шаг 2: Настройка переменных окружения
- Создайте файл
.envна основе.env.example:
# TickTick API credentials (ТОЛЬКО для получения access token)
# Получите их на https://developer.ticktick.com/manage
TICKTICK_CLIENT_ID=your_client_id_here
TICKTICK_CLIENT_SECRET=your_client_secret_here
# TickTick Access Token (ОБЯЗАТЕЛЬНО для работы)
# Получите его запустив 'npm run get-token'
TICKTICK_ACCESS_TOKEN=your_access_token_here
# TickTick API endpoints (значения по умолчанию)
TICKTICK_BASE_URL=https://api.ticktick.com/open/v1
TICKTICK_AUTH_URL=https://ticktick.com/oauth/authorize
TICKTICK_TOKEN_URL=https://ticktick.com/oauth/token
# Для Dida365 (китайская версия), раскомментируйте и используйте вместо:
# TICKTICK_BASE_URL=https://api.dida365.com/open/v1
# TICKTICK_AUTH_URL=https://dida365.com/oauth/authorize
# TICKTICK_TOKEN_URL=https://dida365.com/oauth/token
Шаг 3: Получение токена доступа
- Запустите процесс аутентификации:
npm run get-token
Это:
- Запустит локальный сервер на порту 8080
- Откроет окно браузера для входа в TickTick
- Автоматически сохранит ваши токены доступа в файл
.env
Шаг 4: Тестирование конфигурации
- Протестируйте вашу конфигурацию:
npm test
Это проверит, что ваши учетные данные TickTick работают корректно и покажет реальные данные из вашего аккаунта.
Аутентификация с Dida365
滴答清单 - Dida365 - это китайская версия TickTick, и процесс аутентификации аналогичен TickTick:
-
Зарегистрируйте ваше приложение в Dida365 Developer Center
- Установите redirect URI как
http://localhost:8080/callback - Запишите ваш Client ID и Client Secret
- Установите redirect URI как
-
Добавьте переменные окружения в ваш файл
.env:TICKTICK_BASE_URL=https://api.dida365.com/open/v1 TICKTICK_AUTH_URL=https://dida365.com/oauth/authorize TICKTICK_TOKEN_URL=https://dida365.com/oauth/token -
Следуйте тем же шагам аутентификации, что и для TickTick
Использование
Локальный запуск
С Claude for Desktop
-
Установите Claude for Desktop
-
Отредактируйте файл конфигурации Claude for Desktop:
macOS:
nano ~/Library/Application\ Support/Claude/claude_desktop_config.jsonWindows:
notepad %APPDATA%\Claude\claude_desktop_config.json -
Добавьте конфигурацию TickTick MCP сервера, используя абсолютные пути:
{ "mcpServers": { "ticktick": { "command": "node", "args": ["/absolute/path/to/ticktick-mcp-ts/dist/index.js"], "env": { "TICKTICK_ACCESS_TOKEN": "your_access_token_here", "TICKTICK_BASE_URL": "https://api.ticktick.com/open/v1" } } } } -
Перезапустите Claude for Desktop
После подключения вы увидите инструменты TickTick MCP сервера доступными в Claude, обозначенные иконкой 🔨 (tools).
🐳 Запуск в Docker контейнере
Проект поддерживает запуск в Docker контейнере с использованием supergateway для HTTP доступа к MCP серверу.
Быстрый старт с Docker
-
Убедитесь, что у вас есть
.envфайл с необходимыми переменными:TICKTICK_ACCESS_TOKEN=your_access_token_here TICKTICK_BASE_URL=https://api.ticktick.com/open/v1 SUPERGATEWAY_PORT=8002 -
Запустите контейнер с помощью Docker Compose:
docker-compose up -d -
Или соберите и запустите вручную:
# Сборка образа docker build -t ticktick-mcp . # Запуск контейнера docker run -d \ --name ticktick-mcp \ -p 8002:8002 \ -e TICKTICK_ACCESS_TOKEN=your_access_token_here \ -e TICKTICK_BASE_URL=https://api.ticktick.com/open/v1 \ -e SUPERGATEWAY_PORT=8002 \ ticktick-mcp
Использование с Claude через HTTP
После запуска контейнера, MCP сервер будет доступен по HTTP на порту 8002. Добавьте следующую конфигурацию в Claude for Desktop:
{
"mcpServers": {
"ticktick": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-everything", "http://localhost:8002/mcp"]
}
}
}
Docker команды для управления
# Просмотр логов
docker-compose logs -f ticktick-mcp
# Остановка сервиса
docker-compose down
# Перезапуск сервиса
docker-compose restart
# Обновление образа
docker-compose down
docker-compose build --no-cache
docker-compose up -d
Переменные окружения для Docker
| Переменная | Описание | По умолчанию |
|---|---|---|
SUPERGATEWAY_PORT | Порт для HTTP доступа к MCP серверу | 8002 |
TICKTICK_ACCESS_TOKEN | Access token для TickTick API | Обязательно |
TICKTICK_BASE_URL | Base URL для TickTick API | https://api.ticktick.com/open/v1 |
TICKTICK_CLIENT_ID | Client ID (только для получения токена) | - |
TICKTICK_CLIENT_SECRET | Client Secret (только для получения токена) | - |
Преимущества Docker запуска
- 🔒 Изолированная среда - сервер работает в отдельном контейнере
- 🌐 HTTP доступ - можно подключаться к серверу по сети
- 🔄 Автоматический перезапуск - контейнер перезапускается при сбоях
- 📦 Простое развертывание - один контейнер содержит все зависимости
- 🚀 Масштабируемость - легко запустить несколько экземпляров
Проверка работы Docker контейнера
# Проверка статуса контейнера
docker ps | grep ticktick-mcp
# Проверка доступности HTTP endpoint
curl http://localhost:8002/health
# Тест MCP подключения
curl -X POST http://localhost:8002/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc": "2.0", "id": 1, "method": "initialize", "params": {"protocolVersion": "2024-11-05", "capabilities": {}, "clientInfo": {"name": "test", "version": "1.0.0"}}}'
Доступные MCP инструменты
📋 Управление проектами
get_projects
Получить все проекты пользователя TickTick
- Параметры: Нет параметров
create_project
Создать новый проект в TickTick
- Параметры:
name(обязательно) - Название проектаcolor(опционально) - Цвет проекта (например, #FF0000)viewMode(опционально) - Режим отображения: "list", "kanban", "timeline"sortOrder(опционально) - Порядок сортировки проекта (число)kind(опционально) - Тип проекта: "TASK" (по умолчанию) или "NOTE"
update_project
Обновить существующий проект в TickTick
- Параметры:
projectId(обязательно) - ID проектаname(опционально) - Новое название проектаcolor(опционально) - Новый цвет проекта (например, #FF0000)viewMode(опционально) - Новый режим отображения: "list", "kanban", "timeline"sortOrder(опционально) - Новый порядок сортировки проекта (число)kind(опционально) - Новый тип проекта: "TASK" или "NOTE"
delete_project
Удалить проект из TickTick
- Параметры:
projectId(обязательно) - ID проекта
✅ Управление задачами
get_project_tasks
Получить все задачи конкретного проекта
- Параметры:
projectId(обязательно) - ID проекта
get_task
Получить детали конкретной задачи
- Параметры:
projectId(обязательно) - ID проектаtaskId(обязательно) - ID задачи
create_task
Создать новую задачу в TickTick
- Параметры:
title(обязательно) - Название задачиprojectId(обязательно) - ID проектаcontent(опционально) - Описание задачиdesc(опционально) - Дополнительное описаниеisAllDay(опционально) - Задача на весь день (boolean)startDate(опционально) - Дата начала (ISO 8601 формат)dueDate(опционально) - Срок выполнения (ISO 8601 формат)timeZone(опционально) - Временная зона (например, America/Los_Angeles)reminders(опционально) - Массив напоминаний (например, ['TRIGGER:P0DT9H0M0S'])repeatFlag(опционально) - Правило повторения (например, 'RRULE:FREQ=DAILY;INTERVAL=1')priority(опционально) - Приоритет: "none", "low", "medium", "high"sortOrder(опционально) - Порядок сортировки (число)items(опционально) - Массив подзадач:title(обязательно) - Название подзадачиstatus(опционально, по умолчанию 0) - Статус: 0=Normal, 1=CompletedisAllDay(опционально) - Подзадача на весь деньstartDate(опционально) - Дата начала подзадачиtimeZone(опционально) - Временная зона подзадачиsortOrder(опционально) - Порядок сортировки подзадачи
update_task
Обновить существующую задачу
- Параметры:
taskId(обязательно) - ID задачиprojectId(обязательно) - ID проектаtitle(опционально) - Новое название задачиcontent(опционально) - Новое описание задачиdesc(опционально) - Новое дополнительное описаниеisAllDay(опционально) - Задача на весь день (boolean)startDate(опционально) - Новая дата начала (ISO 8601 формат)dueDate(опционально) - Новый срок выполнения (ISO 8601 формат)timeZone(опционально) - Новая временная зонаreminders(опционально) - Новые напоминанияrepeatFlag(опционально) - Новое правило повторенияpriority(опционально) - Новый приоритет: "none", "low", "medium", "high"sortOrder(опционально) - Новый порядок сортировкиitems(опционально) - Подзадачи для обновления:id(обязательно) - ID подзадачи (обязательно для обновления)title(обязательно) - Название подзадачиstatus(опционально, по умолчанию 0) - Статус подзадачиisAllDay(опционально) - Подзадача на весь деньstartDate(опционально) - Дата начала подзадачиtimeZone(опционально) - Временная зона подзадачиsortOrder(опционально) - Порядок сортировки подзадачи
complete_task
Отметить задачу как выполненную
- Параметры:
projectId(обязательно) - ID проектаtaskId(обязательно) - ID задачи
delete_task
Удалить задачу из TickTick
- Параметры:
projectId(обязательно) - ID проектаtaskId(обязательно) - ID задачи
get_all_projects_with_tasks
Получить все проекты пользователя вместе со всеми задачами в каждом проекте
- Параметры: Нет параметров
Доступные MCP ресурсы
📊 Статистика
ticktick://stats
Общая статистика по проектам и задачам
- Возвращает: JSON с общей статистикой (количество проектов, задач, выполненных, просроченных) и детальной статистикой по каждому проекту
- Включает: URI ресурса и временную метку
Примечание: Все инструменты используют токен доступа из переменной окружения TICKTICK_ACCESS_TOKEN.
Примеры запросов для Claude
Вот несколько примеров запросов для использования с Claude после подключения TickTick MCP сервера:
Базовые операции
- "Покажи мне все мои проекты TickTick"
- "Создай новую задачу 'Закончить документацию MCP сервера' в моем рабочем проекте с высоким приоритетом"
- "Покажи все задачи в моем личном проекте"
- "Отметь задачу 'Купить продукты' как выполненную"
- "Создай новый проект 'Планирование отпуска' с синим цветом"
- "Когда мой следующий дедлайн в TickTick?"
Продвинутые сценарии
- "Создай план на завтра: утром проверить почту, в 10:00 встреча с командой, в 14:00 работа над проектом"
- "Покажи статус всех моих проектов и количество незавершенных задач в каждом"
- "Создай проект для планирования мероприятия со всеми необходимыми задачами"
- "Какие задачи просрочены и требуют внимания?"
Приоритеты задач
Используйте строковые значения:
"none"- Без приоритета (0)"low"- Низкий приоритет (1)"medium"- Средний приоритет (3)"high"- Высокий приоритет (5)
Форматы дат
Все даты должны быть в формате ISO 8601:
2024-12-31T23:59:59Z
Получение нового токена
Если ваш токен истек, просто запустите:
npm run get-token
Скрипт поднимет локальный сервер на порту 8080, откроет браузер для авторизации и автоматически получит новый токен.
Сервер обрабатывает обновление токенов автоматически, поэтому вам не нужно будет повторно аутентифицироваться, если вы не отзовете доступ или не удалите файл .env.
Разработка
Структура проекта
ticktick-mcp-ts/
├── src/
│ ├── client/
│ │ └── ticktick-client.ts # Клиент для TickTick API с валидацией и retry логикой
│ ├── server/
│ │ └── ticktick-mcp-server.ts # MCP сервер с полным набором инструментов
│ ├── types/
│ │ └── ticktick.ts # TypeScript типы и улучшенная обработка ошибок
│ ├── utils/
│ │ └── validators.ts # Валидаторы для данных TickTick API
│ └── index.ts # Точка входа
├── get-token.ts # Скрипт для получения токена
├── test-server.ts # Тест сервера
├── claude-desktop-config.json # Пример конфигурации Claude
├── Dockerfile # Docker образ для контейнеризации
├── docker-compose.yml # Docker Compose конфигурация
├── package.json
├── tsconfig.json
└── README.md
Команды разработки
# Сборка
npm run build
# Запуск в режиме разработки
npm run dev
# Тестирование (с реальными API вызовами)
npm test
# Получение токена
npm run get-token
# Очистка
npm run clean
# Запуск сервера
npm start
Процесс аутентификации
Проект реализует полный OAuth 2.0 поток для TickTick:
- Начальная настройка: Пользователь предоставляет свой TickTick API Client ID и Secret
- Авторизация в браузере: Пользователь перенаправляется в TickTick для предоставления доступа
- Получение токена: Локальный сервер получает OAuth callback с кодом авторизации
- Обмен токена: Код обменивается на токены доступа и обновления
- Хранение токена: Токены безопасно сохраняются в локальном файле
.env
Это упрощает пользовательский опыт, обрабатывая весь OAuth поток программно.
Безопасность
- Никогда не коммитьте файл
.envв репозиторий - Храните токены доступа в безопасном месте
- Регулярно обновляйте токены доступа при необходимости
- Используйте переменные окружения для передачи токенов в продакшене
Устранение неполадок
Ошибки токена
# Если токен истек или недействителен
npm run get-token
Проблемы с подключением
# Проверьте конфигурацию
npm test
Проблемы с портом
Если порт 8080 занят, скрипт получения токена может не работать. Убедитесь, что порт свободен или измените его в get-token.ts.
🚀 Рекомендуем: polza.ai - Российский агрегатор API нейросетей
Недавно нашёл для себя очень годный инструмент — российский сервис, который открывает API-доступ сразу к сотням нейросетей. Никаких VPN, никаких зарубежных карт — всё работает прямо из России! 🇷🇺
💡 Почему polza.ai?
Для интеграторов и разработчиков:
- 🔌 Простое подключение — понятная документация, быстрая интеграция
- 🛠️ Совместимость с популярными инструментами — n8n, Make, Zapier и другие
- 💰 Выгодные тарифы — реально экономичные цены на API вызовы
- 🏦 Российская платёжная система — работа с расчётного счёта, оплата в рублях
🎯 Примеры использования
Уже протестировал в нескольких автоматизациях:
- 📱 Генерация контента для соцсетей — автоматические посты и описания
- 🤖 Telegram-боты с ИИ — умные ответы и обработка запросов
- 📧 Обработка заявок с сайта — автоматическая классификация и ответы
- 📬 Email-рассылки — персонализированные письма на основе ИИ
🔥 Что доступно
- GPT-подобные модели для генерации текста
- Классификация и анализ контента
- Перевод на множество языков
- Анализ кода и техническая документация
- Скоро: генерация изображений и видео! 🎨
👥 Для кого это особенно актуально
Если вы:
- 🔧 Интегратор или фрилансер — строите решения для клиентов
- 📈 Маркетолог — автоматизируете контент-процессы
- 🏢 Развиваете автоматизацию продаж под ключ
- 💻 Разработчик — внедряете ИИ в проекты
То polza.ai — это то, что вам нужно!
🎉 Начните прямо сейчас
Если вы давно хотели внедрять нейросети в проекты, но вас останавливали VPN, карты и сложные подключения — теперь всё решаемо.
Сервис полностью российский, удобный, выгодный и работает стабильно. Регистрируйтесь, тестируйте и начинайте строить свои AI-решения уже сейчас!
Содействие
Вклады приветствуются! Пожалуйста, не стесняйтесь отправлять Pull Request.
- Форкните репозиторий
- Создайте ветку для вашей функции (
git checkout -b feature/amazing-feature) - Зафиксируйте ваши изменения (
git commit -m 'Add some amazing feature') - Отправьте в ветку (
git push origin feature/amazing-feature) - Откройте Pull Request
Лицензия
Этот проект лицензирован под MIT License
Поддержка
Если у вас есть вопросы или проблемы, создайте issue в репозитории проекта.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.