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

概要

ArchiveBox API Pythonラッパー & 高速MCPサーバー!

このリポジトリは、ArchiveBox APIと対話するためのPythonラッパーを提供し、Webアーカイブ機能へのプログラム的なアクセスを可能にします。エージェント型AIのためのModel Context Protocol (MCP) サーバーが含まれており、さまざまな認証メカニズム、可観測性と制御のためのミドルウェア、およびポリシーベースのアクセス制御のためのオプションのEunomia認可機能で強化されています。

貢献を歓迎します!

すべてのAPIレスポンスオブジェクトは、レスポンス呼び出し用にカスタマイズされています。戻り値には parent.value.nested_value 形式でアクセスするか、parent.json() を使用して辞書としてレスポンスを取得できます。

機能:

  • 認証: なし(無効)、静的(内部トークン)、JWT、OAuthプロキシ、OIDCプロキシ、および外部IDプロバイダー用のリモートOAuthを含む、複数の認証タイプをサポートします。

  • ミドルウェア: 堅牢なサーバー運用のためのログ記録、タイミング計測、レート制限、エラー処理が含まれています。

  • Eunomia認可: 組み込みまたはリモートのEunomiaサーバー統合による、オプションのポリシーベースの認可機能。

  • リソース: ArchiveBox設定用の instance_config を提供します。

  • プロンプト: AI主導の対話のための cli_add_prompt を含みます。

API

API呼び出し:

  • 認証

  • コアモデル (スナップショット、ArchiveResults、タグ)

  • 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

abidで特定のスナップショット、ArchiveResult、またはタグを取得します。

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' [レガシー] (デフォルト: 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

JWT検証用のJWKS URI

--token-issuer

JWT検証用の発行者

--token-audience

JWT検証用のオーディエンス

--oauth-upstream-auth-endpoint

OAuthプロキシ用のアップストリーム認可エンドポイント

--oauth-upstream-token-endpoint

OAuthプロキシ用のアップストリームトークンエンドポイント

--oauth-upstream-client-id

OAuthプロキシ用のアップストリームクライアントID

--oauth-upstream-client-secret

OAuthプロキシ用のアップストリームクライアントシークレット

--oauth-base-url

OAuthプロキシのベースURL

--oidc-config-url

OIDC設定URL

--oidc-client-id

OIDCクライアントID

--oidc-client-secret

OIDCクライアントシークレット

--oidc-base-url

OIDCプロキシのベースURL

--remote-auth-servers

リモートOAuth用の認可サーバーのカンマ区切りリスト

--remote-base-url

リモートOAuthのベースURL

--allowed-client-redirect-uris

許可されたクライアントリダイレクトURIのカンマ区切りリスト

--eunomia-type

Eunomia認可タイプ: 'none', 'embedded', 'remote' (デフォルト: none)

--eunomia-policy-file

組み込みEunomia用のポリシーファイル (デフォルト: mcp_policies.json)

--eunomia-remote-url

リモートEunomiaサーバーのURL

MCPサーバーとしての使用

MCPサーバーは、stdio(ローカルテスト用)または http(ネットワークアクセス用)の2つのモードで実行できます。サーバーを起動するには、次のコマンドを使用します。

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サーバーをサービスとしてデプロイ

ArchiveBox MCPサーバーは、設定可能な認証、ミドルウェア、Eunomia認可を使用してDockerでデプロイできます。

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プロキシ、OIDCプロキシ、リモート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

AI統合のための 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: JWT検証用のJWKS URI

  • --token-issuer: JWT検証用の発行者

  • --token-audience: JWT検証用のオーディエンス

  • --oauth-upstream-auth-endpoint: OAuthプロキシ用のアップストリーム認可エンドポイント

  • --oauth-upstream-token-endpoint: OAuthプロキシ用のアップストリームトークンエンドポイント

  • --oauth-upstream-client-id: OAuthプロキシ用のアップストリームクライアントID

  • --oauth-upstream-client-secret: OAuthプロキシ用のアップストリームクライアントシークレット

  • --oauth-base-url: OAuthプロキシのベースURL

  • --oidc-config-url: OIDC設定URL

  • --oidc-client-id: OIDCクライアントID

  • --oidc-client-secret: OIDCクライアントシークレット

  • --oidc-base-url: OIDCプロキシのベースURL

  • --remote-auth-servers: リモートOAuth用の認可サーバーのカンマ区切りリスト

  • --remote-base-url: リモートOAuthのベースURL

  • --allowed-client-redirect-uris: 許可されたクライアントリダイレクトURIのカンマ区切りリスト

  • --eunomia-type: Eunomia認可タイプ (none, embedded, remote) [デフォルト: none]

  • --eunomia-policy-file: 組み込みEunomia用のポリシーファイル [デフォルト: mcp_policies.json]

  • --eunomia-remote-url: リモートEunomiaサーバーのURL

ミドルウェア

MCPサーバーには、機能強化のために以下の組み込みミドルウェアが含まれています:

  • ErrorHandlingMiddleware: 包括的なエラーログ記録と変換を提供します。

  • RateLimitingMiddleware: トークンバケットアルゴリズムを使用してリクエスト頻度を制限します(10リクエスト/秒、バースト容量20)。

  • TimingMiddleware: リクエストの実行時間を追跡します。

  • LoggingMiddleware: 可観測性のためにすべてのリクエストとレスポンスをログに記録します。

Eunomia認可

サーバーは、ポリシーベースのアクセス制御のためにオプションのEunomia認可をサポートしています:

  • 無効 (none): 認可チェックを行いません。

  • 組み込み (embedded): ローカルポリシーファイル(デフォルトで mcp_policies.json)を使用して組み込みEunomiaサーバーを実行します。

  • リモート (remote): 一元化されたポリシー決定のために外部Eunomiaサーバーに接続します。

Eunomiaポリシーを設定するには:

# Initialize a default policy file
eunomia-mcp init

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

A2A CLI

エンドポイント

  • Web UI: 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

LLMモデルID (デフォルト: qwen3:4b)

--base-url

LLMベースURL (OpenAI互換プロバイダー用)

--api-key

LLM APIキー

| | --mcp-url | MCPサーバーURL (デフォルト: http://localhost:8000/mcp) | | | --web | Pydantic AI Web UIを有効にする | False (環境変数: ENABLE_WEB_UI) |

Pythonパッケージのインストール

python -m pip install archivebox-api[all]

リポジトリオーナー

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