Skip to main content
Glama
hspanteon
by hspanteon

Panteon Timeline MCP Server 🚀

Ein MCP (Model Context Protocol) Server, der mit FastMCP erstellt wurde und KI-Assistenten (Antigravity, Claude Desktop, Cursor usw.) ermöglicht, Echtzeit-Aufgabendaten und Konversationsverlauf direkt von Panteon Timeline (https://timeline.panteon.no) abzurufen.


✨ Funktionen

  • Issue-ID extrahieren: Analysiert automatisch URL-Formate wie https://timeline.panteon.no/tasks#/list/15033/edit/5461 oder akzeptiert direkte Issue-IDs (5461).

  • Zweistufige API-Auflösung: Spiegelt die Logik der Browsererweiterung wider, indem die externe Issue-ID (5461) über API 1 in Panteons interne task_id aufgelöst wird und anschließend der vollständige Konversationsverlauf über API 2 abgerufen wird.

  • KI-optimierte Formatierung: Bietet strukturierten XML/Markdown-Kontext (<task_title>, <task_description>, <conversation_history>) für KI-Analyse, Zusammenfassung und Antwortentwurf.

  • Flexible Authentifizierung: Unterstützt JWT-Bearer-Tokens oder Cookie-Header über die .env-Dateikonfiguration oder Parameter pro Tool-Aufruf.


Related MCP server: ProofHub MCP Server

🛠️ Installation & Einrichtung

1. Abhängigkeiten installieren

Stellen Sie sicher, dass Python 3.10+ installiert ist, erstellen Sie dann die virtuelle Umgebung des Projekts oder verwenden Sie sie erneut und installieren Sie die Abhängigkeiten darin:

cd timeline-mcp
python3 -m venv .venv
.venv/bin/python -m pip install -r requirements.txt

2. Authentifizierung konfigurieren

Um geschützte Daten von timeline.panteon.no abzurufen, benötigt der MCP-Server ein Authentifizierungstoken aus Ihrer angemeldeten Browsersitzung.

  1. Kopieren Sie .env.example in .env:

    cp .env.example .env
  2. Öffnen Sie Google Chrome und melden Sie sich bei https://timeline.panteon.no an.

  3. Öffnen Sie Chrome DevTools (F12 oder Ctrl+Shift+I) -> navigieren Sie zum Tab Netzwerk.

  4. Aktualisieren Sie die Timeline-Aufgabenseite oder führen Sie eine beliebige Aktion aus.

  5. Klicken Sie auf eine beliebige Anfrage, die mit api/ beginnt (z. B. taskbyissue/... oder timeline).

  6. Kopieren Sie unter Anfrage-Header den Wert von Authorization (ohne das Präfix Bearer ) oder die rohe Cookie-Header-Zeichenfolge.

  7. Fügen Sie es in Ihre .env-Datei ein:

    PANTEON_BEARER_TOKEN=eyJ...
    # OR
    PANTEON_COOKIE=...

🤖 MCP-Clients konfigurieren

Für Claude Desktop / Antigravity / Cursor

Fügen Sie die folgende Konfiguration zu Ihrer MCP-Server-Konfigurationsdatei hinzu (z. B. claude_desktop_config.json):

{
  "mcpServers": {
    "timeline-mcp": {
      "command": "/home/harpalsinh.solanki@hs.local/projects/panteon/timeline-mcp/.venv/bin/python",
      "args": [
        "/home/harpalsinh.solanki@hs.local/projects/panteon/timeline-mcp/server.py"
      ],
      "env": {
        "PANTEON_BEARER_TOKEN": "your_jwt_token_here"
      }
    }
  }
}

Für Codex

Codex liest MCP-Server aus config.toml. Fügen Sie dies zu ~/.codex/config.toml für eine globale Einrichtung oder zu .codex/config.toml in diesem Repository für eine projektspezifische Einrichtung hinzu:

[mcp_servers.timeline_mcp]
command = "/home/harpalsinh.solanki@hs.local/projects/panteon/timeline-mcp/.venv/bin/python"
args = ["/home/harpalsinh.solanki@hs.local/projects/panteon/timeline-mcp/server.py"]
cwd = "/home/harpalsinh.solanki@hs.local/projects/panteon/timeline-mcp"
startup_timeout_sec = 20
tool_timeout_sec = 120

Wenn cwd auf dieses Repository gesetzt ist, lädt python-dotenv .env automatisch. Wenn Sie stattdessen Anmeldeinformationen aus der Shell übergeben möchten, fügen Sie hinzu:

env_vars = ["PANTEON_BEARER_TOKEN", "PANTEON_COOKIE", "PANTEON_TIMELINE_DIR"]

Nach dem Speichern der Konfiguration starten Sie Codex neu und führen Sie /mcp in der Codex-TUI aus, um zu bestätigen, dass timeline_mcp aktiv ist.


🧰 Verfügbare Tools

get_task_conversation

Ruft eine Aufgabe vollständig ab — ihren Beschreibungstext und den gesamten Kommentarverlauf — einschließlich jedes Bildes, das irgendwo eingebettet ist, und schreibt sie in eine Markdown-Datei.

  • Argumente:

    • issue_identifier (str) — z. B. "https://timeline.panteon.no/tasks#/list/15033/edit/5461" oder "5461". Muss eine reine numerische ID oder eine URL sein, die /edit/<id> enthält.

    • bearer_token / cookie (str, optional) — überschreibt die .env-Anmeldeinformationen pro Aufruf.

    • inline (bool, Standard false) — wenn true, wird das vollständige Aufgaben-Markdown zusätzlich zum Speichern an den Rückgabewert angehängt. Verwenden Sie dies für Clients, die den lokalen Dateisystempfad nicht lesen können.

  • Nebeneffekt: schreibt timeline/<issue_id>/task.md (Titel, Metadaten, Beschreibung, Kommentare). Die gespeicherte Datei wird auch als MCP-Ressource unter timeline://<issue_id>/task.md bereitgestellt, sodass Clients den vollständigen Inhalt nach einem Abruf über MCP lesen können.

  • Leere Aufgaben: Wenn sowohl Beschreibung als auch Kommentare leer sind, fragt das Tool nach optionalem, vom Benutzer bereitgestelltem Kontext, wenn der MCP-Client Elicitation unterstützt. Akzeptierte Eingaben werden unter ## User-Provided Context gespeichert; nicht unterstützte Clients behalten die normale Platzhalterausgabe.

  • Gibt eine kurze, menschenlesbare Zusammenfassung mit Issue-ID, Titel, Status und gespeichertem Dateipfad zurück — zum Beispiel:

    Issue #4117 — Label print
    Status:     open
    Saved to:   /abs/path/timeline/4117/task.md

    Der vollständige Aufgabentext, der gesamte Kommentarverlauf und jede Bild-URL werden in die gespeicherte Datei geschrieben. Lesen Sie diese Datei, um auf den vollständigen Inhalt zuzugreifen.

Bild-URLs, die in Kommentaren eingebettet sind (Markdown ![](…) oder HTML <img>), werden zu absoluten https://timeline.panteon.no/...-URLs aufgelöst. Nicht-Bild-Anhang-Links (z. B. .csv) werden ausgeschlossen.

Ausgabepfad

Die Datei wird unter <base>/timeline/<issue_id>/task.md geschrieben, wobei <base> ist:

  1. Die Umgebungsvariable PANTEON_TIMELINE_DIR, falls gesetzt (dieser MCP ist so konfiguriert, dass sie auf das duell-admin-Projektverzeichnis zeigt); andernfalls

  2. das aktuelle Arbeitsverzeichnis.


💻 Befehlszeilenverwendung

Die gleiche Abruflogik ist über die Shell über fetch_task.py verfügbar (Anmeldeinformationen stammen aus .env):

# By numeric ID or full URL
.venv/bin/python fetch_task.py 5461
.venv/bin/python fetch_task.py "https://timeline.panteon.no/tasks#/list/15033/edit/5461"

# Also print the rendered markdown to stdout
.venv/bin/python fetch_task.py 5461 --print

# Write under a specific project root instead of PANTEON_TIMELINE_DIR / cwd
.venv/bin/python fetch_task.py 5461 --base-dir /path/to/project

🧪 Entwicklung & Tests

# Install dev dependencies (adds pytest)
.venv/bin/python -m pip install -r requirements-dev.txt

# Run the unit tests — no network or credentials required
.venv/bin/python -m pytest

Tests befinden sich in tests/ und decken die reinen Parsing-/Rendering-Helfer sowie die Behandlung von Authentifizierungsfehlern ab (über eine gemockte HTTP-Sitzung).

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers