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 封装库,实现了对网络归档功能的程序化访问。它包含一个用于 Agentic AI 的模型上下文协议 (MCP) 服务器,并增强了多种身份验证机制、用于可观测性和控制的中间件,以及可选的用于基于策略访问控制的 Eunomia 授权。

欢迎贡献代码!

所有 API 响应对象均针对响应调用进行了定制。您可以通过 parent.value.nested_value 格式访问返回值,或者使用 parent.json() 将响应获取为字典。

特性:

  • 身份验证:支持多种身份验证类型,包括无(禁用)、静态(内部令牌)、JWT、OAuth 代理、OIDC 代理以及用于外部身份提供商的远程 OAuth。

  • 中间件:包含日志记录、计时、速率限制和错误处理,以确保服务器稳健运行。

  • Eunomia 授权:可选的基于策略的授权,支持嵌入式或远程 Eunomia 服务器集成。

  • 资源:提供用于 ArchiveBox 配置的 instance_config

  • 提示词:包含用于 AI 驱动交互的 cli_add_prompt

API

API 调用:

  • 身份验证

  • 核心模型 (快照、归档结果、标签)

  • CLI 命令 (添加、更新、调度、列表、移除)

如果您的 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(用于网络访问)。要启动服务器,请使用以下命令:

在 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 服务器可以使用 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 代理、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