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

Версия: 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

Имя функции

Описание

Тег(и)

get_api_token

Генерация API-токена для заданного имени пользователя и пароля.

authentication

check_api_token

Проверка API-токена на валидность и срок действия.

authentication

get_snapshots

Получение списка снимков.

core

get_snapshot

Получение конкретного снимка по abid или id.

core

get_archiveresults

Список всех записей ArchiveResult, соответствующих фильтрам.

core

get_tag

Получение конкретного тега по id или abid.

core

get_any

Получение конкретного снимка, ArchiveResult или тега по abid.

core

cli_add

Выполнение команды archivebox add.

cli

cli_update

Выполнение команды archivebox update.

cli

cli_schedule

Выполнение команды archivebox schedule.

cli

cli_list

Выполнение команды archivebox list.

cli

cli_remove

Выполнение команды archivebox remove.

cli

Агент 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 Result
  • RouterNode: Быстрая, легковесная 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.json

CLI 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

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