ArchiveBox API
ArchiveBox API - A2A | AG-UI | MCP
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_configfür die ArchiveBox-Konfiguration.Prompts: Enthält
cli_add_promptfü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) |
| Generiert ein API-Token für einen bestimmten Benutzernamen & Passwort. |
|
| Validiert ein API-Token, um sicherzustellen, dass es gültig und nicht abgelaufen ist. |
|
| Ruft eine Liste von Snapshots ab. |
|
| Ruft einen bestimmten Snapshot über abid oder id ab. |
|
| Listet alle ArchiveResult-Einträge auf, die diesen Filtern entsprechen. |
|
| Ruft ein bestimmtes Tag über id oder abid ab. |
|
| Ruft einen bestimmten Snapshot, ArchiveResult oder Tag über abid ab. |
|
| Führt den archivebox add-Befehl aus. |
|
| Führt den archivebox update-Befehl aus. |
|
| Führt den archivebox schedule-Befehl aus. |
|
| Führt den archivebox list-Befehl aus. |
|
| Führt den archivebox remove-Befehl aus. |
|
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:#FFF9C4Diagramm 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: OutputGraph-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 ResultRouterNode: 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:latestFü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:latestVerwendung 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:8004Fü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.jsonFühren Sie den Dienst aus:
docker-compose up -dKonfigurieren 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äßigmcp_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.jsonA2A-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) |
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