Skip to main content
Glama

API de ArchiveBox - 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

Versión: 0.1.53

Descripción general

¡Envoltorio de Python para la API de ArchiveBox y servidor MCP rápido!

Este repositorio proporciona un envoltorio de Python para interactuar con la API de ArchiveBox, permitiendo el acceso programático a la funcionalidad de archivado web. Incluye un servidor de Protocolo de Contexto de Modelo (MCP) para IA Agéntica, mejorado con varios mecanismos de autenticación, middleware para observabilidad y control, y autorización Eunomia opcional para el control de acceso basado en políticas.

¡Las contribuciones son bienvenidas!

Todos los objetos de respuesta de la API están personalizados para la llamada de respuesta. Puede acceder a los valores de retorno en un formato parent.value.nested_value, o usar parent.json() para obtener la respuesta como un diccionario.

Características:

  • Autenticación: Admite múltiples tipos de autenticación, incluyendo ninguna (deshabilitada), estática (tokens internos), JWT, Proxy OAuth, Proxy OIDC y OAuth remoto para proveedores de identidad externos.

  • Middleware: Incluye registro, temporización, limitación de tasa y manejo de errores para una operación robusta del servidor.

  • Autorización Eunomia: Autorización opcional basada en políticas con integración de servidor Eunomia integrado o remoto.

  • Recursos: Proporciona instance_config para la configuración de ArchiveBox.

  • Prompts: Incluye cli_add_prompt para interacciones impulsadas por IA.

API

Llamadas a la API:

  • Autenticación

  • Modelo central (Instantáneas, Resultados de archivo, Etiquetas)

  • Comandos CLI (añadir, actualizar, programar, listar, eliminar)

Si su llamada a la API no es compatible, puede extender la funcionalidad añadiendo puntos finales personalizados o modificando el envoltorio existente.

Estos son los puntos finales de la API admitidos actualmente

MCP

Todas las llamadas a la API disponibles anteriormente están envueltas en herramientas MCP. Puede encontrarlas a continuación con sus descripciones de herramienta y etiqueta asociada.

Herramientas MCP

Nombre de la función

Descripción

Etiqueta(s)

get_api_token

Generar un token de API para un nombre de usuario y contraseña dados.

authentication

check_api_token

Validar un token de API para asegurarse de que es válido y no ha expirado.

authentication

get_snapshots

Recuperar la lista de instantáneas.

core

get_snapshot

Obtener una instantánea específica por abid o id.

core

get_archiveresults

Listar todas las entradas de ArchiveResult que coincidan con estos filtros.

core

get_tag

Obtener una etiqueta específica por id o abid.

core

get_any

Obtener una instantánea, ArchiveResult o etiqueta específica por abid.

core

cli_add

Ejecutar el comando archivebox add.

cli

cli_update

Ejecutar el comando archivebox update.

cli

cli_schedule

Ejecutar el comando archivebox schedule.

cli

cli_list

Ejecutar el comando archivebox list.

cli

cli_remove

Ejecutar el comando archivebox remove.

cli

Agente A2A

Arquitectura:

---
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

Diagrama de interacción de componentes

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

Arquitectura de grafos

Este agente utiliza la orquestación pydantic-graph para un enrutamiento inteligente y una gestión óptima del contexto.

---
title: Archivebox API Graph Agent
---
stateDiagram-v2
  [*] --> RouterNode: User Query
  RouterNode --> DomainNode: Classified Domain
  RouterNode --> [*]: Low confidence / Error
  DomainNode --> [*]: Domain Result
  • RouterNode: Un LLM rápido y ligero (p. ej., nvidia/nemotron-3-super) que clasifica la consulta del usuario en uno de los dominios especializados.

  • DomainNode: El nodo ejecutor. Para el dominio seleccionado, establece dinámicamente variables de entorno para habilitar temporalmente SOLO las herramientas relevantes para ese dominio, creando un subagente altamente enfocado (p. ej., gpt-4o) para completar la solicitud. Esto preserva el contexto del LLM y evita la alucinación de herramientas.

Uso

MCP

CLI de MCP

Bandera corta

Bandera larga

Descripción

-h

--help

Mostrar información de ayuda

-t

--transport

Método de transporte: 'stdio', 'http' o 'sse' [legado] (predeterminado: stdio)

-s

--host

Dirección de host para transporte HTTP (predeterminado: 0.0.0.0)

-p

--port

Número de puerto para transporte HTTP (predeterminado: 8000)

--auth-type

Tipo de autenticación: 'none', 'static', 'jwt', 'oauth-proxy', 'oidc-proxy', 'remote-oauth' (predeterminado: none)

--token-jwks-uri

URI JWKS para verificación JWT

--token-issuer

Emisor para verificación JWT

--token-audience

Audiencia para verificación JWT

--oauth-upstream-auth-endpoint

Punto final de autorización ascendente para Proxy OAuth

--oauth-upstream-token-endpoint

Punto final de token ascendente para Proxy OAuth

--oauth-upstream-client-id

ID de cliente ascendente para Proxy OAuth

--oauth-upstream-client-secret

Secreto de cliente ascendente para Proxy OAuth

--oauth-base-url

URL base para Proxy OAuth

--oidc-config-url

URL de configuración OIDC

--oidc-client-id

ID de cliente OIDC

--oidc-client-secret

Secreto de cliente OIDC

--oidc-base-url

URL base para Proxy OIDC

--remote-auth-servers

Lista separada por comas de servidores de autorización para OAuth remoto

--remote-base-url

URL base para OAuth remoto

--allowed-client-redirect-uris

Lista separada por comas de URIs de redirección de cliente permitidas

--eunomia-type

Tipo de autorización Eunomia: 'none', 'embedded', 'remote' (predeterminado: none)

--eunomia-policy-file

Archivo de política para Eunomia integrado (predeterminado: mcp_policies.json)

--eunomia-remote-url

URL para servidor Eunomia remoto

Uso como servidor MCP

El servidor MCP se puede ejecutar en dos modos: stdio (para pruebas locales) o http (para acceso en red). Para iniciar el servidor, utilice los siguientes comandos:

Ejecutar en modo stdio (predeterminado):

archivebox-mcp --transport "stdio"

Ejecutar en modo HTTP:

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

Uso básico de la API

Autenticación por token

#!/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()}")

Autenticación básica

#!/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()}")

Autenticación por clave de API

#!/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()}")

Verificación SSL

#!/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()}")

Desplegar el servidor MCP como servicio

El servidor MCP de ArchiveBox se puede desplegar usando Docker, con autenticación, middleware y autorización Eunomia configurables.

Usando 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

Para autenticación avanzada (p. ej., JWT, Proxy OAuth, Proxy OIDC, OAuth remoto) o Eunomia, añada las variables de entorno relevantes:

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

Usando Docker Compose

Cree un archivo docker-compose.yml:

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

Para configuraciones avanzadas con autenticación y 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

Ejecute el servicio:

docker-compose up -d

Configurar mcp.json para integración con IA

Recomendado: Almacene secretos en variables de entorno con búsqueda en el archivo JSON.

Solo para pruebas: El almacenamiento en texto plano también funcionará, aunque no se recomienda.

{
  "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
    }
  }
}

Parámetros CLI

El comando archivebox-mcp admite las siguientes opciones CLI para la configuración:

  • --transport: Método de transporte (stdio, http, sse) [predeterminado: http]

  • --host: Dirección de host para transporte HTTP [predeterminado: 0.0.0.0]

  • --port: Número de puerto para transporte HTTP [predeterminado: 8000]

  • --auth-type: Tipo de autenticación (none, static, jwt, oauth-proxy, oidc-proxy, remote-oauth) [predeterminado: none]

  • --token-jwks-uri: URI JWKS para verificación JWT

  • --token-issuer: Emisor para verificación JWT

  • --token-audience: Audiencia para verificación JWT

  • --oauth-upstream-auth-endpoint: Punto final de autorización ascendente para Proxy OAuth

  • --oauth-upstream-token-endpoint: Punto final de token ascendente para Proxy OAuth

  • --oauth-upstream-client-id: ID de cliente ascendente para Proxy OAuth

  • --oauth-upstream-client-secret: Secreto de cliente ascendente para Proxy OAuth

  • --oauth-base-url: URL base para Proxy OAuth

  • --oidc-config-url: URL de configuración OIDC

  • --oidc-client-id: ID de cliente OIDC

  • --oidc-client-secret: Secreto de cliente OIDC

  • --oidc-base-url: URL base para Proxy OIDC

  • --remote-auth-servers: Lista separada por comas de servidores de autorización para OAuth remoto

  • --remote-base-url: URL base para OAuth remoto

  • --allowed-client-redirect-uris: Lista separada por comas de URIs de redirección de cliente permitidas

  • --eunomia-type: Tipo de autorización Eunomia (none, embedded, remote) [predeterminado: none]

  • --eunomia-policy-file: Archivo de política para Eunomia integrado [predeterminado: mcp_policies.json]

  • --eunomia-remote-url: URL para servidor Eunomia remoto

Middleware

El servidor MCP incluye el siguiente middleware integrado para una funcionalidad mejorada:

  • ErrorHandlingMiddleware: Proporciona registro y transformación de errores completos.

  • RateLimitingMiddleware: Limita la frecuencia de solicitudes con un algoritmo de token bucket (10 solicitudes/segundo, capacidad de ráfaga de 20).

  • TimingMiddleware: Rastrea el tiempo de ejecución de las solicitudes.

  • LoggingMiddleware: Registra todas las solicitudes y respuestas para observabilidad.

Autorización Eunomia

El servidor admite autorización Eunomia opcional para el control de acceso basado en políticas:

  • Deshabilitado (none): Sin comprobaciones de autorización.

  • Integrado (embedded): Ejecuta un servidor Eunomia integrado con un archivo de política local (mcp_policies.json por defecto).

  • Remoto (remote): Se conecta a un servidor Eunomia externo para decisiones de política centralizadas.

Para configurar las políticas de Eunomia:

# Initialize a default policy file
eunomia-mcp init

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

CLI A2A

Puntos finales

  • Web UI: http://localhost:8000/ (si está habilitado)

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

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

Bandera corta

Bandera larga

Descripción

-h

--help

Mostrar información de ayuda

--host

Host al que vincular el servidor (predeterminado: 0.0.0.0)

--port

Puerto al que vincular el servidor (predeterminado: 9000)

--reload

Habilitar recarga automática

--provider

Proveedor LLM: 'openai', 'anthropic', 'google', 'huggingface'

--model-id

ID de modelo LLM (predeterminado: qwen3:4b)

--base-url

URL base LLM (para proveedores compatibles con OpenAI)

--api-key

Clave de API LLM

| | --mcp-url | URL del servidor MCP (predeterminado: http://localhost:8000/mcp) | | | --web | Habilitar Pydantic AI Web UI | False (Env: ENABLE_WEB_UI) |

Instalar paquete de Python

python -m pip install archivebox-api[all]

Propietarios del repositorio

GitHub followers

GitHub User's stars

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