Plugvan
Plugvan: hand-written and validated MCP integrations for the apps you use, starting with Todoist. It is a standalone server, not a gateway or proxy for other MCP servers.
Todoist integration: A local Model Context Protocol (MCP) server that lets AI assistants like Claude Desktop manage Todoist over STDIO, with smart project routing, natural language due dates, and strict validation.
English • Türkçe • Architecture • Tests
Architecture / Mimari
Input source: Claude Desktop (MCP client via STDIO)
▲
│ STDIO / JSON-RPC (both directions)
▼
Gateway / interface: FastMCP server (plugvan.todoist)
Task/Project Get/Create/Update/Delete, Section, Label, Comment tools
│
│ Official Python SDK
▼
Todoist: Todoist REST API v1
Categorized tasks, natural due dates & direct web links
English
Plugvan is primarily a local Model Context Protocol (MCP) server: Claude Desktop launches it as a subprocess and talks to it over STDIO, so no web server or deployment is needed. It lets an AI assistant manage Todoist through conversation using smart project resolution, natural language due dates, and strict schema validation.
🌟 Key Features
- 🤖 Model Context Protocol (MCP) Server (
plugvan.todoist): FastMCP server over STDIO for Claude Desktop with full suite of Todoist management tools:- Tasks:
create_task(subtasks viaparent_id, deadlines viadeadline_date),get_task,list_tasks,complete_task,reopen_task,update_task(move/reparent, deadline updates),delete_task - Sections / Kanban:
create_section,list_sections,update_section,delete_section - Labels:
list_labels,create_label,update_label,delete_label - Comments / Notes:
add_comment,get_comments - Projects & Hierarchy:
create_project(nested subprojects),get_project,update_project,delete_project,list_projects(tree view)
- Tasks:
- 🎯 Smart Name Resolution: Maps human-readable project, section and label names (case-insensitive, with Turkish/Unicode normalization) to Todoist IDs.
- MCP tools:
- An unknown name returns an error, and nothing is written.
- When several items match, the tool returns an ambiguity error listing up to 5 candidates as
name (ID). - Destructive tools (
delete_project,update_project,delete_section,update_section,delete_label,update_label) accept only an ID or an exact name. create_task,update_task,create_project(parent),create_sectionandlist_sectionsalso accept a project name that partially matches exactly one project. Their messages show the project's real name.- Sections match only by ID or exact name, inside the resolved project.
Inbox/Gelen Kutusualways resolve to the Inbox.
- MCP tools:
- 📏 Name limits (MCP tools):
- Project names: up to 120 characters.
- Label names: up to 60 characters.
- Section names: up to 120 characters here. Todoist allows 2,048 (as of October 2026), so a section with a longer name can only be addressed by its ID.
- The number of projects you can have depends on your Todoist plan. See Todoist's official Usage limits in Todoist page for the current limits.
- Name lookup searches only your active projects.
- Archived projects are not listed, so their names are reported as "not found".
📁 Project Structure
plugvan/
├── plugvan/todoist/ # FastMCP server for Claude Desktop (STDIO, python -m plugvan.todoist)
├── tests/ # Pytest test suite (unit & integration tests)
├── pyproject.toml # Package metadata and dependencies
└── .env.example # Environment variable template
🚀 Getting Started
Install from the release (no clone)
Claude Desktop starts Plugvan from the release wheel; nothing needs to be cloned. Verified so far: Windows with Claude Desktop. CI also installs and tests the built wheel on Ubuntu and Windows. macOS and Linux with Claude Desktop have not been verified, so the steps below are for Windows.
Option A: uvx (recommended)
- Install uv, which provides
uvx: follow the official installation guide, or on Windows runwinget install --id=astral-sh.uv -e. - In a new terminal, find the full path of
uvx:
where.exe uvx
In PowerShell, plain where is an alias of Where-Object and prints nothing, so use where.exe.
Claude Desktop does not use your shell's PATH, so "command" must be this full path.
3. In Claude Desktop, open Settings ➔ Developer ➔ Edit Config, which opens the folder with claude_desktop_config.json, and add the todoist server (if the file already has mcpServers, add the todoist entry inside it). Replace C:\\path\\to\\uvx.exe with the path from step 2, writing each \ as \\, and <your token> with your Todoist API token:
{
"mcpServers": {
"todoist": {
"command": "C:\\path\\to\\uvx.exe",
"args": [
"--from",
"https://github.com/kagankurubas/plugvan/releases/download/v0.1.0/plugvan_mcp-0.1.0-py3-none-any.whl",
"plugvan-mcp",
"todoist"
],
"env": {
"TODOIST_API_TOKEN": "<your token>"
}
}
}
}
- Restart Claude Desktop.
Option B: pip into a virtual environment
This install was verified from the Windows terminal; starting it from Claude Desktop with the config below has not been verified yet.
python -m venv C:\path\to\plugvan-venv
C:\path\to\plugvan-venv\Scripts\python.exe -m pip install https://github.com/kagankurubas/plugvan/releases/download/v0.1.0/plugvan_mcp-0.1.0-py3-none-any.whl
Then use the venv's plugvan-mcp.exe as "command" (again with \\ in JSON):
{
"mcpServers": {
"todoist": {
"command": "C:\\path\\to\\plugvan-venv\\Scripts\\plugvan-mcp.exe",
"args": ["todoist"],
"env": {
"TODOIST_API_TOKEN": "<your token>"
}
}
}
}
Check the install (optional)
C:\path\to\uvx.exe --from https://github.com/kagankurubas/plugvan/releases/download/v0.1.0/plugvan_mcp-0.1.0-py3-none-any.whl plugvan-mcp --version
C:\path\to\plugvan-venv\Scripts\plugvan-mcp.exe --version
Each prints plugvan-mcp <version>, for example plugvan-mcp 0.1.0.
Configuration and security
TODOIST_API_TOKEN(required) goes in the config'senvblock: in Todoist Web ➔ Settings ➔ Integrations ➔ Developer, copy your API token. For Turkish tool results, add"PLUGVAN_LANG": "tr"to the same block (enis the default).- The installed
plugvan-mcpcommand does not read a.envfile; onlypython -m plugvan.todoistin a clone does.
Warning: The token in the
envblock is stored in plain text inclaude_desktop_config.json, which is no better and no worse than a.envfile. Keep that file private: do not share it or commit it to a repository.
Run from a clone (contributors)
For development, or to run the server from a source checkout, follow steps 1–3 below and Method 1 under Usage Methods.
1. Clone the Repository
git clone https://github.com/kagankurubas/plugvan.git
cd plugvan
2. Create Virtual Environment & Install Dependencies
# Create virtual environment
python -m venv venv
# Activate virtual environment
# Windows (PowerShell):
.\venv\Scripts\activate
# macOS / Linux:
source venv/bin/activate
# Install required packages
pip install -e ".[test]"
3. Configure Environment Variables
Copy .env.example to .env:
cp .env.example .env
Edit your .env file with your own credentials:
TODOIST_API_TOKEN=your_todoist_api_token_here
# Optional: PLUGVAN_LANG=tr
How to obtain your credentials:
TODOIST_API_TOKEN: Log into Todoist Web ➔ Settings ➔ Integrations ➔ Developer ➔ Copy your API token.PLUGVAN_LANG(optional): the language of tool results,en(default) ortrfor Turkish.
Warning: 🔒 Security considerations
- Secret Management: Keep
.envprivate. It is pre-configured in.gitignoreand must never be committed to Git.
🛠️ Usage Methods
Method 1: Claude Desktop (Model Context Protocol - MCP)
Integrate Todoist directly into your Claude Desktop application.
- In Claude Desktop, open Settings ➔ Developer ➔ Edit Config.
- Add the
todoistserver configuration (replace<REPO_PATH>with your project path):
{
"mcpServers": {
"todoist": {
"command": "<REPO_PATH>\\venv\\Scripts\\python.exe",
"args": ["-m", "plugvan.todoist"],
"env": {
"PYTHONPATH": "<REPO_PATH>",
"PYTHONIOENCODING": "utf-8"
}
}
}
}
For Turkish tool results, add "PLUGVAN_LANG": "tr" to the env block.
3. Restart Claude Desktop. You can now prompt Claude:
- "List my open tasks in Todoist for today."
- "Create a p2 task 'Prepare weekly report' due tomorrow at 14:00."
- "Complete task ID 6hM2..."
Türkçe
Plugvan, temelde yerel çalışan bir Model Context Protocol (MCP) sunucusudur: Claude Desktop onu alt süreç olarak başlatır ve STDIO üzerinden konuşur; web sunucusu veya deploy gerekmez. Yapay zeka asistanının Todoist'i sohbet üzerinden yönetmesini sağlar.
🌟 Öne Çıkan Özellikler
- 🤖 Model Context Protocol (MCP) Sunucusu (
plugvan.todoist): Claude Desktop için FastMCP mimarisiyle yerel STDIO üzerinden çalışan kapsamlı Todoist yönetim araç seti:- Görev Yönetimi:
create_task(parent_id ile alt görev, deadline_date ile son teslim tarihi),get_task,list_tasks,complete_task,reopen_task,update_task(proje/bölüm/üst görev taşıma, deadline güncelleme),delete_task - Bölüm / Kanban Listeleri:
create_section,list_sections,update_section,delete_section - Etiketler:
list_labels,create_label,update_label,delete_label - Yorumlar & Notlar:
add_comment,get_comments - Projeler & Hiyerarşi:
create_project(alt proje / parent_id),get_project,update_project,delete_project,list_projects(ağaç görünümü)
- Görev Yönetimi:
- 🎯 Akıllı İsim Eşleme: Proje, bölüm ve etiket isimlerini büyük/küçük harf duyarsız ve Türkçe karakter uyumlu olarak Todoist ID'lerine eşler.
- MCP tool'ları:
- Bilinmeyen isim hata döndürür ve hiçbir şey yazılmaz.
- Birden fazla eşleşmede en fazla 5 aday
isim (ID)olarak listelenir. - Yıkıcı tool'lar (
delete_project,update_project,delete_section,update_section,delete_label,update_label) yalnızca ID veya tam isim kabul eder. create_task,update_task,create_project(üst proje),create_sectionvelist_sectionsyalnızca tek bir projeyle kısmi eşleşen bir proje adını da kabul eder; mesajlar projenin gerçek adını gösterir.- Bölümler yalnızca ID veya tam isimle, çözümlenen projenin içinde aranır.
Inbox/Gelen Kutusuher zaman Gelen Kutusu'na çözümlenir.
- MCP tool'ları:
- 📏 İsim limitleri (MCP tool'ları):
- Proje adı: en fazla 120 karakter.
- Etiket adı: en fazla 60 karakter.
- Bölüm adı: burada en fazla 120 karakter. Todoist 2.048 karaktere izin verdiği için (Ekim 2026 itibarıyla) daha uzun isimli bir bölüme yalnızca ID ile ulaşılabilir.
- Kullanabileceğiniz proje sayısı Todoist planınıza göre değişir. Güncel limitler için Todoist'in resmi Usage limits in Todoist sayfasına bakın.
- İsim araması yalnızca aktif projeleriniz içinde yapılır.
- Arşivlenmiş projeler listelenmediği için isimleri "bulunamadı" sayılır.
📁 Proje Yapısı
plugvan/
├── plugvan/todoist/ # Claude Desktop için FastMCP sunucusu (STDIO, python -m plugvan.todoist)
├── tests/ # Pytest test paketi (birim ve entegrasyon testleri)
├── pyproject.toml # Paket bilgileri ve bağımlılıklar
└── .env.example # Çevre değişkeni şablonu
🚀 Kurulum ve Başlangıç
Sürümden kurulum (klonlamadan)
Claude Desktop, Plugvan'ı sürümdeki wheel dosyasından başlatır; depoyu klonlamanız gerekmez. Şu ana kadar doğrulanan: Claude Desktop ile Windows. CI ayrıca derlenen wheel'i Ubuntu ve Windows'ta kurup test eder. Claude Desktop ile macOS ve Linux doğrulanmadı; bu yüzden aşağıdaki adımlar Windows içindir.
A seçeneği: uvx (önerilen)
uvx'i sağlayan uv'yi kurun: resmi kurulum kılavuzunu izleyin ya da Windows'tawinget install --id=astral-sh.uv -ekomutunu çalıştırın.- Yeni bir terminalde
uvx'in tam yolunu bulun:
where.exe uvx
PowerShell'de düz where, Where-Object komutunun takma adıdır ve hiçbir şey yazdırmaz; bu yüzden where.exe kullanın.
Claude Desktop kabuğunuzun PATH değişkenini kullanmaz; bu yüzden "command" bu tam yol olmalıdır.
3. Claude Desktop'ta Settings ➔ Developer ➔ Edit Config ile claude_desktop_config.json dosyasının bulunduğu klasörü açın ve todoist sunucusunu ekleyin (dosyada zaten mcpServers varsa todoist girdisini onun içine ekleyin). C:\\path\\to\\uvx.exe yerine 2. adımdaki yolu (JSON'da her \ işaretini \\ olarak yazarak), <your token> yerine Todoist API token'ınızı yazın:
{
"mcpServers": {
"todoist": {
"command": "C:\\path\\to\\uvx.exe",
"args": [
"--from",
"https://github.com/kagankurubas/plugvan/releases/download/v0.1.0/plugvan_mcp-0.1.0-py3-none-any.whl",
"plugvan-mcp",
"todoist"
],
"env": {
"TODOIST_API_TOKEN": "<your token>"
}
}
}
}
- Claude Desktop'ı tamamen kapatıp yeniden başlatın.
B seçeneği: sanal ortama pip ile kurulum
Bu kurulum Windows terminalinden doğrulandı; aşağıdaki yapılandırmayla Claude Desktop'tan başlatılması henüz doğrulanmadı.
python -m venv C:\path\to\plugvan-venv
C:\path\to\plugvan-venv\Scripts\python.exe -m pip install https://github.com/kagankurubas/plugvan/releases/download/v0.1.0/plugvan_mcp-0.1.0-py3-none-any.whl
Ardından "command" olarak sanal ortamdaki plugvan-mcp.exe dosyasını kullanın (JSON'da yine \\ ile):
{
"mcpServers": {
"todoist": {
"command": "C:\\path\\to\\plugvan-venv\\Scripts\\plugvan-mcp.exe",
"args": ["todoist"],
"env": {
"TODOIST_API_TOKEN": "<your token>"
}
}
}
}
Kurulumu kontrol etme (isteğe bağlı)
C:\path\to\uvx.exe --from https://github.com/kagankurubas/plugvan/releases/download/v0.1.0/plugvan_mcp-0.1.0-py3-none-any.whl plugvan-mcp --version
C:\path\to\plugvan-venv\Scripts\plugvan-mcp.exe --version
Her ikisi de plugvan-mcp <sürüm> yazdırır, örneğin plugvan-mcp 0.1.0.
Yapılandırma ve güvenlik
TODOIST_API_TOKEN(zorunlu) yapılandırmanınenvbloğuna yazılır: Todoist Web ➔ Ayarlar ➔ Entegrasyonlar ➔ Geliştirici ➔ API belirtecinizi kopyalayın. Araç sonuçlarını Türkçe almak için aynı bloğa"PLUGVAN_LANG": "tr"ekleyin (varsayılanen).- Kurulan
plugvan-mcpkomutu.envdosyasını okumaz;.envdosyasını yalnızca klondakipython -m plugvan.todoistokur.
Uyarı:
envbloğundaki token,claude_desktop_config.jsoniçinde düz metin olarak saklanır; bu bir.envdosyasından ne daha iyi ne daha kötüdür. Bu dosyayı gizli tutun: kimseyle paylaşmayın ve bir depoya eklemeyin.
Klondan çalıştırma (geliştiriciler için)
Geliştirme için ya da sunucuyu kaynak kodundan çalıştırmak için aşağıdaki 1–3. adımları ve Kullanım Yöntemleri altındaki 1. Yöntem'i izleyin.
1. Projeyi Klonlayın
git clone https://github.com/kagankurubas/plugvan.git
cd plugvan
2. Sanal Ortam Oluşturun ve Paketleri Yükleyin
python -m venv venv
# Windows (PowerShell):
.\venv\Scripts\activate
# macOS / Linux:
source venv/bin/activate
pip install -e ".[test]"
3. Çevre Değişkenlerini Yapılandırın
.env.example dosyasını .env olarak kopyalayın:
cp .env.example .env
.env dosyanızı açıp kendi token ve anahtarlarınızı girin:
TODOIST_API_TOKEN=kendi_todoist_api_tokeniniz
# İsteğe bağlı: PLUGVAN_LANG=tr
Anahtarlarınızı Alma:
TODOIST_API_TOKEN: Todoist Web ➔ Ayarlar ➔ Entegrasyonlar ➔ Geliştirici ➔ API belirtecinizi kopyalayın.PLUGVAN_LANG(isteğe bağlı): araç sonuçlarının dili;en(varsayılan) veya Türkçe içintr.
Uyarı: 🔒 Güvenlik uyarıları
- Gizli Anahtar Yönetimi:
.envdosyası.gitignore'da tanımlıdır; bu dosyayı asla Git deposuna eklemeyin ve kimseyle paylaşmayın.
🛠️ Kullanım Yöntemleri
1. Yöntem: Claude Desktop ile Kullanım (MCP Sunucusu)
Claude Desktop uygulamanıza Todoist yeteneği kazandırmak için:
- Claude Desktop'ta Settings ➔ Developer ➔ Edit Config'i açın.
- Aşağıdaki yapılandırmayı ekleyin (
<REPO_PATH>yerine kendi proje yolunuzu yazın):
{
"mcpServers": {
"todoist": {
"command": "<REPO_PATH>\\venv\\Scripts\\python.exe",
"args": ["-m", "plugvan.todoist"],
"env": {
"PYTHONPATH": "<REPO_PATH>",
"PYTHONIOENCODING": "utf-8"
}
}
}
}
Araç sonuçlarını Türkçe almak için env bloğuna "PLUGVAN_LANG": "tr" ekleyin.
3. Claude Desktop'ı tamamen kapatıp yeniden başlatın. Artık Claude ile sohbet ederken doğrudan Todoist'e görev ekleyebilir, görevlerinizi listeleyebilir veya tamamlayabilirsiniz:
- "Bugün için tanımlı Todoist görevlerimi listele."
- "Yarın saat 15:00'e 'Proje Raporunu Teslim Et' başlıklı p2 görev ekle."
- "ID'si 6hM2... olan görevi kapat."
Tests / Testler
Projede birim ve entegrasyon testleri yer almaktadır:
# Tüm testleri çalıştırmak için:
pytest
# Detaylı çıktı ile çalıştırmak için:
pytest -v
📄 License / Lisans
This project is licensed under the MIT License.
Bu proje MIT Lisansı kapsamında lisanslanmıştır.
Metadata
Release files for plugvan-mcp 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| plugvan_mcp-0.1.1.tar.gz | 33.8 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| plugvan_mcp-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 70.2 kB
Release files / plugvan_mcp-0.1.1.tar.gz
| Download URL | plugvan_mcp-0.1.1.tar.gz |
|---|---|
| Size | 33.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e9a4377f34eaf9da5e2fab1cef18a2a7f13b4d4b2e63822c296a4825b75c4b3e
|
|
BLAKE2b-256 checksum How to use checksums |
6a298b1e34275cc507920a278aab19ec8a16844746fd99c8ccc2cec976f1229b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 20, 2026.
Transparency logRelease files / plugvan_mcp-0.1.1-py3-none-any.whl
| Download URL | plugvan_mcp-0.1.1-py3-none-any.whl |
|---|---|
| Size | 36.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d3d0510421c907d1a17d1ba213fa5738d11436238f3addc88c47f1163b3466d4
|
|
BLAKE2b-256 checksum How to use checksums |
1251f2f725943d53b2714ae5c0d29db00393571e1531110b28549274b7963711
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 20, 2026.
Transparency logSecurity for plugvan-mcp 0.1.1
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.
Attestation for plugvan_mcp-0.1.1.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 Oct 20, 2026.
Transparency logA 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.