Skip to main content
Glama
DutyHub MCP Server
by K-ulucay

https://dutyhub.net

DutyHub MCP Server

Claude'un (Claude Desktop / Claude Code) DutyHub üzerinde otomatik olarak proje açmasını, task eklemesini, task'ları Yapılacak → Devam Ediyor → Tamamlandı arasında taşımasını, sprint yönetmesini ve yorum bırakmasını sağlayan MCP server'ı.

DutyHub backend'i (ASP.NET Core / .NET 8, PostgreSQL) REST + JSON API'si üzerinden çalışır.


Kurulum

cd dutyhub-mcp
npm install
npm run build

Related MCP server: ClickUp MCP Server

Yapılandırma (env değişkenleri)

Server, bir servis hesabı ile email/şifre kullanarak login olur ve 7 günlük JWT alır. Token süresi dolunca otomatik yeniden login eder. DutyHub'da ayrı API-key sistemi yoktur.

Değişken

Zorunlu

Varsayılan

Açıklama

DUTYHUB_EMAIL

✅

—

Servis hesabı email (örn. mcp-bot@dutyhub.net)

DUTYHUB_PASSWORD

✅

—

Servis hesabı şifresi

DUTYHUB_BASE_URL

—

https://api.dutyhub.net/api

API kök adresi

DUTYHUB_DEVICE_ID

—

mcp-server-1

Cihaz kimliği

DUTYHUB_DEVICE_INFO

—

Claude MCP

Cihaz açıklaması

⚠️ Şifreyi koda yazmayın, sohbete yapıştırmayın. Sadece aşağıdaki config'in env bloğunda tutun.

Claude Desktop'a ekleme

claude_desktop_config.json dosyasına (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "dutyhub": {
      "command": "node",
      "args": ["/TAM/YOL/dutyhub-mcp/dist/index.js"],
      "env": {
        "DUTYHUB_EMAIL": "mcp-bot@dutyhub.net",
        "DUTYHUB_PASSWORD": "buraya-sifre"
      }
    }
  }
}

Claude Desktop'ı yeniden başlatın. Araçlar otomatik görünür.

Claude Code'a ekleme

claude mcp add dutyhub \
  --env DUTYHUB_EMAIL=mcp-bot@dutyhub.net \
  --env DUTYHUB_PASSWORD=buraya-sifre \
  -- node /TAM/YOL/dutyhub-mcp/dist/index.js

Araçlar (Tools)

Projeler

  • list_projects — erişilebilir projeleri listele

  • get_project — proje detayı

  • create_project — yeni proje (New Project)

Sprintler

  • list_sprints — projenin sprintleri

  • create_sprint — yeni sprint

  • start_sprint — başlat (→ active)

  • complete_sprint — tamamla (→ completed)

Task'lar

  • list_tasks — projenin task'ları (board sayımıyla birlikte; opsiyonel status filtresi)

  • create_task — yeni task (New Task)

  • update_task_status — Yapılacak → Devam Ediyor → Tamamlandı + opsiyonel yorum

  • update_task — başlık/açıklama/öncelik/sprint/son tarih güncelle

  • delete_task — sil

Yorumlar

  • add_comment — task'a yorum bırak

  • list_comments — task'ın yorumları

Üyeler / Atama

  • list_project_members — proje üyeleri

  • assign_task — task'a kullanıcı ata


Örnek kullanım (Claude'a söyleyebilecekleriniz)

  • "DutyHub'da projelerimi listele."

  • "StormCorsairs projesine 'Ana menü müziği ekle' diye orta öncelikli bir task aç."

  • "Şu task'ı devam ediyor'a al."

  • "vfx setup task'ını tamamlandı yap ve 'Duman efektleri eklendi, test edildi' diye yorum bırak."

  • "Apex Empire için 'Sprint 2' adında yeni bir sprint oluştur ve başlat."


Önemli teknik notlar

  1. Status/priority normalizasyonu (kritik): DutyHub'da bu alanlar serbest metindir ve istemciler farklı değerler yazmıştır (pending/todo, completed/done, Active/in_progress vb.). Bu server yazarken ana uygulamanın kanonik değerlerini (pending/in_progress/completed, öncelik low/medium/high/urgent) gönderir; okurken tüm varyantları tek forma indirir. Türkçe girdiler (Yapılacak/Devam Ediyor/Tamamlandı, Düşük/Orta/Yüksek/Acil) de kabul edilir.

  2. Task güncelleme tam nesne ister: update_task_status ve update_task önce task'ı GET eder, alanı değiştirip tüm nesneyi PUT eder. title boş olamaz (backend 400 döner). Tamamlandı'ya alırken completed_at otomatik set edilir.

  3. Status filtresi server'da yok: list_tasks projeye göre çekip filtrelemeyi istemcide yapar.

  4. Tarihler ISO 8601 UTC: 2026-06-20 gibi yalın tarihler otomatik T00:00:00Z'ye çevrilir.

  5. Tek ortam production'dır. Denemeleri önce bir "Test" projesinde ve ayrı bir servis hesabıyla yapın.


Available Tools

16 tools
add_commentA

Bir task'a (veya başka bir varlığa) yorum ekler. Durum değiştirmeden sadece yorum bırakmak için.

Inputs: entity_id (required), comment_text (required), entity_type.

assign_taskC

Bir task'a bir kullanıcı atar (task_assignee). Atama ayrı tabloda tutulur.

Inputs: task_id (required), user_id (required).

complete_sprintB

Sprinti tamamlar/kapatır (status → completed).

Inputs: sprint_id (required).

create_projectB

Yeni bir DutyHub projesi oluşturur (UI'daki 'New Project').

Inputs: name (required), description, status, start_date, +2 more.

create_sprintC

Bir projede yeni sprint oluşturur.

Inputs: project_id (required), name (required), goal, start_date, +2 more.

create_taskB

Bir projeye yeni task ekler ('New Task'). project_id ve title zorunludur.

Inputs: project_id (required), title (required), description, status, +5 more.

delete_taskC

Bir task'ı siler.

Inputs: task_id (required).

get_projectB

Tek bir projenin detayını getirir.

Inputs: project_id (required).

list_commentsC

Bir task'ın (varlığın) yorumlarını listeler.

Inputs: entity_id (required), entity_type.

list_project_membersA

Bir projenin üyelerini listeler (task atamak için user_id bulmak amacıyla).

Inputs: project_id (required).

list_projectsA

Kullanıcının erişebildiği tüm DutyHub projelerini listeler. Task eklemeden önce doğru project_id'yi bulmak için kullanın.

Inputs: no named parameters.

list_sprintsB

Bir projenin sprintlerini listeler.

Inputs: project_id (required).

list_tasksA

Bir projenin task'larını listeler. Server-side status filtresi olmadığı için istemci tarafında filtreleriz. status_filter verilirse (pending/in_progress/completed) sadece o durumdakiler döner.

Inputs: project_id (required), status_filter.

start_sprintC

Sprinti başlatır (status → active).

Inputs: sprint_id (required).

update_taskA

Bir task'ın alanlarını günceller (başlık, açıklama, öncelik, sprint, son tarih). Sadece verilen alanlar değişir; gerisi korunur.

Inputs: task_id (required), title, description, priority, +2 more.

update_task_statusA

Bir task'ın durumunu değiştirir (Yapılacak → Devam Ediyor → Tamamlandı). Backend tam nesne beklediği için önce task'ı çeker, status'u günceller, gerekirse yorum ekler. 'completed' yapılırken completed_at otomatik set edilir.

Inputs: task_id (required), status (required), comment.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.4/5.0

    Scored across 16 tools

    Disambiguation5/5

    Each tool targets a distinct action on a specific entity (project, sprint, task, comment) with clear boundaries. For example, update_task and update_task_status are separate because they modify different aspects. No overlapping purposes.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern in snake_case (e.g., create_project, list_tasks, start_sprint). Verbs are imperative and nouns are plural for lists, singular for single items.

    Tool Count5/5

    16 tools cover the core operations for project, sprint, task, and comment management. The count is well-scoped for a domain-specific server, not excessive or insufficient.

    Completeness3/5

    Tasks have full CRUD (create, update, delete, list) plus status updates, but projects and sprints lack update and delete tools. Comments only have add and list, no delete. These gaps are notable but not severe.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers