Skip to main content
Glama

ArchiveBox API - A2A | AG-UI | MCP

PyPI - Version MCP Server PyPI - Downloads GitHub Repo stars GitHub forks GitHub contributors PyPI - License GitHub

GitHub last commit (by committer) GitHub pull requests GitHub closed pull requests GitHub issues

GitHub top language GitHub language count GitHub repo size GitHub repo file count (file type) PyPI - Wheel PyPI - Implementation

Version: 0.1.53

Übersicht

ArchiveBox API Python-Wrapper & Fast MCP-Server!

Dieses Repository bietet einen Python-Wrapper für die Interaktion mit der ArchiveBox-API und ermöglicht den programmatischen Zugriff auf Web-Archivierungsfunktionen. Es enthält einen Model Context Protocol (MCP)-Server für Agentic AI, erweitert um verschiedene Authentifizierungsmechanismen, Middleware für Beobachtbarkeit und Kontrolle sowie optional Eunomia-Autorisierung für richtlinienbasierte Zugriffskontrolle.

Beiträge sind willkommen!

Alle API-Antwortobjekte sind für den Antwortaufruf angepasst. Sie können auf Rückgabewerte im Format parent.value.nested_value zugreifen oder parent.json() verwenden, um die Antwort als Wörterbuch zu erhalten.

Funktionen:

  • Authentifizierung: Unterstützt mehrere Authentifizierungstypen, einschließlich keine (deaktiviert), statisch (interne Token), JWT, OAuth-Proxy, OIDC-Proxy und Remote-OAuth für externe Identitätsanbieter.

  • Middleware: Enthält Protokollierung, Zeitmessung, Ratenbegrenzung und Fehlerbehandlung für einen robusten Serverbetrieb.

  • Eunomia-Autorisierung: Optionale richtlinienbasierte Autorisierung mit eingebetteter oder Remote-Eunomia-Server-Integration.

  • Ressourcen: Bietet instance_config für die ArchiveBox-Konfiguration.

  • Prompts: Enthält cli_add_prompt für KI-gesteuerte Interaktionen.

API

API-Aufrufe:

  • Authentifizierung

  • Kernmodell (Snapshots, ArchiveResults, Tags)

  • CLI-Befehle (add, update, schedule, list, remove)

Wenn Ihr API-Aufruf nicht unterstützt wird, können Sie die Funktionalität erweitern, indem Sie benutzerdefinierte Endpunkte hinzufügen oder den vorhandenen Wrapper ändern.

Dies sind die derzeit unterstützten API-Endpunkte

MCP

Alle oben verfügbaren API-Aufrufe sind in MCP-Tools verpackt. Sie finden diese unten mit ihren Tool-Beschreibungen und dem zugehörigen Tag.

MCP-Tools

Funktionsname

Beschreibung

Tag(s)

get_api_token

Generiert ein API-Token für einen bestimmten Benutzernamen & Passwort.

authentication

check_api_token

Validiert ein API-Token, um sicherzustellen, dass es gültig und nicht abgelaufen ist.

authentication

get_snapshots

Ruft eine Liste von Snapshots ab.

core

get_snapshot

Ruft einen bestimmten Snapshot über abid oder id ab.

core

get_archiveresults

Listet alle ArchiveResult-Einträge auf, die diesen Filtern entsprechen.

core

get_tag

Ruft ein bestimmtes Tag über id oder abid ab.

core

get_any

Ruft einen bestimmten Snapshot, ArchiveResult oder Tag über abid ab.

core

cli_add

Führt den archivebox add-Befehl aus.

cli

cli_update

Führt den archivebox update-Befehl aus.

cli

cli_schedule

Führt den archivebox schedule-Befehl aus.

cli

cli_list

Führt den archivebox list-Befehl aus.

cli

cli_remove

Führt den archivebox remove-Befehl aus.

cli

A2A-Agent

Architektur:

---
config:
  layout: dagre
---
flowchart TB
 subgraph subGraph0["Agent Capabilities"]
        C["Agent"]
        B["A2A Server - Uvicorn/FastAPI"]
        D["MCP Tools"]
        F["Agent Skills"]
  end
    C --> D & F
    A["User Query"] --> B
    B --> C
    D --> E["Platform API"]

     C:::agent
     B:::server
     A:::server
    classDef server fill:#f9f,stroke:#333
    classDef agent fill:#bbf,stroke:#333,stroke-width:2px
    style B stroke:#000000,fill:#FFD600
    style D stroke:#000000,fill:#BBDEFB
    style F fill:#BBDEFB
    style A fill:#C8E6C9
    style subGraph0 fill:#FFF9C4

Diagramm der Komponenteninteraktion

sequenceDiagram
    participant User
    participant Server as A2A Server
    participant Agent as Agent
    participant Skill as Agent Skills
    participant MCP as MCP Tools

    User->>Server: Send Query
    Server->>Agent: Invoke Agent
    Agent->>Skill: Analyze Skills Available
    Skill->>Agent: Provide Guidance on Next Steps
    Agent->>MCP: Invoke Tool
    MCP-->>Agent: Tool Response Returned
    Agent-->>Agent: Return Results Summarized
    Agent-->>Server: Final Response
    Server-->>User: Output

Graph-Architektur

Dieser Agent verwendet pydantic-graph-Orchestrierung für intelligentes Routing und optimales Kontextmanagement.

---
title: Archivebox API Graph Agent
---
stateDiagram-v2
  [*] --> RouterNode: User Query
  RouterNode --> DomainNode: Classified Domain
  RouterNode --> [*]: Low confidence / Error
  DomainNode --> [*]: Domain Result
  • RouterNode: Ein schnelles, leichtgewichtiges LLM (z. B. nvidia/nemotron-3-super), das die Benutzeranfrage in eine der spezialisierten Domänen klassifiziert.

  • DomainNode: Der Ausführungsknoten. Für die ausgewählte Domäne setzt er dynamisch Umgebungsvariablen, um vorübergehend NUR die für diese Domäne relevanten Tools zu aktivieren, wodurch ein hochfokussierter Unteragent (z. B. gpt-4o) erstellt wird, um die Anfrage abzuschließen. Dies bewahrt den LLM-Kontext und verhindert Tool-Halluzinationen.

Verwendung

MCP

MCP-CLI

Kurzes Flag

Langes Flag

Beschreibung

-h

--help

Hilfeinformationen anzeigen

-t

--transport

Transportmethode: 'stdio', 'http' oder 'sse' [legacy] (Standard: stdio)

-s

--host

Host-Adresse für HTTP-Transport (Standard: 0.0.0.0)

-p

--port

Portnummer für HTTP-Transport (Standard: 8000)

--auth-type

Authentifizierungstyp: 'none', 'static', 'jwt', 'oauth-proxy', 'oidc-proxy', 'remote-oauth' (Standard: none)

--token-jwks-uri

JWKS-URI für JWT-Verifizierung

--token-issuer

Issuer für JWT-Verifizierung

--token-audience

Audience für JWT-Verifizierung

--oauth-upstream-auth-endpoint

Upstream-Autorisierungsendpunkt für OAuth-Proxy

--oauth-upstream-token-endpoint

Upstream-Token-Endpunkt für OAuth-Proxy

--oauth-upstream-client-id

Upstream-Client-ID für OAuth-Proxy

--oauth-upstream-client-secret

Upstream-Client-Secret für OAuth-Proxy

--oauth-base-url

Basis-URL für OAuth-Proxy

--oidc-config-url

OIDC-Konfigurations-URL

--oidc-client-id

OIDC-Client-ID

--oidc-client-secret

OIDC-Client-Secret

--oidc-base-url

Basis-URL für OIDC-Proxy

--remote-auth-servers

Kommagetrennte Liste von Autorisierungsservern für Remote-OAuth

--remote-base-url

Basis-URL für Remote-OAuth

--allowed-client-redirect-uris

Kommagetrennte Liste erlaubter Client-Redirect-URIs

--eunomia-type

Eunomia-Autorisierungstyp: 'none', 'embedded', 'remote' (Standard: none)

--eunomia-policy-file

Richtliniendatei für eingebettetes Eunomia (Standard: mcp_policies.json)

--eunomia-remote-url

URL für Remote-Eunomia-Server

Verwendung als MCP-Server

Der MCP-Server kann in zwei Modi ausgeführt werden: stdio (für lokale Tests) oder http (für Netzwerkzugriff). Um den Server zu starten, verwenden Sie die folgenden Befehle:

Ausführung im stdio-Modus (Standard):

archivebox-mcp --transport "stdio"

Ausführung im HTTP-Modus:

archivebox-mcp --transport "http" --host "0.0.0.0" --port "8000"

Grundlegende API-Verwendung

Token-Authentifizierung

#!/usr/bin/python
# coding: utf-8
import archivebox_api

archivebox_url = "<ARCHIVEBOX_URL>"
token = "<ARCHIVEBOX_TOKEN>"

client = archivebox_api.Api(
    url=archivebox_url,
    token=token
)

snapshots = client.get_snapshots()
print(f"Snapshots: {snapshots.json()}")

Basis-Authentifizierung

#!/usr/bin/python
# coding: utf-8
import archivebox_api

username = "<ARCHIVEBOX_USERNAME>"
password = "<ARCHIVEBOX_PASSWORD>"
archivebox_url = "<ARCHIVEBOX_URL>"

client = archivebox_api.Api(
    url=archivebox_url,
    username=username,
    password=password
)

snapshots = client.get_snapshots()
print(f"Snapshots: {snapshots.json()}")

API-Schlüssel-Authentifizierung

#!/usr/bin/python
# coding: utf-8
import archivebox_api

archivebox_url = "<ARCHIVEBOX_URL>"
api_key = "<ARCHIVEBOX_API_KEY>"

client = archivebox_api.Api(
    url=archivebox_url,
    api_key=api_key
)

snapshots = client.get_snapshots()
print(f"Snapshots: {snapshots.json()}")

SSL-Verifizierung

#!/usr/bin/python
# coding: utf-8
import archivebox_api

username = "<ARCHIVEBOX_USERNAME>"
password = "<ARCHIVEBOX_PASSWORD>"
archivebox_url = "<ARCHIVEBOX_URL>"

client = archivebox_api.Api(
    url=archivebox_url,
    username=username,
    password=password,
    verify=False
)

snapshots = client.get_snapshots()
print(f"Snapshots: {snapshots.json()}")

MCP-Server als Dienst bereitstellen

Der ArchiveBox MCP-Server kann mit Docker bereitgestellt werden, mit konfigurierbarer Authentifizierung, Middleware und Eunomia-Autorisierung.

Verwendung von Docker Run

docker pull archivebox/archivebox:latest

docker run -d \
  --name archivebox-mcp \
  -p 8004:8004 \
  -e HOST=0.0.0.0 \
  -e PORT=8004 \
  -e TRANSPORT=http \
  -e AUTH_TYPE=none \
  -e EUNOMIA_TYPE=none \
  -e ARCHIVEBOX_URL=https://yourinstance.archivebox.com \
  -e ARCHIVEBOX_USERNAME=user \
  -e ARCHIVEBOX_PASSWORD=pass \
  -e ARCHIVEBOX_TOKEN=token \
  -e ARCHIVEBOX_API_KEY=api_key \
  -e ARCHIVEBOX_SSL_VERIFY=False \
  archivebox/archivebox:latest

Für erweiterte Authentifizierung (z. B. JWT, OAuth-Proxy, OIDC-Proxy, Remote-OAuth) oder Eunomia fügen Sie die entsprechenden Umgebungsvariablen hinzu:

docker run -d \
  --name archivebox-mcp \
  -p 8004:8004 \
  -e HOST=0.0.0.0 \
  -e PORT=8004 \
  -e TRANSPORT=http \
  -e AUTH_TYPE=oidc-proxy \
  -e OIDC_CONFIG_URL=https://provider.com/.well-known/openid-configuration \
  -e OIDC_CLIENT_ID=your-client-id \
  -e OIDC_CLIENT_SECRET=your-client-secret \
  -e OIDC_BASE_URL=https://your-server.com \
  -e ALLOWED_CLIENT_REDIRECT_URIS=http://localhost:*,https://*.example.com/* \
  -e EUNOMIA_TYPE=embedded \
  -e EUNOMIA_POLICY_FILE=/app/mcp_policies.json \
  -e ARCHIVEBOX_URL=https://yourinstance.archivebox.com \
  -e ARCHIVEBOX_USERNAME=user \
  -e ARCHIVEBOX_PASSWORD=pass \
  -e ARCHIVEBOX_TOKEN=token \
  -e ARCHIVEBOX_API_KEY=api_key \
  -e ARCHIVEBOX_SSL_VERIFY=False \
  archivebox/archivebox:latest

Verwendung von Docker Compose

Erstellen Sie eine docker-compose.yml-Datei:

services:
  archivebox-mcp:
    image: archivebox/archivebox:latest
    environment:
      - HOST=0.0.0.0
      - PORT=8004
      - TRANSPORT=http
      - AUTH_TYPE=none
      - EUNOMIA_TYPE=none
      - ARCHIVEBOX_URL=https://yourinstance.archivebox.com
      - ARCHIVEBOX_USERNAME=user
      - ARCHIVEBOX_PASSWORD=pass
      - ARCHIVEBOX_TOKEN=token
      - ARCHIVEBOX_API_KEY=api_key
      - ARCHIVEBOX_SSL_VERIFY=False
    ports:
      - 8004:8004

Für erweiterte Setups mit Authentifizierung und Eunomia:

services:
  archivebox-mcp:
    image: archivebox/archivebox:latest
    environment:
      - HOST=0.0.0.0
      - PORT=8004
      - TRANSPORT=http
      - AUTH_TYPE=oidc-proxy
      - OIDC_CONFIG_URL=https://provider.com/.well-known/openid-configuration
      - OIDC_CLIENT_ID=your-client-id
      - OIDC_CLIENT_SECRET=your-client-secret
      - OIDC_BASE_URL=https://your-server.com
      - ALLOWED_CLIENT_REDIRECT_URIS=http://localhost:*,https://*.example.com/*
      - EUNOMIA_TYPE=embedded
      - EUNOMIA_POLICY_FILE=/app/mcp_policies.json
      - ARCHIVEBOX_URL=https://yourinstance.archivebox.com
      - ARCHIVEBOX_USERNAME=user
      - ARCHIVEBOX_PASSWORD=pass
      - ARCHIVEBOX_TOKEN=token
      - ARCHIVEBOX_API_KEY=api_key
      - ARCHIVEBOX_SSL_VERIFY=False
    ports:
      - 8004:8004
    volumes:
      - ./mcp_policies.json:/app/mcp_policies.json

Führen Sie den Dienst aus:

docker-compose up -d

Konfigurieren von mcp.json für KI-Integration

Empfohlen: Speichern Sie Geheimnisse in Umgebungsvariablen mit Nachschlagen in der JSON-Datei.

Nur zum Testen: Klartextspeicherung funktioniert ebenfalls, wird jedoch nicht empfohlen.

{
  "mcpServers": {
    "archivebox": {
      "command": "uv",
      "args": [
        "run",
        "--with",
        "archivebox-api",
        "archivebox-mcp",
        "--transport",
        "${TRANSPORT}",
        "--host",
        "${HOST}",
        "--port",
        "${PORT}",
        "--auth-type",
        "${AUTH_TYPE}",
        "--eunomia-type",
        "${EUNOMIA_TYPE}"
      ],
      "env": {
        "ARCHIVEBOX_URL": "https://yourinstance.archivebox.com",
        "ARCHIVEBOX_USERNAME": "user",
        "ARCHIVEBOX_PASSWORD": "pass",
        "ARCHIVEBOX_TOKEN": "token",
        "ARCHIVEBOX_API_KEY": "api_key",
        "ARCHIVEBOX_VERIFY": "False",
        "TOKEN_JWKS_URI": "${TOKEN_JWKS_URI}",
        "TOKEN_ISSUER": "${TOKEN_ISSUER}",
        "TOKEN_AUDIENCE": "${TOKEN_AUDIENCE}",
        "OAUTH_UPSTREAM_AUTH_ENDPOINT": "${OAUTH_UPSTREAM_AUTH_ENDPOINT}",
        "OAUTH_UPSTREAM_TOKEN_ENDPOINT": "${OAUTH_UPSTREAM_TOKEN_ENDPOINT}",
        "OAUTH_UPSTREAM_CLIENT_ID": "${OAUTH_UPSTREAM_CLIENT_ID}",
        "OAUTH_UPSTREAM_CLIENT_SECRET": "${OAUTH_UPSTREAM_CLIENT_SECRET}",
        "OAUTH_BASE_URL": "${OAUTH_BASE_URL}",
        "OIDC_CONFIG_URL": "${OIDC_CONFIG_URL}",
        "OIDC_CLIENT_ID": "${OIDC_CLIENT_ID}",
        "OIDC_CLIENT_SECRET": "${OIDC_CLIENT_SECRET}",
        "OIDC_BASE_URL": "${OIDC_BASE_URL}",
        "REMOTE_AUTH_SERVERS": "${REMOTE_AUTH_SERVERS}",
        "REMOTE_BASE_URL": "${REMOTE_BASE_URL}",
        "ALLOWED_CLIENT_REDIRECT_URIS": "${ALLOWED_CLIENT_REDIRECT_URIS}",
        "EUNOMIA_TYPE": "${EUNOMIA_TYPE}",
        "EUNOMIA_POLICY_FILE": "${EUNOMIA_POLICY_FILE}",
        "EUNOMIA_REMOTE_URL": "${EUNOMIA_REMOTE_URL}"
      },
      "timeout": 200000
    }
  }
}

CLI-Parameter

Der archivebox-mcp-Befehl unterstützt die folgenden CLI-Optionen zur Konfiguration:

  • --transport: Transportmethode (stdio, http, sse) [Standard: http]

  • --host: Host-Adresse für HTTP-Transport [Standard: 0.0.0.0]

  • --port: Portnummer für HTTP-Transport [Standard: 8000]

  • --auth-type: Authentifizierungstyp (none, static, jwt, oauth-proxy, oidc-proxy, remote-oauth) [Standard: none]

  • --token-jwks-uri: JWKS-URI für JWT-Verifizierung

  • --token-issuer: Issuer für JWT-Verifizierung

  • --token-audience: Audience für JWT-Verifizierung

  • --oauth-upstream-auth-endpoint: Upstream-Autorisierungsendpunkt für OAuth-Proxy

  • --oauth-upstream-token-endpoint: Upstream-Token-Endpunkt für OAuth-Proxy

  • --oauth-upstream-client-id: Upstream-Client-ID für OAuth-Proxy

  • --oauth-upstream-client-secret: Upstream-Client-Secret für OAuth-Proxy

  • --oauth-base-url: Basis-URL für OAuth-Proxy

  • --oidc-config-url: OIDC-Konfigurations-URL

  • --oidc-client-id: OIDC-Client-ID

  • --oidc-client-secret: OIDC-Client-Secret

  • --oidc-base-url: Basis-URL für OIDC-Proxy

  • --remote-auth-servers: Kommagetrennte Liste von Autorisierungsservern für Remote-OAuth

  • --remote-base-url: Basis-URL für Remote-OAuth

  • --allowed-client-redirect-uris: Kommagetrennte Liste erlaubter Client-Redirect-URIs

  • --eunomia-type: Eunomia-Autorisierungstyp (none, embedded, remote) [Standard: none]

  • --eunomia-policy-file: Richtliniendatei für eingebettetes Eunomia [Standard: mcp_policies.json]

  • --eunomia-remote-url: URL für Remote-Eunomia-Server

Middleware

Der MCP-Server enthält die folgende integrierte Middleware für erweiterte Funktionalität:

  • ErrorHandlingMiddleware: Bietet umfassende Fehlerprotokollierung und -transformation.

  • RateLimitingMiddleware: Begrenzt die Anforderungshäufigkeit mit einem Token-Bucket-Algorithmus (10 Anforderungen/Sekunde, Burst-Kapazität von 20).

  • TimingMiddleware: Verfolgt die Ausführungszeit von Anforderungen.

  • LoggingMiddleware: Protokolliert alle Anforderungen und Antworten zur Beobachtbarkeit.

Eunomia-Autorisierung

Der Server unterstützt optionale Eunomia-Autorisierung für richtlinienbasierte Zugriffskontrolle:

  • Deaktiviert (none): Keine Autorisierungsprüfungen.

  • Eingebettet (embedded): Führt einen eingebetteten Eunomia-Server mit einer lokalen Richtliniendatei aus (standardmäßig mcp_policies.json).

  • Remote (remote): Verbindet sich mit einem externen Eunomia-Server für zentralisierte Richtlinienentscheidungen.

So konfigurieren Sie Eunomia-Richtlinien:

# Initialize a default policy file
eunomia-mcp init

# Validate the policy file
eunomia-mcp validate mcp_policies.json

A2A-CLI

Endpunkte

  • Web-UI: http://localhost:8000/ (falls aktiviert)

  • A2A: http://localhost:8000/a2a (Discovery: /a2a/.well-known/agent.json)

  • AG-UI: http://localhost:8000/ag-ui (POST)

Kurzes Flag

Langes Flag

Beschreibung

-h

--help

Hilfeinformationen anzeigen

--host

Host, an den der Server gebunden werden soll (Standard: 0.0.0.0)

--port

Port, an den der Server gebunden werden soll (Standard: 9000)

--reload

Auto-Reload aktivieren

--provider

LLM-Anbieter: 'openai', 'anthropic', 'google', 'huggingface'

--model-id

LLM-Modell-ID (Standard: qwen3:4b)

--base-url

LLM-Basis-URL (für OpenAI-kompatible Anbieter)

Install Server
A
security – no known vulnerabilities
A
license - permissive license
-
quality - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Knuckles-Team/archivebox-api'

If you have feedback or need assistance with the MCP directory API, please join our Discord server