ArchiveBox API
ArchiveBox API - A2A | AG-UI | MCP
版本: 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 调用不受支持,您可以通过添加自定义端点或修改现有的封装库来扩展功能。
MCP
上述所有可用的 API 调用都封装在 MCP 工具中。您可以在下方找到它们及其工具描述和关联标签。
MCP 工具
函数名称 | 描述 | 标签 |
| 为给定的用户名和密码生成 API 令牌。 |
|
| 验证 API 令牌以确保其有效且未过期。 |
|
| 获取快照列表。 |
|
| 通过 abid 或 id 获取特定快照。 |
|
| 列出所有匹配这些过滤器的 ArchiveResult 条目。 |
|
| 通过 id 或 abid 获取特定标签。 |
|
| 通过 abid 获取特定快照、ArchiveResult 或标签。 |
|
| 执行 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' [旧版] (默认: 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.jsonA2A 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]仓库所有者
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