ArchiveBox API
ArchiveBox API - A2A | AG-UI | MCP
Версия: 0.1.53
Обзор
Python-обертка для ArchiveBox API и быстрый MCP-сервер!
Этот репозиторий предоставляет Python-обертку для взаимодействия с API ArchiveBox, обеспечивая программный доступ к функциям веб-архивирования. Он включает сервер Model Context Protocol (MCP) для агентского ИИ, дополненный различными механизмами аутентификации, промежуточным ПО для наблюдаемости и контроля, а также опциональной авторизацией Eunomia для контроля доступа на основе политик.
Вклад приветствуется!
Все объекты ответов API адаптированы для вызова ответа. Вы можете получить доступ к возвращаемым значениям в формате parent.value.nested_value или использовать parent.json(), чтобы получить ответ в виде словаря.
Функции:
Аутентификация: Поддерживает несколько типов аутентификации, включая отсутствие (отключено), статическую (внутренние токены), JWT, OAuth Proxy, OIDC Proxy и Remote OAuth для внешних поставщиков идентификации.
Промежуточное ПО (Middleware): Включает логирование, замеры времени, ограничение частоты запросов (rate limiting) и обработку ошибок для надежной работы сервера.
Авторизация Eunomia: Опциональная авторизация на основе политик с интеграцией встроенного или удаленного сервера Eunomia.
Ресурсы: Предоставляет
instance_configдля конфигурации ArchiveBox.Промпты: Включает
cli_add_promptдля взаимодействий на базе ИИ.
API
Вызовы API:
Аутентификация
Основная модель (Снимки, Результаты архивирования, Теги)
Команды CLI (add, update, schedule, list, remove)
Если ваш вызов API не поддерживается, вы можете расширить функциональность, добавив пользовательские эндпоинты или изменив существующую обертку.
Здесь представлены текущие поддерживаемые эндпоинты API
MCP
Все доступные выше вызовы API обернуты в инструменты MCP. Вы можете найти их ниже с описаниями инструментов и связанными тегами.
Инструменты MCP
Имя функции | Описание | Тег(и) |
| Генерация API-токена для заданного имени пользователя и пароля. |
|
| Проверка API-токена на валидность и срок действия. |
|
| Получение списка снимков. |
|
| Получение конкретного снимка по abid или id. |
|
| Список всех записей ArchiveResult, соответствующих фильтрам. |
|
| Получение конкретного тега по id или abid. |
|
| Получение конкретного снимка, ArchiveResult или тега по abid. |
|
| Выполнение команды archivebox add. |
|
| Выполнение команды archivebox update. |
|
| Выполнение команды archivebox schedule. |
|
| Выполнение команды archivebox list. |
|
| Выполнение команды archivebox remove. |
|
Агент A2A
Архитектура:
---
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Диаграмма взаимодействия компонентов
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Графовая архитектура
Этот агент использует оркестрацию pydantic-graph для интеллектуальной маршрутизации и оптимального управления контекстом.
---
title: Archivebox API Graph Agent
---
stateDiagram-v2
[*] --> RouterNode: User Query
RouterNode --> DomainNode: Classified Domain
RouterNode --> [*]: Low confidence / Error
DomainNode --> [*]: Domain ResultRouterNode: Быстрая, легковесная LLM (например,
nvidia/nemotron-3-super), которая классифицирует запрос пользователя по одному из специализированных доменов.DomainNode: Узел-исполнитель. Для выбранного домена он динамически устанавливает переменные окружения, чтобы временно включить ТОЛЬКО инструменты, относящиеся к этому домену, создавая узкоспециализированного субагента (например,
gpt-4o) для выполнения запроса. Это сохраняет контекст LLM и предотвращает галлюцинации инструментов.
Использование
MCP
MCP CLI
Короткий флаг | Длинный флаг | Описание |
-h | --help | Отобразить справочную информацию |
-t | --transport | Метод транспорта: 'stdio', 'http' или 'sse' [legacy] (по умолчанию: stdio) |
-s | --host | Адрес хоста для транспорта HTTP (по умолчанию: 0.0.0.0) |
-p | --port | Номер порта для транспорта HTTP (по умолчанию: 8000) |
--auth-type | Тип аутентификации: 'none', 'static', 'jwt', 'oauth-proxy', 'oidc-proxy', 'remote-oauth' (по умолчанию: none) | |
--token-jwks-uri | URI JWKS для проверки JWT | |
--token-issuer | Эмитент для проверки JWT | |
--token-audience | Аудитория для проверки JWT | |
--oauth-upstream-auth-endpoint | Эндпоинт авторизации вышестоящего уровня для OAuth Proxy | |
--oauth-upstream-token-endpoint | Эндпоинт токена вышестоящего уровня для OAuth Proxy | |
--oauth-upstream-client-id | ID клиента вышестоящего уровня для OAuth Proxy | |
--oauth-upstream-client-secret | Секрет клиента вышестоящего уровня для OAuth Proxy | |
--oauth-base-url | Базовый URL для OAuth Proxy | |
--oidc-config-url | URL конфигурации OIDC | |
--oidc-client-id | ID клиента OIDC | |
--oidc-client-secret | Секрет клиента OIDC | |
--oidc-base-url | Базовый URL для OIDC Proxy | |
--remote-auth-servers | Список серверов авторизации для Remote OAuth через запятую | |
--remote-base-url | Базовый URL для Remote OAuth | |
--allowed-client-redirect-uris | Список разрешенных URI перенаправления клиента через запятую | |
--eunomia-type | Тип авторизации Eunomia: 'none', 'embedded', 'remote' (по умолчанию: none) | |
--eunomia-policy-file | Файл политики для встроенного Eunomia (по умолчанию: mcp_policies.json) | |
--eunomia-remote-url | URL для удаленного сервера Eunomia |
Использование в качестве MCP-сервера
MCP-сервер может работать в двух режимах: stdio (для локального тестирования) или http (для сетевого доступа). Чтобы запустить сервер, используйте следующие команды:
Запуск в режиме stdio (по умолчанию):
archivebox-mcp --transport "stdio"Запуск в режиме HTTP:
archivebox-mcp --transport "http" --host "0.0.0.0" --port "8000"Базовое использование API
Аутентификация по токену
#!/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()}")Базовая аутентификация
#!/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-ключу
#!/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
#!/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-сервера как службы
MCP-сервер ArchiveBox можно развернуть с помощью Docker с настраиваемой аутентификацией, промежуточным ПО и авторизацией Eunomia.
Использование 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Для расширенной аутентификации (например, JWT, OAuth Proxy, OIDC Proxy, Remote OAuth) или Eunomia добавьте соответствующие переменные окружения:
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Использование Docker Compose
Создайте файл 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Для расширенных настроек с аутентификацией и 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Запустите службу:
docker-compose up -dНастройка mcp.json для интеграции с ИИ
Рекомендуется: хранить секреты в переменных окружения с поиском в JSON-файле.
Только для тестирования: хранение в виде обычного текста также будет работать, хотя это не рекомендуется.
{
"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
Команда archivebox-mcp поддерживает следующие параметры CLI для конфигурации:
--transport: Метод транспорта (stdio,http,sse) [по умолчанию:http]--host: Адрес хоста для транспорта HTTP [по умолчанию:0.0.0.0]--port: Номер порта для транспорта HTTP [по умолчанию:8000]--auth-type: Тип аутентификации (none,static,jwt,oauth-proxy,oidc-proxy,remote-oauth) [по умолчанию:none]--token-jwks-uri: URI JWKS для проверки JWT--token-issuer: Эмитент для проверки JWT--token-audience: Аудитория для проверки JWT--oauth-upstream-auth-endpoint: Эндпоинт авторизации вышестоящего уровня для OAuth Proxy--oauth-upstream-token-endpoint: Эндпоинт токена вышестоящего уровня для OAuth Proxy--oauth-upstream-client-id: ID клиента вышестоящего уровня для OAuth Proxy--oauth-upstream-client-secret: Секрет клиента вышестоящего уровня для OAuth Proxy--oauth-base-url: Базовый URL для OAuth Proxy--oidc-config-url: URL конфигурации OIDC--oidc-client-id: ID клиента OIDC--oidc-client-secret: Секрет клиента OIDC--oidc-base-url: Базовый URL для OIDC Proxy--remote-auth-servers: Список серверов авторизации для Remote OAuth через запятую--remote-base-url: Базовый URL для Remote OAuth--allowed-client-redirect-uris: Список разрешенных URI перенаправления клиента через запятую--eunomia-type: Тип авторизации Eunomia (none,embedded,remote) [по умолчанию:none]--eunomia-policy-file: Файл политики для встроенного Eunomia [по умолчанию:mcp_policies.json]--eunomia-remote-url: URL для удаленного сервера Eunomia
Промежуточное ПО (Middleware)
MCP-сервер включает следующее встроенное промежуточное ПО для расширенной функциональности:
ErrorHandlingMiddleware: Обеспечивает комплексное логирование и преобразование ошибок.
RateLimitingMiddleware: Ограничивает частоту запросов с помощью алгоритма маркерной корзины (10 запросов/секунду, емкость всплеска 20).
TimingMiddleware: Отслеживает время выполнения запросов.
LoggingMiddleware: Логирует все запросы и ответы для наблюдаемости.
Авторизация Eunomia
Сервер поддерживает опциональную авторизацию Eunomia для контроля доступа на основе политик:
Отключено (
none): Проверки авторизации отсутствуют.Встроенная (
embedded): Запускает встроенный сервер Eunomia с локальным файлом политики (по умолчаниюmcp_policies.json).Удаленная (
remote): Подключается к внешнему серверу Eunomia для централизованных решений по политике.
Для настройки политик Eunomia:
# Initialize a default policy file
eunomia-mcp init
# Validate the policy file
eunomia-mcp validate mcp_policies.jsonCLI A2A
Эндпоинты
Веб-интерфейс:
http://localhost:8000/(если включен)A2A:
http://localhost:8000/a2a(Обнаружение:/a2a/.well-known/agent.json)AG-UI:
http://localhost:8000/ag-ui(POST)
Короткий флаг | Длинный флаг | Описание |
-h | --help | Отобразить справочную информацию |
--host | Хост для привязки сервера (по умолчанию: 0.0.0.0) | |
--port | Порт для привязки сервера (по умолчанию: 9000) | |
--reload | Включить автоперезагрузку | |
--provider | Провайдер LLM: 'openai', 'anthropic', 'google', 'huggingface' | |
--model-id | ID модели LLM (по умолчанию: qwen3:4b) | |
--base-url | Базовый URL LLM (для провайдеров, совместимых с OpenAI) | |
--api |
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