ArchiveBox API
API de ArchiveBox - A2A | AG-UI | MCP
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_configpara la configuración de ArchiveBox.Prompts: Incluye
cli_add_promptpara 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) |
| Generar un token de API para un nombre de usuario y contraseña dados. |
|
| Validar un token de API para asegurarse de que es válido y no ha expirado. |
|
| Recuperar la lista de instantáneas. |
|
| Obtener una instantánea específica por abid o id. |
|
| Listar todas las entradas de ArchiveResult que coincidan con estos filtros. |
|
| Obtener una etiqueta específica por id o abid. |
|
| Obtener una instantánea, ArchiveResult o etiqueta específica por abid. |
|
| Ejecutar el comando archivebox add. |
|
| Ejecutar el comando archivebox update. |
|
| Ejecutar el comando archivebox schedule. |
|
| Ejecutar el comando archivebox list. |
|
| Ejecutar el comando archivebox remove. |
|
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:#FFF9C4Diagrama 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: OutputArquitectura 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 ResultRouterNode: 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:latestPara 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:latestUsando 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:8004Para 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.jsonEjecute el servicio:
docker-compose up -dConfigurar 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.jsonpor 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.jsonCLI 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
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