プロトタイプ · プレビュー版:公式レジストリのすべてのサーバーを掲載し、30分ごとに同期しています。レビューとアカウント機能は今後のステップで始まります。
PopNx MCPAIを使う人のためのMCPサーバー · やさしい言葉で解説

Task tracking (sessions, ETA, dashboard)

作者:amineutronバージョン 0.3.1i★ –iパソコンで動く
レジストリ名io.github.amineutron/mcp-tracking

インストール

概要

作者による説明(英語の原文)

Track long-running tasks in real time: sessions, steps, speed, ETA, HTTP API and TUI dashboard.

PopNx MCPの3つの柱

この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。

できること

このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。

  • 接続方法: パソコンで動く
  • トランスポート: stdio
  • カテゴリ: 文書・表計算・事務作業

インストール

使っているAIアプリを選んで、設定をコピーしてください。

インストールの前に

  • 基本チェック:1項目中1項目に合格
  • あなたのパソコンで、あなたのユーザーと同じ権限(ファイル、ネットワーク、アプリ)で動きます。
  • 自分で入力するもの: TRACKING_STATE_DIR, TRACKING_TOKEN_FILE

必要なもの

  • PyPIPythonのuvのインストール(uvxコマンドに必要)

どのアプリを使っていますか?

上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。

Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます

{
  "mcpServers": {
    "tracking": {
      "command": "uvx",
      "args": [
        "mcp-tracking"
      ],
      "env": {
        "TRACKING_STATE_DIR": "your-value",
        "TRACKING_TOKEN_FILE": "your-value"
      }
    }
  }
}

ターミナルでこれを実行します

claude mcp add tracking --env TRACKING_STATE_DIR=your-value --env TRACKING_TOKEN_FILE=your-value -- uvx mcp-tracking

動かす前に、空欄の値を入力してください。

Cursorで開く

または、設定を自分でコピーする

プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます

{
  "mcpServers": {
    "tracking": {
      "command": "uvx",
      "args": [
        "mcp-tracking"
      ],
      "env": {
        "TRACKING_STATE_DIR": "your-value",
        "TRACKING_TOKEN_FILE": "your-value"
      }
    }
  }
}

ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。

VS Codeで開く

または、設定を自分でコピーする

プロジェクトの .vscode/mcp.json に貼り付けます

{
  "servers": {
    "tracking": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "mcp-tracking"
      ],
      "env": {
        "TRACKING_STATE_DIR": "your-value",
        "TRACKING_TOKEN_FILE": "your-value"
      }
    }
  }
}

ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。

これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。

選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。

自分で入力する値

  • TRACKING_STATE_DIR env
    Directory of the shared state file (default: XDG state dir)
  • TRACKING_TOKEN_FILE env
    File holding the local token required by the HTTP API

この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。

できること

パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。

基本チェックi

誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月7日にチェック

  • ✓ 合格

    作者とリポジトリが一致

    レジストリ名は、リポジトリを所有するGitHubアカウント amineutron で確認済みです

  • … 未チェック

    今もメンテナンスされている

    このリポジトリはまだGitHubから読み取っていません

  • … 未チェック

    ライセンスがある

    このリポジトリはまだGitHubから読み取っていません

  • – 対象外

    エンドポイントが応答する

    これはパソコンで動くため、インターネット上のエンドポイントはありません

  • – 対象外

    OAuthでサインイン

    パソコンで動き、代わりにローカルの設定を使います

  • … 未チェック

    ツールの説明に隠れた指示がない

    パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです

文書・表計算・事務作業のほかのサーバーとの比較i

  • このカテゴリのほかの2181件のうち0%よりスターが多い
  • このカテゴリのほかの2181件のうち91%より最近レジストリに公開
  • 基本チェックの結果が、このカテゴリのほかの2181件のうち100%と同じかそれ以上

レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。

よくある質問

Task tracking (sessions, ETA, dashboard)は安全ですか?

当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。

どんなキーやコードが必要ですか?

レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。

パソコンで動きますか、それともクラウドですか?

あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。

今もメンテナンスされていますか?

GitHubリポジトリの最終更新は–、最新バージョン(0.3.1)がレジストリに届いたのは一昨日です。

どのアプリで使えますか?

Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにPython (uv)も必要です。

代わりに使えるものは?

同じカテゴリには:Agent-Native Calendar, Excel MCP Server, MCP Server for Excel

代わりの候補

同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。

カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i

Excel MCP Server

作者:haris-musa

Create and edit Excel files with AI: charts, PivotTables, formulas. No Excel needed.

パソコンで動く★ 4,276MIT6 日前更新
インストール

MCP Server for Excel

作者:sbroenne

Excel automation for AI - Sheets, Power Query, DAX, VBA, Tables, Ranges and more. Windows only.

パソコンで動く★ 847MIT3 日前更新
インストール

作者のREADME

READMEを開く

作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。

MCP Tracking

English summary. Local-first tracking of long-running tasks: an MCP server for Claude or Lyra, a small HTTP API on 127.0.0.1:8765 and a Textual terminal dashboard. Sessions have items, progress, logs and templates (download, machine, free, lyra_task, movie); pollers feed qBittorrent and Bazarr sessions automatically. Install: pip install . then mcp-tracking, mcp-tracking-api, mcp-tracking-ui. No cloud, no telemetry.

Serveur MCP de suivi en temps reel avec dashboard terminal. Permet a Claude/Lyra de tracker n'importe quelle operation longue ET alimente automatiquement les sessions depuis le media-server (qBittorrent, Bazarr, conversion DV).


Pourquoi c'est conçu pour des agents LLM

Un agent LLM (grand modèle de langage) qui lance une tâche longue (conversion, clone de VM, téléchargement) ne peut pas rester bloqué à la regarder, et il ne voit rien de ce qui se passe entre deux de ses tours. Ce serveur lui sert de mémoire de travail partagée :

  • Un bus de progression commun. L'agent, les scripts shell et les pollers écrivent dans les mêmes sessions (outils MCP ou API HTTP locale sur 127.0.0.1:8765) : l'agent lance la tâche, rend la main, et relit l'état plus tard avec tracking_get.
  • Des métriques calculées, pas devinées. Vitesse lissée sur 2 minutes, ETA, temps écoulé (metrics.py) : l'agent reçoit des chiffres au lieu d'extrapoler lui-même.
  • Une tâche muette se voit. Une session running sans mise à jour depuis 10 minutes est marquée stale : l'agent distingue « encore en cours » de « processus mort ».
  • Arrêter vise le bon processus. Une session peut porter le pid de son processus ; l'heure de démarrage relevée dans /proc évite de signaler un pid réutilisé par un autre programme. tracking_stop envoie SIGTERM et garde la session, tracking_kill envoie SIGKILL et la supprime.
  • Pas de mise à jour perdue. L'état est un fichier JSON local, protégé par un verrou flock et réécrit de façon atomique (storage.py) : plusieurs agents et scripts peuvent écrire en même temps.
  • Des gabarits par type de tâche (download, machine, movie, lyra_task, free) pour que chaque agent décrive son travail de la même façon.

Local-first et self-hosted : aucun cloud, aucune télémétrie, tout reste sur la machine (on-prem). Utilisé par Lyra, l'assistant vocal French-first, et par n'importe quel client MCP (Claude Code, Claude Desktop...).

Demo

Enregistree avec docs/demo/record.sh : server.py --test alimente quatre sessions simulees dans un repertoire d'etat temporaire (TRACKING_STATE_DIR), puis server.py --ui ouvre le dashboard dessus. Les sessions reelles ne sont pas touchees.

Sommaire

  • Pourquoi c'est conçu pour des agents LLM
  • Architecture
  • Installation
  • Services systemd
  • Lancement
  • Dashboard
  • Integration media-server
  • Outils MCP
  • Templates
  • Securite
  • Ajouter un template

Architecture

MCP/tracking/

server.py -- Serveur MCP (outils Claude/Lyra) + point d'entree --ui / --test api.py -- API HTTP locale (127.0.0.1:8765) pour les scripts externes mutations.py -- Mutations d'une session, partagees par api.py ET server.py (horodatage items, historique, niveaux de log, auto-completion) metrics.py -- Metriques derivees (vitesse, ETA, ecoule, stale) -- logique pure, calculees a la lecture, jamais stockees storage.py -- Persistence JSON atomique + verrou fichier + cache mtime + purge TTL models.py -- Modeles pydantic (TrackingSession, TrackingItem, LogEntry, ProgressPoint) templates.py -- Templates builtin + templates utilisateur (JSON) ui.py -- Dashboard Textual (TUI temps reel) + modales stop/kill sim.py -- Simulations de demo (server.py --test) poller.py -- Daemon polling qBittorrent (10s) + Bazarr (60s) tracking-api.service -- Unite systemd (systeme) pour api.py tracking-poller.service -- Unite systemd (systeme) pour poller.py install.sh / deploy.sh -- Installation initiale / redeploiement des services Makefile -- make test | smoke | deploy | ui tests/ -- unitaires (storage, metrics) + integration/ (API HTTP reelle)

Fichiers d'etat et configuration
FichierEmplacementSurcharge
tracking_state.json~/.local/state/tracking/TRACKING_STATE_DIR
poller_state.json~/.local/state/tracking/TRACKING_STATE_DIR
templates.json (templates utilisateur, optionnel)~/.config/tracking/TRACKING_TEMPLATES_FILE
credentials/*.cred (qBittorrent, Bazarr)a cote du code, gitignore--

Un ancien tracking_state.json a cote du code est migre automatiquement au premier demarrage (copie, jamais supprime).

Variables d'environnement de retention :

VariableDefautRole
TRACKING_TTL_DAYS7Purge des sessions done / error / paused
TRACKING_TTL_RUNNING_H24Purge des sessions running orphelines (plus mises a jour)
Flux de donnees complet
Claude/Lyra (outils MCP)

| v server.py ─────────────────────────────────────────┐ | qBittorrent API (poll 10s) | | | Bazarr API (poll 60s) ──> poller.py ──> api.py ──> mutations.py ──> storage.py ──> ~/.local/state/tracking/tracking_state.json | | | dv_webhook_server.py | v | | ui.py v | (rafraichit chaque seconde) dv_convert.py ──────────────────────────────────────> (metriques temps reel ffmpeg/dovi_tool)

Le fichier d'etat est ecrit a chaque modification via ecriture atomique (os.replace) sous verrou fichier (tracking_state.lock). Tous les processus (MCP, API, poller, dashboard) partagent cet unique fichier ; chaque lecture verifie le mtime pour invalider son cache.

Toute mutation (HTTP ou MCP) passe par mutations.py, qui garantit le meme comportement sur les deux chemins : started_at / finished_at poses sur les items et la session, historique de progression (fenetre glissante de 40 points), niveaux de log info / warn / error, auto-completion quand tous les items sont termines.

Metriques derivees

GET /sessions et tracking_get renvoient un bloc metrics calcule a la volee par metrics.py :

ChampSens
percentprogression (plafonnee a 100)
rate, rate_strvitesse sur les 120 dernieres secondes (2.0 MB/s, 30.0 u/min)
eta_seconds, eta_strtemps restant estime (session running uniquement)
elapsed_seconds, elapsed_strdepuis created_at jusqu'a finished_at ou maintenant
idle_seconds, stalestale = running sans mise a jour depuis 10 min (affiche dans le TUI)

Installation en une ligne

uvx mcp-tracking          # serveur MCP (stdio) ; avant publication : uvx --from git+https://github.com/amineutron/mcp-tracking mcp-tracking

uvx --from mcp-tracking mcp-tracking-api # API HTTP 127.0.0.1:8765 uvx --from mcp-tracking mcp-tracking-ui # tableau de bord terminal

Configuration Claude Desktop / Claude Code (mcpServers) :

{ "tracking": { "command": "uvx", "args": ["mcp-tracking"] } }

Installation

cd <dossier du dépôt>

Creer le venv et installer les dependances

uv venv .venv uv pip install "mcp[cli]>=1.0.0" "pydantic>=2.0" "textual>=0.80.0" "fastapi"

Le MCP est enregistre dans Claude Code (scope user) :

claude mcp list        # -> tracking: Connected

Pour reenregistrer :

claude mcp add tracking -s user -- \

/.venv/bin/python \ /server.py


Services systemd

Deux services tournent en permanence et se lancent au boot :

ServiceRolePort
tracking-api.serviceAPI HTTP locale pour scripts externes127.0.0.1:8765
tracking-poller.servicePoll qBittorrent (10s) + Bazarr (60s)--
Installation initiale et redeploiement
cd <dossier du dépôt>

./install.sh # premiere fois : venv + services (demande sudo) sudo ./deploy.sh # apres chaque mise a jour du code : stop, unites, restart, verif make smoke # sante rapide

Les instances MCP server.py deja ouvertes par des sessions Claude Code ne sont pas redemarrees par deploy.sh : reconnecter tracking via /mcp dans ces sessions.

Commandes utiles
# Etat

systemctl status tracking-api.service tracking-poller.service

Logs en direct

journalctl -fu tracking-poller.service journalctl -fu tracking-api.service

Redemarrage

sudo systemctl restart tracking-api.service tracking-poller.service

Test API

curl http://127.0.0.1:8765/health curl http://127.0.0.1:8765/sessions


Lancement

Dashboard (raccourci wofi)

Cherche "MCP Tracking" dans wofi/launcher. Lance le dashboard dans Kitty.

Dashboard (terminal)
# Toutes les sessions

/.venv/bin/python \ /server.py --ui

Filtre direct au lancement

.venv/bin/python server.py --ui --filter download .venv/bin/python server.py --ui --filter movie .venv/bin/python server.py --ui --filter errors

Via outil MCP (depuis Claude/Lyra)
open_tracking_ui()                             # toutes les sessions

open_tracking_ui(filter_template="lyra_task") # vue Lyra uniquement open_tracking_ui(filter_template="errors") # erreurs uniquement

Mode test (demo)
.venv/bin/python server.py --test

Simule 4 sessions en parallele : download, machine (12 noeuds), free, movie (pipeline DV complet).


Dashboard

Layout d'une session
[TEMPLATE]  Nom de la session  id:xxxxxxxx  (status)

[=============> ] 54.2% 27100 MB / 50000 MB champ_extra1: valeur | champ_extra2: valeur

[ok] item-1 100.0 GB -- termine [>] item-2 frame: 94231 / 172800 (54.5%) speed: 3.2x [ ] item-3 -- [!] item-4 erreur detail

Logs Erreurs 14:32:01 Message log 1 [!] item-4 14:32:04 Message log 2 14:32:08 ECHEC: details 14:32:07 Message log 3 --



Icones items
IconeStatutCouleur
[ ]pendinggris
[>]runningcyan
[ok]donevert
[!]errorrouge
Couleurs de session
CouleurStatut
cyanrunning
vertdone
rougeerror

冒頭だけを表示しています。続きはリポジトリで読めます

PopNxに聞く